From 1a36bcd826da4136c3898b21503dd9be5cdc2ae0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 13:56:08 +0000 Subject: [PATCH] docs: add cascade delete note to db-schema-spec and improve delete_comment in postgres.py Agent-Logs-Url: https://github.com/genichin/portfolio-hub/sessions/64fc2cec-78f5-41d1-99a4-45f868781edd Co-authored-by: genichin <4282227+genichin@users.noreply.github.com> --- app/repositories/postgres.py | 1 + docs/db-schema-spec.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/app/repositories/postgres.py b/app/repositories/postgres.py index b8e691c..4422097 100644 --- a/app/repositories/postgres.py +++ b/app/repositories/postgres.py @@ -1190,6 +1190,7 @@ class PostgresPortfolioRepository: raise ValueError("포트폴리오를 찾을 수 없습니다") if clear_ledger: cur.execute("DELETE FROM portfolio_ledger WHERE portfolio_id = %s", (portfolio_id,)) + # Comments are always removed with the portfolio (no FK constraint, handled in application layer) cur.execute("DELETE FROM portfolio_comments WHERE portfolio_id = %s", (portfolio_id,)) cur.execute("DELETE FROM portfolios WHERE portfolio_id = %s", (portfolio_id,)) diff --git a/docs/db-schema-spec.md b/docs/db-schema-spec.md index 532fde5..0f1f9ed 100644 --- a/docs/db-schema-spec.md +++ b/docs/db-schema-spec.md @@ -306,6 +306,8 @@ Current baseline intentionally has no DB-level FK constraints. - Logical relations are managed by application/repository logic. - When adding FK constraints in future migrations, update this document and include migration IDs. +- Cascade behavior implemented in application layer: + - Deleting a portfolio also deletes all associated `portfolio_comments` rows (hard delete, no FK constraint). ## 8. Change Management Rule