Preserve ledger venue provenance (#39)

* feat: preserve ledger venue provenance

* fix: satisfy ledger test lint ratchet

* fix: advance image migration inventory
This commit is contained in:
2026-09-19 19:30:32 +09:00
committed by GitHub
parent 567d662913
commit 996127f215
23 changed files with 768 additions and 35 deletions
@@ -0,0 +1,54 @@
"""Add nullable execution and order venue provenance to portfolio ledger.
Revision ID: 20260919_0032
Revises: 20260913_0031
"""
from alembic import op
revision = "20260919_0032"
down_revision = "20260913_0031"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.execute("ALTER TABLE portfolio_ledger ADD COLUMN IF NOT EXISTS execution_venue TEXT")
op.execute("ALTER TABLE portfolio_ledger ADD COLUMN IF NOT EXISTS order_venue TEXT")
op.execute(
"""
DO $$ BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'ck_portfolio_ledger_execution_venue'
AND conrelid = 'portfolio_ledger'::regclass
) THEN
ALTER TABLE portfolio_ledger
ADD CONSTRAINT ck_portfolio_ledger_execution_venue
CHECK (execution_venue IN ('KRX', 'NXT'));
END IF;
END $$
"""
)
op.execute(
"""
DO $$ BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'ck_portfolio_ledger_order_venue'
AND conrelid = 'portfolio_ledger'::regclass
) THEN
ALTER TABLE portfolio_ledger
ADD CONSTRAINT ck_portfolio_ledger_order_venue
CHECK (order_venue IN ('KRX', 'NXT', 'SOR'));
END IF;
END $$
"""
)
def downgrade() -> None:
op.drop_constraint("ck_portfolio_ledger_order_venue", "portfolio_ledger", type_="check")
op.drop_constraint("ck_portfolio_ledger_execution_venue", "portfolio_ledger", type_="check")
op.drop_column("portfolio_ledger", "order_venue")
op.drop_column("portfolio_ledger", "execution_venue")