Skip to content

Commit 1094210

Browse files
committed
fix broken sqlite migration
Signed-off-by: phernandez <paul@basicmachines.co>
1 parent 391feb6 commit 1094210

1 file changed

Lines changed: 57 additions & 24 deletions

File tree

src/basic_memory/alembic/versions/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py

Lines changed: 57 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,25 @@ def upgrade() -> None:
5959
""")
6060

6161
# Step 3: Make project_id NOT NULL and add foreign key
62-
op.alter_column("relation", "project_id", nullable=False)
63-
op.create_foreign_key(
64-
"fk_relation_project_id",
65-
"relation",
66-
"project",
67-
["project_id"],
68-
["id"],
69-
)
62+
if dialect == "postgresql":
63+
op.alter_column("relation", "project_id", nullable=False)
64+
op.create_foreign_key(
65+
"fk_relation_project_id",
66+
"relation",
67+
"project",
68+
["project_id"],
69+
["id"],
70+
)
71+
else:
72+
# SQLite requires batch operations for ALTER COLUMN
73+
with op.batch_alter_table("relation") as batch_op:
74+
batch_op.alter_column("project_id", nullable=False)
75+
batch_op.create_foreign_key(
76+
"fk_relation_project_id",
77+
"project",
78+
["project_id"],
79+
["id"],
80+
)
7081

7182
# Step 4: Create index on relation.project_id
7283
op.create_index("ix_relation_project_id", "relation", ["project_id"])
@@ -98,14 +109,25 @@ def upgrade() -> None:
98109
""")
99110

100111
# Step 3: Make project_id NOT NULL and add foreign key
101-
op.alter_column("observation", "project_id", nullable=False)
102-
op.create_foreign_key(
103-
"fk_observation_project_id",
104-
"observation",
105-
"project",
106-
["project_id"],
107-
["id"],
108-
)
112+
if dialect == "postgresql":
113+
op.alter_column("observation", "project_id", nullable=False)
114+
op.create_foreign_key(
115+
"fk_observation_project_id",
116+
"observation",
117+
"project",
118+
["project_id"],
119+
["id"],
120+
)
121+
else:
122+
# SQLite requires batch operations for ALTER COLUMN
123+
with op.batch_alter_table("observation") as batch_op:
124+
batch_op.alter_column("project_id", nullable=False)
125+
batch_op.create_foreign_key(
126+
"fk_observation_project_id",
127+
"project",
128+
["project_id"],
129+
["id"],
130+
)
109131

110132
# Step 4: Create index on observation.project_id
111133
op.create_index("ix_observation_project_id", "observation", ["project_id"])
@@ -155,12 +177,23 @@ def downgrade() -> None:
155177
op.execute("DROP INDEX IF EXISTS idx_entity_title_trgm")
156178
# Note: We don't drop the pg_trgm extension as other code may depend on it
157179

158-
# Drop project_id from observation
159-
op.drop_index("ix_observation_project_id", table_name="observation")
160-
op.drop_constraint("fk_observation_project_id", "observation", type_="foreignkey")
161-
op.drop_column("observation", "project_id")
180+
# Drop project_id from observation
181+
op.drop_index("ix_observation_project_id", table_name="observation")
182+
op.drop_constraint("fk_observation_project_id", "observation", type_="foreignkey")
183+
op.drop_column("observation", "project_id")
162184

163-
# Drop project_id from relation
164-
op.drop_index("ix_relation_project_id", table_name="relation")
165-
op.drop_constraint("fk_relation_project_id", "relation", type_="foreignkey")
166-
op.drop_column("relation", "project_id")
185+
# Drop project_id from relation
186+
op.drop_index("ix_relation_project_id", table_name="relation")
187+
op.drop_constraint("fk_relation_project_id", "relation", type_="foreignkey")
188+
op.drop_column("relation", "project_id")
189+
else:
190+
# SQLite requires batch operations
191+
op.drop_index("ix_observation_project_id", table_name="observation")
192+
with op.batch_alter_table("observation") as batch_op:
193+
batch_op.drop_constraint("fk_observation_project_id", type_="foreignkey")
194+
batch_op.drop_column("project_id")
195+
196+
op.drop_index("ix_relation_project_id", table_name="relation")
197+
with op.batch_alter_table("relation") as batch_op:
198+
batch_op.drop_constraint("fk_relation_project_id", type_="foreignkey")
199+
batch_op.drop_column("project_id")

0 commit comments

Comments
 (0)