fix: native Enum-Typen im Alembic-Downgrade entfernen
Ohne diesen Schritt scheitert ein erneutes `alembic upgrade head` nach einem Downgrade daran, dass die Typen noch existieren. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
This commit is contained in:
+3
-1
@@ -15,7 +15,9 @@ die Versionierung folgt [Semantic Versioning](https://semver.org/lang/de/).
|
||||
- Vollständiges Datenmodell als SQLAlchemy-2.0-Modelle: Konten, Kategorien, Firmen,
|
||||
Logo-Assets, Recurrences, Preishistorie, Occurrences, Buchungen, Budgets samt
|
||||
Vorlagen, Sparziele, Rücklagen, Benachrichtigungsregeln und -protokoll, Benutzer.
|
||||
- Alembic-Setup gegen die Async-Engine samt Erstmigration des kompletten Schemas.
|
||||
- Alembic-Setup gegen die Async-Engine samt Erstmigration des kompletten Schemas;
|
||||
der Downgrade entfernt auch die nativen Enum-Typen, sodass Auf- und Abwärtsmigration
|
||||
beliebig oft wiederholbar sind.
|
||||
- Idempotenter Seed für den deutschen Standard-Kategoriebaum (35 Kategorien) und
|
||||
die Standard-Benachrichtigungsregeln.
|
||||
- Endpunkte `GET /api/health` und `GET /api/version`.
|
||||
|
||||
@@ -16,6 +16,20 @@ branch_labels: str | Sequence[str] | None = None
|
||||
depends_on: str | Sequence[str] | None = None
|
||||
|
||||
|
||||
# Alle nativen PostgreSQL-Enum-Typen dieses Schemas.
|
||||
ENUM_TYPES = (
|
||||
"account_type",
|
||||
"business_day_shift",
|
||||
"entry_kind",
|
||||
"logo_source",
|
||||
"logo_status",
|
||||
"notification_channel",
|
||||
"notification_status",
|
||||
"notification_type",
|
||||
"occurrence_status",
|
||||
)
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('account',
|
||||
@@ -288,3 +302,8 @@ def downgrade() -> None:
|
||||
op.drop_index('ix_account_is_active', table_name='account')
|
||||
op.drop_table('account')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
# Alembic entfernt die nativen Enum-Typen nicht automatisch – ohne diesen Schritt
|
||||
# scheitert ein erneutes `upgrade head` an bereits vorhandenen Typen.
|
||||
for enum_name in ENUM_TYPES:
|
||||
sa.Enum(name=enum_name).drop(op.get_bind(), checkfirst=True)
|
||||
|
||||
Reference in New Issue
Block a user