MCPcopy Create free account
hub / github.com/SeaQL/sea-orm / exec_fresh

Function exec_fresh

sea-orm-migration/src/migrator.rs:275–358  ·  view source on GitHub ↗
(manager: &SchemaManager<'_>)

Source from the content-addressed store, hash-verified

273}
274
275async fn exec_fresh<M>(manager: &SchemaManager<'_>) -> Result<(), DbErr>
276where
277 M: MigratorTrait + ?Sized,
278{
279 let db = manager.get_connection();
280
281 M::install(db).await?;
282 let db_backend = db.get_database_backend();
283
284 // Temporarily disable the foreign key check
285 if db_backend == DbBackend::Sqlite {
286 info!("Disabling foreign key check");
287 db.execute(Statement::from_string(
288 db_backend,
289 "PRAGMA foreign_keys = OFF".to_owned(),
290 ))
291 .await?;
292 info!("Foreign key check disabled");
293 }
294
295 // Drop all foreign keys
296 if db_backend == DbBackend::MySql {
297 info!("Dropping all foreign keys");
298 let stmt = query_mysql_foreign_keys(db);
299 let rows = db.query_all(db_backend.build(&stmt)).await?;
300 for row in rows.into_iter() {
301 let constraint_name: String = row.try_get("", "CONSTRAINT_NAME")?;
302 let table_name: String = row.try_get("", "TABLE_NAME")?;
303 info!(
304 "Dropping foreign key '{}' from table '{}'",
305 constraint_name, table_name
306 );
307 let mut stmt = ForeignKey::drop();
308 stmt.table(Alias::new(table_name.as_str()))
309 .name(constraint_name.as_str());
310 db.execute(db_backend.build(&stmt)).await?;
311 info!("Foreign key '{}' has been dropped", constraint_name);
312 }
313 info!("All foreign keys dropped");
314 }
315
316 // Drop all tables
317 let stmt = query_tables(db).await;
318 let rows = db.query_all(db_backend.build(&stmt)).await?;
319 for row in rows.into_iter() {
320 let table_name: String = row.try_get("", "table_name")?;
321 info!("Dropping table '{}'", table_name);
322 let mut stmt = Table::drop();
323 stmt.table(Alias::new(table_name.as_str()))
324 .if_exists()
325 .cascade();
326 db.execute(db_backend.build(&stmt)).await?;
327 info!("Table '{}' has been dropped", table_name);
328 }
329
330 // Drop all types
331 if db_backend == DbBackend::Postgres {
332 info!("Dropping all types");

Callers

nothing calls this directly

Calls 13

query_mysql_foreign_keysFunction · 0.85
query_tablesFunction · 0.85
query_pg_typesFunction · 0.85
into_iterMethod · 0.80
newFunction · 0.50
get_connectionMethod · 0.45
get_database_backendMethod · 0.45
executeMethod · 0.45
query_allMethod · 0.45
buildMethod · 0.45
try_getMethod · 0.45
nameMethod · 0.45

Tested by

no test coverage detected