Skip to content

Commit

Permalink
Cascading Delete Tags (#201)
Browse files Browse the repository at this point in the history
* initial commit

* update cascading delete

* address PR comments

* update db
  • Loading branch information
danielk1345 authored Nov 30, 2023
1 parent 8796389 commit 435b9dc
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 4 deletions.
2 changes: 1 addition & 1 deletion backend/app/models/log_record_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class LogRecordTag(db.Model):
log_record_id = db.Column(
db.Integer, db.ForeignKey("log_records.log_id"), nullable=False
)
tag_id = db.Column(db.Integer, db.ForeignKey("tags.tag_id"), nullable=False)
tag_id = db.Column(db.Integer, db.ForeignKey("tags.tag_id", ondelete='CASCADE'), nullable=False)

def to_dict(self, include_relationships=False):
# define the entities table
Expand Down
11 changes: 8 additions & 3 deletions backend/app/services/implementations/tags_service.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from ..interfaces.tags_service import ITagsService
from ...models.tags import Tag
from ...models.log_record_tags import LogRecordTag
from ...models import db


Expand All @@ -26,9 +27,13 @@ def get_tags(self):
raise postgres_error

def delete_tag(self, tag_id):
deleted_tag = Tag.query.filter_by(tag_id=tag_id).update({"status": "Deleted"})
if not deleted_tag:
raise Exception("Tag with id {tag_id} not found".format(tag_id=tag_id))
tags_to_delete = Tag.query.filter_by(tag_id=tag_id).first()
if not tags_to_delete:
raise Exception(
"Log record with id {log_id} not found".format(log_id=log_id)
)
tags_to_delete.log_records = []
db.session.delete(tags_to_delete)
db.session.commit()

def update_tag(self, tag_id, updated_tag):
Expand Down
32 changes: 32 additions & 0 deletions backend/migrations/versions/117790caec65_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""empty message
Revision ID: 117790caec65
Revises: 8b5132609f1f
Create Date: 2023-11-16 01:53:04.353305
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

# revision identifiers, used by Alembic.
revision = '117790caec65'
down_revision = '8b5132609f1f'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('tags', schema=None) as batch_op:
batch_op.drop_column('status')

# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('tags', schema=None) as batch_op:
batch_op.add_column(sa.Column('status', postgresql.ENUM('Deleted', 'Active', name='status'), autoincrement=False, nullable=False))

# ### end Alembic commands ###
Empty file modified scripts/exec-db.sh
100644 → 100755
Empty file.

0 comments on commit 435b9dc

Please sign in to comment.