@@ -154,7 +154,10 @@ mod tests {
154154 index: None ,
155155 foreign_key: None ,
156156 } ] ,
157- constraints : vec ! [ ] ,
157+ constraints : vec ! [ TableConstraint :: PrimaryKey {
158+ auto_increment: false ,
159+ columns: vec![ "id" . into( ) ] ,
160+ } ] ,
158161 indexes : vec ! [ ] ,
159162 } ;
160163 let path = models_dir. join ( format ! ( "{name}.json" ) ) ;
@@ -405,4 +408,60 @@ mod tests {
405408 let result = emit_sql ( & plan, DatabaseBackend :: Postgres , & [ ] ) ;
406409 assert ! ( result. is_ok( ) ) ;
407410 }
411+
412+ #[ test]
413+ #[ serial]
414+ fn emit_sql_multiple_queries_per_action ( ) {
415+ // Test case where a single action generates multiple queries (e.g., SQLite constraint addition)
416+ // This should trigger the queries.len() > 1 branch (line 89)
417+ let tmp = tempdir ( ) . unwrap ( ) ;
418+ let _guard = CwdGuard :: new ( & tmp. path ( ) . to_path_buf ( ) ) ;
419+ let _cfg = write_config ( ) ;
420+ write_model ( "users" ) ;
421+
422+ // Create a migration that adds a NOT NULL column in SQLite, which generates multiple queries
423+ let plan = MigrationPlan {
424+ comment : None ,
425+ created_at : None ,
426+ version : 1 ,
427+ actions : vec ! [ MigrationAction :: AddColumn {
428+ table: "users" . into( ) ,
429+ column: ColumnDef {
430+ name: "nickname" . into( ) ,
431+ r#type: ColumnType :: Simple ( SimpleColumnType :: Text ) ,
432+ nullable: false ,
433+ default : None ,
434+ comment: None ,
435+ primary_key: None ,
436+ unique: None ,
437+ index: None ,
438+ foreign_key: None ,
439+ } ,
440+ fill_with: Some ( "default" . into( ) ) ,
441+ } ] ,
442+ } ;
443+
444+ let current_schema = vec ! [ TableDef {
445+ name: "users" . into( ) ,
446+ columns: vec![ ColumnDef {
447+ name: "id" . into( ) ,
448+ r#type: ColumnType :: Simple ( SimpleColumnType :: Integer ) ,
449+ nullable: false ,
450+ default : None ,
451+ comment: None ,
452+ primary_key: None ,
453+ unique: None ,
454+ index: None ,
455+ foreign_key: None ,
456+ } ] ,
457+ constraints: vec![ TableConstraint :: PrimaryKey {
458+ auto_increment: false ,
459+ columns: vec![ "id" . into( ) ] ,
460+ } ] ,
461+ indexes: vec![ ] ,
462+ } ] ;
463+
464+ let result = emit_sql ( & plan, DatabaseBackend :: Sqlite , & current_schema) ;
465+ assert ! ( result. is_ok( ) ) ;
466+ }
408467}
0 commit comments