gabriel / musehub public
0023_coord_reservation_composite_pk.py python
48 lines 1.6 KB
Raw
sha256:f99af7b1a7f36c4d537d1c630d4b71fc39222b1255f82e930929e2fc89015e11 fix: relax browse_repo perf budget to 500ms — 200ms was too… Sonnet 4.6 99 days ago
1 """Fix musehub_coord_reservations: composite PK (reservation_id, symbol_address).
2
3 The original schema used reservation_id alone as PK, which prevented a single
4 reservation from covering multiple symbol addresses — _materialize_reservation
5 would create only the first row and skip all subsequent addresses because
6 session.get(PK) found the first row on loop iteration 2+.
7
8 The correct design: one row per (reservation_id, symbol_address) pair, with a
9 composite PK. This matches the query pattern (conflict_check uses symbol_address
10 IN filter) and enables proper multi-address reservations.
11
12 Revision ID: 0023
13 Revises: 0022
14 """
15 from __future__ import annotations
16
17 from alembic import op
18 import sqlalchemy as sa
19
20 revision = "0023"
21 down_revision = "0022"
22 branch_labels = None
23 depends_on = None
24
25
26 def upgrade() -> None:
27 # Drop the old single-column PK
28 op.drop_constraint("musehub_coord_reservations_pkey", "musehub_coord_reservations", type_="primary")
29
30 # Add composite PK
31 op.create_primary_key(
32 "musehub_coord_reservations_pkey",
33 "musehub_coord_reservations",
34 ["reservation_id", "symbol_address"],
35 )
36
37 # Add index on repo_id for the list_reservations query pattern
38 op.create_index("ix_coord_reservations_repo_id", "musehub_coord_reservations", ["repo_id"])
39
40
41 def downgrade() -> None:
42 op.drop_index("ix_coord_reservations_repo_id", table_name="musehub_coord_reservations")
43 op.drop_constraint("musehub_coord_reservations_pkey", "musehub_coord_reservations", type_="primary")
44 op.create_primary_key(
45 "musehub_coord_reservations_pkey",
46 "musehub_coord_reservations",
47 ["reservation_id"],
48 )
File History 2 commits
sha256:f99af7b1a7f36c4d537d1c630d4b71fc39222b1255f82e930929e2fc89015e11 fix: relax browse_repo perf budget to 500ms — 200ms was too… Sonnet 4.6 99 days ago
sha256:763eb2cb8675073b84c19345b27586d2ed939a9aee97c5479b69f502f1a70eff fix(tests): update test suite to match current implementation Sonnet 4.6 patch 121 days ago