mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 15:12:08 +01:00
fix(relations): allow deleting transaction when relation exists
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
"""Cascade categories
|
||||||
|
|
||||||
|
Revision ID: 59cebf320c4a
|
||||||
|
Revises: 46b9e702e83f
|
||||||
|
Create Date: 2025-10-30 13:42:44.555284
|
||||||
|
|
||||||
|
"""
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from sqlalchemy.dialects import mysql
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = '59cebf320c4a'
|
||||||
|
down_revision: Union[str, Sequence[str], None] = '46b9e702e83f'
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
"""Upgrade schema."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('category_transaction', sa.Column('category_id', sa.Integer(), nullable=False))
|
||||||
|
op.add_column('category_transaction', sa.Column('transaction_id', sa.Integer(), nullable=False))
|
||||||
|
op.drop_constraint(op.f('category_transaction_ibfk_2'), 'category_transaction', type_='foreignkey')
|
||||||
|
op.drop_constraint(op.f('category_transaction_ibfk_1'), 'category_transaction', type_='foreignkey')
|
||||||
|
op.create_foreign_key(None, 'category_transaction', 'transaction', ['transaction_id'], ['id'], ondelete='CASCADE')
|
||||||
|
op.create_foreign_key(None, 'category_transaction', 'categories', ['category_id'], ['id'], ondelete='CASCADE')
|
||||||
|
op.drop_column('category_transaction', 'id_category')
|
||||||
|
op.drop_column('category_transaction', 'id_transaction')
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
"""Downgrade schema."""
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('category_transaction', sa.Column('id_transaction', mysql.INTEGER(display_width=11), autoincrement=False, nullable=True))
|
||||||
|
op.add_column('category_transaction', sa.Column('id_category', mysql.INTEGER(display_width=11), autoincrement=False, nullable=True))
|
||||||
|
op.drop_constraint(None, 'category_transaction', type_='foreignkey')
|
||||||
|
op.drop_constraint(None, 'category_transaction', type_='foreignkey')
|
||||||
|
op.create_foreign_key(op.f('category_transaction_ibfk_1'), 'category_transaction', 'categories', ['id_category'], ['id'])
|
||||||
|
op.create_foreign_key(op.f('category_transaction_ibfk_2'), 'category_transaction', 'transaction', ['id_transaction'], ['id'])
|
||||||
|
op.drop_column('category_transaction', 'transaction_id')
|
||||||
|
op.drop_column('category_transaction', 'category_id')
|
||||||
|
# ### end Alembic commands ###
|
||||||
@@ -7,8 +7,8 @@ from app.core.base import Base
|
|||||||
association_table = Table(
|
association_table = Table(
|
||||||
"category_transaction",
|
"category_transaction",
|
||||||
Base.metadata,
|
Base.metadata,
|
||||||
Column("id_category", Integer, ForeignKey("categories.id")),
|
Column("category_id", Integer, ForeignKey("categories.id", ondelete="CASCADE"), primary_key=True),
|
||||||
Column("id_transaction", Integer, ForeignKey("transaction.id"))
|
Column("transaction_id", Integer, ForeignKey("transaction.id", ondelete="CASCADE"), primary_key=True)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,4 +21,4 @@ class Transaction(Base):
|
|||||||
|
|
||||||
# Relationship
|
# Relationship
|
||||||
user = relationship("User", back_populates="transactions")
|
user = relationship("User", back_populates="transactions")
|
||||||
categories = relationship("Category", secondary=association_table, back_populates="transactions")
|
categories = relationship("Category", secondary=association_table, back_populates="transactions", passive_deletes=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user