dbx/src-tauri/src/commands/schema_diff.rs

35 lines
1.4 KiB
Rust

#[tauri::command]
pub fn prepare_schema_diff(
options: dbx_core::schema_diff::SchemaDiffPreparationOptions,
) -> Result<dbx_core::schema_diff::SchemaDiffPreparation, String> {
Ok(dbx_core::schema_diff::prepare_schema_diff(options))
}
#[tauri::command]
#[allow(clippy::too_many_arguments)]
pub fn generate_schema_sync_sql(
diffs: Vec<dbx_core::schema_diff::TableDiff>,
function_diffs: Option<Vec<dbx_core::schema_diff::FunctionDiff>>,
sequence_diffs: Option<Vec<dbx_core::schema_diff::SequenceDiff>>,
rule_diffs: Option<Vec<dbx_core::schema_diff::RuleDiff>>,
owner_diffs: Option<Vec<dbx_core::schema_diff::OwnerDiff>>,
database_type: dbx_core::models::connection::DatabaseType,
target_schema: Option<String>,
cascade_delete: Option<bool>,
source_dialect: Option<dbx_core::sql_dialect::descriptor::DialectKind>,
field_mappings: Option<Vec<dbx_core::schema_diff::FieldMapping>>,
) -> Result<String, String> {
Ok(dbx_core::schema_diff::generate_schema_sync_sql(
&diffs,
function_diffs.as_deref().unwrap_or_default(),
sequence_diffs.as_deref().unwrap_or_default(),
rule_diffs.as_deref().unwrap_or_default(),
owner_diffs.as_deref().unwrap_or_default(),
database_type,
target_schema.as_deref(),
cascade_delete.unwrap_or(false),
source_dialect,
&field_mappings.unwrap_or_default(),
))
}