fs-lawrisk/tools/v_list_risks.py

48 lines
1.5 KiB
Python
Raw Normal View History

from lawrisk.utils.env_loader import load_env
load_env()
import os
import pg8000.dbapi as pg
def get_conn():
host = os.getenv("LIC_PG_HOST", "172.24.240.1")
port = int(os.getenv("LIC_PG_PORT", os.getenv("PG_PORT", "5432")))
user = os.getenv("LIC_PG_USER", os.getenv("PG_USER", "postgres"))
password = os.getenv("LIC_PG_PASSWORD", "")
database = os.getenv("LIC_PG_DATABASE", "licensing_risks")
return pg.connect(host=host, port=port, user=user, password=password, database=database)
def list_risks_for_one_permit():
conn = get_conn()
cur = conn.cursor()
# Let's pick a permit that HAS risks
cur.execute("""
SELECT p.name, p.id, COUNT(rpr.risk_id)
FROM permits p
JOIN region_permit_risks rpr ON rpr.permit_id = p.id
GROUP BY p.name, p.id
ORDER BY COUNT(rpr.risk_id) DESC
LIMIT 5
""")
top_permits = cur.fetchall()
for p_name, p_id, count in top_permits:
print(f"\n=== Permit: {p_name} ({p_id}) | Total Risks: {count} ===")
cur.execute("""
SELECT rpr.serial_number, rk.risk_content, rk.id
FROM region_permit_risks rpr
JOIN risks rk ON rk.id = rpr.risk_id
WHERE rpr.permit_id = %s
ORDER BY rpr.serial_number, rk.risk_content
""", (p_id,))
risks = cur.fetchall()
for r in risks:
sn, content, rid = r
print(f" [{sn}] {rid} | {repr(content[:100])}")
conn.close()
if __name__ == "__main__":
list_risks_for_one_permit()