use sea_orm::sea_query::TableCreateStatement;
use sea_orm::{DbBackend, Schema};
fn build_sql(stmt: &TableCreateStatement) -> String {
let db = DbBackend::MySql;
let s = db.build(stmt);
format!("{};\n", s.sql)
}
fn main() {
let schema = Schema::new(DbBackend::MySql);
println!("-- ============================================================");
println!("-- rustpbx MySQL schema dump");
println!("-- Generated by: cargo run --example dump_mysql_schema");
println!("-- ============================================================\n");
println!("-- ---- core models ----\n");
use rustpbx::models;
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::user::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::department::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::extension::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::extension_department::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::sip_trunk::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::presence::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::routing::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::call_record::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::frequency_limit::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::system_notification::Entity))
);
use rustpbx::models::rbac;
print!(
"{}",
build_sql(&schema.create_table_from_entity(rbac::Entity))
); print!(
"{}",
build_sql(&schema.create_table_from_entity(rbac::user_role::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(rbac::role_permission::Entity))
);
println!("\n-- ---- queue ----\n");
use rustpbx::addons::queue;
print!(
"{}",
build_sql(&schema.create_table_from_entity(queue::models::Entity))
);
#[cfg(feature = "addon-wholesale")]
{
println!("\n-- ---- wholesale ----\n");
use rustpbx::addons::wholesale::models;
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::tenant::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::recharge_log::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::tenant_trunk::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::routing_profile::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::routing_profile_item::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::wholesale_cdr::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::rate_deck::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::rate::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::wholesale_trunk_config::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::bill::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::bill_setting::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::global_setting::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::export_task::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::trunk_daily_stats::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::permission::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::sales_tenant_access::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::wholesale_agent::Entity))
);
print!(
"{}",
build_sql(
&schema.create_table_from_entity(models::wholesale_agent::tenant_discount::Entity)
)
);
}
#[cfg(feature = "addon-endpoint-manager")]
{
println!("\n-- ---- endpoint_manager ----\n");
use rustpbx::addons::endpoint_manager;
print!(
"{}",
build_sql(&schema.create_table_from_entity(endpoint_manager::models::Entity))
);
}
#[cfg(feature = "addon-enterprise-auth")]
{
println!("\n-- ---- enterprise_auth ----\n");
use rustpbx::addons::enterprise_auth;
print!(
"{}",
build_sql(&schema.create_table_from_entity(enterprise_auth::settings::Entity))
);
}
#[cfg(feature = "addon-voicemail")]
{
println!("\n-- ---- voicemail ----\n");
use rustpbx::addons::voicemail::models;
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::mailbox::Entity))
);
print!(
"{}",
build_sql(&schema.create_table_from_entity(models::message::Entity))
);
}
#[cfg(feature = "addon-ivr-editor")]
{
println!("\n-- ---- ivr_editor ----\n");
use rustpbx::addons::ivr_editor;
print!(
"{}",
build_sql(&schema.create_table_from_entity(ivr_editor::models::Entity))
);
print!(
"{}",
build_sql(
&schema.create_table_from_entity(ivr_editor::models::version_history::Entity)
)
);
}
println!("\n-- ============================================================");
println!("-- NOTE: indices are NOT included above.");
println!("-- Review migration files under src/models/ and src/addons/*/migration/");
println!("-- for CREATE INDEX / ALTER TABLE statements.");
println!("-- ============================================================");
}