From 64ccb485b519884c6538cdb504ed073a48f5c68a Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Wed, 26 Feb 2025 13:29:42 +0000 Subject: [PATCH] Fix playdates cascade deletes --- app/dbtables.py | 6 ++- .../ab475332d873_fix_playdates_cascades.py | 46 +++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 migrations/versions/ab475332d873_fix_playdates_cascades.py diff --git a/app/dbtables.py b/app/dbtables.py index 6d4919b..14116e0 100644 --- a/app/dbtables.py +++ b/app/dbtables.py @@ -48,7 +48,7 @@ class PlaydatesTable(Model): id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) lastplayed: Mapped[dt.datetime] = mapped_column(index=True) - track_id: Mapped[int] = mapped_column(ForeignKey("tracks.id")) + track_id: Mapped[int] = mapped_column(ForeignKey("tracks.id", ondelete="CASCADE")) track: Mapped["TracksTable"] = relationship( "TracksTable", back_populates="playdates", @@ -104,7 +104,9 @@ class PlaylistRowsTable(Model): ) playlist: Mapped[PlaylistsTable] = relationship(back_populates="rows") - track_id: Mapped[Optional[int]] = mapped_column(ForeignKey("tracks.id", ondelete="CASCADE")) + track_id: Mapped[Optional[int]] = mapped_column( + ForeignKey("tracks.id", ondelete="CASCADE") + ) track: Mapped["TracksTable"] = relationship( "TracksTable", back_populates="playlistrows", diff --git a/migrations/versions/ab475332d873_fix_playdates_cascades.py b/migrations/versions/ab475332d873_fix_playdates_cascades.py new file mode 100644 index 0000000..5e5cec8 --- /dev/null +++ b/migrations/versions/ab475332d873_fix_playdates_cascades.py @@ -0,0 +1,46 @@ +"""fix playlist cascades + +Revision ID: ab475332d873 +Revises: 04df697e40cd +Create Date: 2025-02-26 13:11:15.417278 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'ab475332d873' +down_revision = '04df697e40cd' +branch_labels = None +depends_on = None + + +def upgrade(engine_name: str) -> None: + globals()["upgrade_%s" % engine_name]() + + +def downgrade(engine_name: str) -> None: + globals()["downgrade_%s" % engine_name]() + + + + + +def upgrade_() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('playdates', schema=None) as batch_op: + batch_op.drop_constraint('fk_playdates_track_id_tracks', type_='foreignkey') + batch_op.create_foreign_key(None, 'tracks', ['track_id'], ['id'], ondelete='CASCADE') + + # ### end Alembic commands ### + + +def downgrade_() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('playdates', schema=None) as batch_op: + batch_op.drop_constraint(None, type_='foreignkey') + batch_op.create_foreign_key('fk_playdates_track_id_tracks', 'tracks', ['track_id'], ['id']) + + # ### end Alembic commands ### +