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,
|
- Vollständiges Datenmodell als SQLAlchemy-2.0-Modelle: Konten, Kategorien, Firmen,
|
||||||
Logo-Assets, Recurrences, Preishistorie, Occurrences, Buchungen, Budgets samt
|
Logo-Assets, Recurrences, Preishistorie, Occurrences, Buchungen, Budgets samt
|
||||||
Vorlagen, Sparziele, Rücklagen, Benachrichtigungsregeln und -protokoll, Benutzer.
|
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
|
- Idempotenter Seed für den deutschen Standard-Kategoriebaum (35 Kategorien) und
|
||||||
die Standard-Benachrichtigungsregeln.
|
die Standard-Benachrichtigungsregeln.
|
||||||
- Endpunkte `GET /api/health` und `GET /api/version`.
|
- 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
|
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:
|
def upgrade() -> None:
|
||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
op.create_table('account',
|
op.create_table('account',
|
||||||
@@ -288,3 +302,8 @@ def downgrade() -> None:
|
|||||||
op.drop_index('ix_account_is_active', table_name='account')
|
op.drop_index('ix_account_is_active', table_name='account')
|
||||||
op.drop_table('account')
|
op.drop_table('account')
|
||||||
# ### end Alembic commands ###
|
# ### 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