@@ -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