# Изменено: 2026-03-14 # Функция event-writer: принимает HTTP POST, пишет одну строку в таблицу events. # Таблица создаётся автоматически при первом запуске. # Env: POSTGRES_DSN — строка подключения к PostgreSQL. import os import json import psycopg2 from datetime import datetime, timezone def handle(request): """Записывает одно событие в таблицу events.""" dsn = os.environ["POSTGRES_DSN"] body = {} if request.get_data(): try: body = json.loads(request.get_data()) except Exception: pass source = body.get("source", "node-red") message = body.get("message", "ping") conn = psycopg2.connect(dsn) try: with conn.cursor() as cur: # Создаём таблицу если нет — безопасно вызывать при каждом запросе cur.execute(""" CREATE TABLE IF NOT EXISTS events ( id SERIAL PRIMARY KEY, source VARCHAR(100) NOT NULL DEFAULT 'unknown', message TEXT NOT NULL DEFAULT '', created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ) """) cur.execute( "INSERT INTO events (source, message) VALUES (%s, %s) RETURNING id, created_at", (source, message) ) row = cur.fetchone() conn.commit() return json.dumps({ "ok": True, "id": row[0], "created_at": row[1].isoformat() }), 200, {"Content-Type": "application/json"} finally: conn.close()