- invoke.go: forward sub-path and query string to function pods - server.js v0.1.2: add _path, _query, _method to event - server.py v0.1.1: add _path, _query, _method to event - upload.go: bump runtime versions (nodejs20:v0.1.2, python3.11:v0.1.1) - examples/notes-python: CRUD notes via sub-path routing - sql-runner: generic SQL executor for DDL jobs - notes: CRUD router (/add, /update, /delete) - notes-list: SELECT all notes - init.tf: create TABLE + INDEX on apply
27 lines
857 B
Python
27 lines
857 B
Python
# 2026-03-09
|
|
# handler.py — универсальный исполнитель SQL запросов.
|
|
# Принимает event.statements — массив SQL строк, выполняет последовательно.
|
|
# Используется sless_job для DDL операций (CREATE TABLE, миграции и т.д.)
|
|
import os
|
|
import psycopg2
|
|
|
|
|
|
def handle(event):
|
|
dsn = os.environ['PG_DSN']
|
|
statements = event.get('statements', [])
|
|
if not statements:
|
|
return {'error': 'no statements provided'}
|
|
|
|
conn = psycopg2.connect(dsn)
|
|
try:
|
|
cur = conn.cursor()
|
|
for sql in statements:
|
|
cur.execute(sql)
|
|
conn.commit()
|
|
return {'ok': True, 'executed': len(statements)}
|
|
except Exception as e:
|
|
conn.rollback()
|
|
return {'error': str(e)}
|
|
finally:
|
|
conn.close()
|