Skip to content

Commit 44a1720

Browse files
committed
Add database migration for tracking dataset storage operations
1 parent f9c3d71 commit 44a1720

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
"""add storage operation run tables
2+
3+
Revision ID: 6925fe4c8a17
4+
Revises: b8d5e2f9a1c7
5+
Create Date: 2026-04-15 16:04:34.330085
6+
7+
"""
8+
9+
from sqlalchemy import (
10+
Boolean,
11+
Column,
12+
DateTime,
13+
ForeignKey,
14+
Integer,
15+
String,
16+
Text,
17+
UniqueConstraint,
18+
)
19+
20+
from galaxy.model.custom_types import (
21+
JSONType,
22+
UUIDType,
23+
)
24+
from galaxy.model.migrations.util import (
25+
create_table,
26+
drop_table,
27+
)
28+
29+
# revision identifiers, used by Alembic.
30+
revision = "6925fe4c8a17"
31+
down_revision = "b8d5e2f9a1c7"
32+
branch_labels = None
33+
depends_on = None
34+
35+
36+
def upgrade():
37+
create_table(
38+
"dataset_storage_operation_snapshot",
39+
Column("id", Integer, primary_key=True),
40+
Column("history_id", Integer, ForeignKey("history.id", ondelete="CASCADE"), index=True),
41+
Column("user_id", Integer, ForeignKey("galaxy_user.id", ondelete="CASCADE"), index=True, nullable=False),
42+
Column("mode", String(32), index=True, nullable=False),
43+
Column("target_object_store_id", String(255), nullable=False),
44+
Column("resolved_dataset_ids", JSONType, nullable=False),
45+
Column("eligible_dataset_ids", JSONType, nullable=False),
46+
Column("create_time", DateTime, nullable=True),
47+
Column("update_time", DateTime, nullable=True),
48+
Column("expires_at", DateTime, index=True, nullable=False),
49+
)
50+
51+
create_table(
52+
"dataset_storage_operation_run",
53+
Column("id", Integer, primary_key=True),
54+
Column(
55+
"snapshot_id",
56+
Integer,
57+
ForeignKey("dataset_storage_operation_snapshot.id", ondelete="CASCADE"),
58+
index=True,
59+
),
60+
Column("history_id", Integer, ForeignKey("history.id", ondelete="CASCADE"), index=True),
61+
Column("user_id", Integer, ForeignKey("galaxy_user.id", ondelete="CASCADE"), index=True, nullable=False),
62+
Column("mode", String(32), index=True, nullable=False),
63+
Column("target_object_store_id", String(255), nullable=False),
64+
Column("state", String(32), index=True, nullable=False),
65+
Column("skip_ineligible", Boolean, nullable=False, default=True),
66+
Column("task_id", UUIDType(), index=True),
67+
Column("total_count", Integer, nullable=False, default=0),
68+
Column("succeeded_count", Integer, nullable=False, default=0),
69+
Column("failed_count", Integer, nullable=False, default=0),
70+
Column("skipped_count", Integer, nullable=False, default=0),
71+
Column("create_time", DateTime, nullable=True),
72+
Column("update_time", DateTime, nullable=True),
73+
)
74+
75+
create_table(
76+
"dataset_storage_operation_run_item",
77+
Column("id", Integer, primary_key=True),
78+
Column("run_id", Integer, ForeignKey("dataset_storage_operation_run.id", ondelete="CASCADE"), index=True),
79+
Column("dataset_id", Integer, ForeignKey("dataset.id", ondelete="CASCADE"), index=True),
80+
Column("state", String(32), index=True, nullable=False),
81+
Column("reason_code", String(64), nullable=True),
82+
Column("message", Text, nullable=True),
83+
Column("attempt_count", Integer, nullable=False, default=1),
84+
Column("bytes_processed", Integer, nullable=False, default=0),
85+
Column("create_time", DateTime, nullable=True),
86+
Column("update_time", DateTime, nullable=True),
87+
UniqueConstraint("run_id", "dataset_id"),
88+
)
89+
90+
91+
def downgrade():
92+
drop_table("dataset_storage_operation_run_item")
93+
drop_table("dataset_storage_operation_run")
94+
drop_table("dataset_storage_operation_snapshot")

0 commit comments

Comments
 (0)