Skip to content

Commit 514bab8

Browse files
jmchiltonclaude
andcommitted
Add history_notebook tables migration.
Merge migration adding history_notebook and history_notebook_revision tables. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 808e1ee commit 514bab8

1 file changed

Lines changed: 80 additions & 0 deletions

File tree

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
"""add history_notebook tables
2+
3+
Revision ID: b75f0f4dbcd4
4+
Revises: 1d1d7bf6ac02, 23143e0bf1d8
5+
Create Date: 2025-01-06
6+
7+
"""
8+
9+
import sqlalchemy as sa
10+
11+
from galaxy.model.custom_types import TrimmedString
12+
from galaxy.model.migrations.util import (
13+
create_foreign_key,
14+
create_table,
15+
drop_table,
16+
transaction,
17+
)
18+
19+
# revision identifiers, used by Alembic.
20+
revision = "b75f0f4dbcd4"
21+
down_revision = ("1d1d7bf6ac02", "23143e0bf1d8")
22+
branch_labels = None
23+
depends_on = None
24+
25+
NOTEBOOK_TABLE = "history_notebook"
26+
REVISION_TABLE = "history_notebook_revision"
27+
28+
29+
def upgrade():
30+
with transaction():
31+
# Create notebook table first (without latest_revision_id FK)
32+
create_table(
33+
NOTEBOOK_TABLE,
34+
sa.Column("id", sa.Integer, primary_key=True),
35+
sa.Column("create_time", sa.DateTime),
36+
sa.Column("update_time", sa.DateTime),
37+
sa.Column(
38+
"history_id",
39+
sa.Integer,
40+
sa.ForeignKey("history.id"),
41+
nullable=False,
42+
index=True,
43+
), # No unique - multiple notebooks per history
44+
sa.Column("title", sa.Text),
45+
sa.Column("latest_revision_id", sa.Integer, index=True),
46+
sa.Column("deleted", sa.Boolean, default=False, index=True),
47+
sa.Column("purged", sa.Boolean, default=False, index=True),
48+
)
49+
50+
# Create revision table with FK to notebook
51+
create_table(
52+
REVISION_TABLE,
53+
sa.Column("id", sa.Integer, primary_key=True),
54+
sa.Column("create_time", sa.DateTime),
55+
sa.Column("update_time", sa.DateTime),
56+
sa.Column(
57+
"notebook_id",
58+
sa.Integer,
59+
sa.ForeignKey("history_notebook.id"),
60+
index=True,
61+
),
62+
sa.Column("content", sa.Text),
63+
sa.Column("content_format", TrimmedString(32)),
64+
sa.Column("edit_source", TrimmedString(16), default="user"),
65+
)
66+
67+
# Add FK from notebook.latest_revision_id -> revision.id
68+
create_foreign_key(
69+
"history_notebook_latest_revision_id_fk",
70+
NOTEBOOK_TABLE,
71+
REVISION_TABLE,
72+
["latest_revision_id"],
73+
["id"],
74+
)
75+
76+
77+
def downgrade():
78+
with transaction():
79+
drop_table(REVISION_TABLE)
80+
drop_table(NOTEBOOK_TABLE)

0 commit comments

Comments
 (0)