gabriel / musehub public
0059_pack_index.py python
47 lines 1.3 KB
Raw
sha256:969ddc5e88776e70af33c016b8777bb721356508ae5f304b3fb46c451494ece7 test(mwp3): Phase 4 — fix adjacent suite regressions, lock … Sonnet 4.6 23 days ago
1 """Add musehub_pack_index — maps every pushed object to its mpack in MinIO.
2
3 Issue #63 Phase 1: mpack index for O(1) mpack lookup during clone/fetch.
4 Primary key (object_id, mpack_id) — one object may appear in multiple mpacks.
5 Index on (repo_id, object_id) for per-repo lookups.
6 """
7
8 from __future__ import annotations
9
10 import sqlalchemy as sa
11 from alembic import op
12
13 revision = "0059"
14 down_revision = "0058"
15 branch_labels = None
16 depends_on = None
17
18
19 def upgrade() -> None:
20 op.create_table(
21 "musehub_pack_index",
22 sa.Column("object_id", sa.String(128), nullable=False),
23 sa.Column("pack_id", sa.String(128), nullable=False),
24 sa.Column(
25 "repo_id",
26 sa.String(128),
27 sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"),
28 nullable=False,
29 ),
30 sa.Column(
31 "created_at",
32 sa.DateTime(timezone=True),
33 nullable=False,
34 server_default=sa.text("now()"),
35 ),
36 sa.PrimaryKeyConstraint("object_id", "pack_id"),
37 )
38 op.create_index(
39 "ix_musehub_pack_index_repo_object",
40 "musehub_pack_index",
41 ["repo_id", "object_id"],
42 )
43
44
45 def downgrade() -> None:
46 op.drop_index("ix_musehub_pack_index_repo_object", table_name="musehub_pack_index")
47 op.drop_table("musehub_pack_index")
File History 2 commits
sha256:969ddc5e88776e70af33c016b8777bb721356508ae5f304b3fb46c451494ece7 test(mwp3): Phase 4 — fix adjacent suite regressions, lock … Sonnet 4.6 23 days ago
sha256:1749b9cc5cd2583c56d3261c4c00a342c27435f3946d4bc3e70f76aa2795458a docs(mwp-3): TDD implementation plan for job-enqueue idempo… Opus 4.8 23 days ago