fix: qualify corporate-action ledger reads (#36)
This commit is contained in:
@@ -1970,13 +1970,13 @@ class PostgresPortfolioRepository:
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT
|
||||
ledger_entry_id, portfolio_id, order_id, execution_id, side,
|
||||
quantity::float8, price::float8,
|
||||
fee_amount::float8, tax_amount::float8,
|
||||
executed_at, recorded_at,
|
||||
cash_balance_after::float8, asset_quantity_after::float8,
|
||||
total_value_after::float8, profit_buffer_after::float8,
|
||||
strategy_set_id, note, source,
|
||||
ledger.ledger_entry_id, ledger.portfolio_id, ledger.order_id, ledger.execution_id, ledger.side,
|
||||
ledger.quantity::float8, ledger.price::float8,
|
||||
ledger.fee_amount::float8, ledger.tax_amount::float8,
|
||||
ledger.executed_at, ledger.recorded_at,
|
||||
ledger.cash_balance_after::float8, ledger.asset_quantity_after::float8,
|
||||
ledger.total_value_after::float8, ledger.profit_buffer_after::float8,
|
||||
ledger.strategy_set_id, ledger.note, ledger.source,
|
||||
ca.corporate_action_id, ca.action_type, ca.effective_date,
|
||||
ca.quantity_before, ca.quantity_after, ca.average_price_before,
|
||||
ca.average_price_after, ca.total_cost_basis, ca.cash_balance,
|
||||
@@ -2643,30 +2643,32 @@ class PostgresPortfolioRepository:
|
||||
limit: int = 50,
|
||||
) -> list[LedgerEntry]:
|
||||
self.ensure_schema()
|
||||
clauses = ["portfolio_id = %s"]
|
||||
clauses = ["ledger.portfolio_id = %s"]
|
||||
params: list[Any] = [portfolio_id]
|
||||
if source is not None:
|
||||
clauses.append("source = %s")
|
||||
clauses.append("ledger.source = %s")
|
||||
params.append(source)
|
||||
if before_recorded_at is not None and before_ledger_entry_id is not None:
|
||||
clauses.append("(recorded_at, ledger_entry_id) < (%s, %s)")
|
||||
clauses.append("(ledger.recorded_at, ledger.ledger_entry_id) < (%s, %s)")
|
||||
params.extend([before_recorded_at, before_ledger_entry_id])
|
||||
params.append(int(limit))
|
||||
with self._connect().cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT ledger_entry_id, portfolio_id, order_id, execution_id, side, quantity, price,
|
||||
fee_amount, tax_amount, executed_at, recorded_at, cash_balance_after,
|
||||
asset_quantity_after, total_value_after, profit_buffer_after, strategy_set_id,
|
||||
note, source, target_ledger_entry_id, confirmation_evidence, actor_user_id,
|
||||
SELECT ledger.ledger_entry_id, ledger.portfolio_id, ledger.order_id, ledger.execution_id, ledger.side,
|
||||
ledger.quantity, ledger.price, ledger.fee_amount, ledger.tax_amount,
|
||||
ledger.executed_at, ledger.recorded_at, ledger.cash_balance_after,
|
||||
ledger.asset_quantity_after, ledger.total_value_after, ledger.profit_buffer_after,
|
||||
ledger.strategy_set_id, ledger.note, ledger.source, ledger.target_ledger_entry_id,
|
||||
ledger.confirmation_evidence, ledger.actor_user_id,
|
||||
ca.corporate_action_id, ca.action_type, ca.effective_date,
|
||||
ca.quantity_before, ca.quantity_after, ca.average_price_before,
|
||||
ca.average_price_after, ca.total_cost_basis, ca.cash_balance,
|
||||
ca.profit_buffer, ca.evidence_ref, ca.actor_user_id
|
||||
FROM portfolio_ledger
|
||||
LEFT JOIN portfolio_corporate_actions ca ON ca.ledger_entry_id = portfolio_ledger.ledger_entry_id
|
||||
FROM portfolio_ledger AS ledger
|
||||
LEFT JOIN portfolio_corporate_actions AS ca ON ca.ledger_entry_id = ledger.ledger_entry_id
|
||||
WHERE """ + " AND ".join(clauses) + """
|
||||
ORDER BY recorded_at DESC, ledger_entry_id DESC
|
||||
ORDER BY ledger.recorded_at DESC, ledger.ledger_entry_id DESC
|
||||
LIMIT %s
|
||||
""",
|
||||
params,
|
||||
|
||||
Reference in New Issue
Block a user