diff --git a/DEVLOG.md b/DEVLOG.md index 27cf664..7d1145a 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -1107,3 +1107,15 @@ Keine Commits in dieser Session. - backend/tests/test_roles.py | 28 +++++++ --- +## 2026-09-03 22:55 – 23:04 (9m) +**Beschreibung:** Claude Code Session +**Projekt:** asb-material + +### Commits +- b5c46cf Installer-Bugfix: sudo-Abhängigkeit entfernt, SQL-Ausführung über stdin statt su-Argument +- 446e4f9 Deployment-Setup (PostgreSQL+nginx-Installer) + Sprint-0-Fixes aus Subagenten-Reviews + +### Geänderte Dateien +- deploy/install_server.sh | 21 +++++++++++++++------ + +--- diff --git a/backend/alembic/versions/0001_initial_schema.py b/backend/alembic/versions/0001_initial_schema.py index b4b65ec..4ac89bb 100644 --- a/backend/alembic/versions/0001_initial_schema.py +++ b/backend/alembic/versions/0001_initial_schema.py @@ -283,9 +283,21 @@ DROP TYPE IF EXISTS materialtyp; """ +def _execute_statements(sql: str) -> None: + # asyncpg lässt keine Mehrfach-Statements in einem prepared statement zu + # (Fund beim ersten realen `alembic upgrade head` gegen asyncpg) – jedes + # ";"-getrennte Statement einzeln ausführen. Kein Statement in diesem + # Schema enthält ein Semikolon innerhalb eines String-/Kommentarwerts, + # daher ist ein simpler Split sicher. + for statement in sql.split(";"): + statement = statement.strip() + if statement: + op.execute(statement) + + def upgrade() -> None: - op.execute(UPGRADE_SQL) + _execute_statements(UPGRADE_SQL) def downgrade() -> None: - op.execute(DOWNGRADE_SQL) + _execute_statements(DOWNGRADE_SQL)