@@ -678,8 +678,40 @@ fn main() -> Result<()> {
678678
679679async fn dump_ddl ( database_url : & str ) -> anyhow:: Result < ( ) > {
680680 use sea_orm:: { ConnectionTrait , Statement } ;
681+ use sea_orm_migration:: MigratorTrait ;
681682
682683 let db = rustpbx:: models:: create_db ( database_url) . await ?;
684+
685+ // ── Run addon migrations so all tables are created ──────────────
686+ #[ cfg( feature = "addon-cc" ) ]
687+ if let Err ( e) = rustpbx:: addons:: cc:: migration:: Migrator :: up ( & db, None ) . await {
688+ eprintln ! ( "[dump_ddl] CC migration warning: {e}" ) ;
689+ }
690+ #[ cfg( feature = "addon-wholesale" ) ]
691+ if let Err ( e) = rustpbx:: addons:: wholesale:: migration:: Migrator :: up ( & db, None ) . await {
692+ eprintln ! ( "[dump_ddl] wholesale migration warning: {e}" ) ;
693+ }
694+ #[ cfg( feature = "addon-endpoint-manager" ) ]
695+ if let Err ( e) =
696+ rustpbx:: addons:: endpoint_manager:: migration:: Migrator :: up ( & db, None ) . await
697+ {
698+ eprintln ! ( "[dump_ddl] endpoint_manager migration warning: {e}" ) ;
699+ }
700+ #[ cfg( feature = "addon-enterprise-auth" ) ]
701+ if let Err ( e) =
702+ rustpbx:: addons:: enterprise_auth:: migration:: Migrator :: up ( & db, None ) . await
703+ {
704+ eprintln ! ( "[dump_ddl] enterprise_auth migration warning: {e}" ) ;
705+ }
706+ #[ cfg( feature = "addon-ivr-editor" ) ]
707+ if let Err ( e) = rustpbx:: addons:: ivr_editor:: migration:: Migrator :: up ( & db, None ) . await {
708+ eprintln ! ( "[dump_ddl] ivr_editor migration warning: {e}" ) ;
709+ }
710+ #[ cfg( feature = "addon-voicemail" ) ]
711+ if let Err ( e) = rustpbx:: addons:: voicemail:: migration:: Migrator :: up ( & db, None ) . await {
712+ eprintln ! ( "[dump_ddl] voicemail migration warning: {e}" ) ;
713+ }
714+
683715 let backend = db. get_database_backend ( ) ;
684716
685717 let show_tables_sql = match backend {
0 commit comments