# 2026-03-21 — pg-counter: считает строки по prefix, возвращает статистику. # Тестирует: SELECT COUNT с WHERE LIKE, агрегация, concurrent reads. import os, psycopg2 def count(event): prefix = event.get("prefix", "") conn = psycopg2.connect( host=os.environ["PGHOST"], port=int(os.environ.get("PGPORT", 5432)), dbname=os.environ["PGDATABASE"], user=os.environ["PGUSER"], password=os.environ["PGPASSWORD"], sslmode=os.environ.get("PGSSLMODE", "require"), ) try: with conn.cursor() as cur: if prefix: cur.execute("SELECT COUNT(*) FROM terraform_demo_table WHERE title LIKE %s", (f"{prefix}%",)) else: cur.execute("SELECT COUNT(*) FROM terraform_demo_table") total = cur.fetchone()[0] cur.execute("SELECT COUNT(*) FROM terraform_demo_table WHERE created_at > now() - interval '1 hour'") last_hour = cur.fetchone()[0] return {"total": total, "last_hour": last_hour, "prefix": prefix or "*"} finally: conn.close()