# 2026-03-11 # catalog.py — читает список продуктов из PostgreSQL. # Таблица demo_products создаётся автоматически при первом вызове. # Точка входа: list_products(event) import json import os import psycopg2 def list_products(event): dsn = os.environ["PG_DSN"] conn = psycopg2.connect(dsn) try: with conn.cursor() as cur: _ensure_table(cur) conn.commit() cur.execute("SELECT id, name, price FROM demo_products ORDER BY id") rows = cur.fetchall() finally: conn.close() products = [{"id": row[0], "name": row[1], "price": float(row[2])} for row in rows] return {"products": products, "count": len(products)} def _ensure_table(cur): # Создаём таблицу и наполняем демо-данными — только один раз cur.execute(""" CREATE TABLE IF NOT EXISTS demo_products ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, price NUMERIC(10,2) NOT NULL ) """) cur.execute("SELECT COUNT(*) FROM demo_products") if cur.fetchone()[0] == 0: cur.executemany( "INSERT INTO demo_products (name, price) VALUES (%s, %s)", [ ("Ноутбук", 89999.00), ("Мышь", 1299.00), ("Клавиатура", 3499.00), ("Монитор", 32000.00), ], )