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

Function run_migration

sea-orm-migration/tests/main.rs:43–261  ·  view source on GitHub ↗
(
    url: &str,
    _: Migrator,
    db_name: &str,
    schema: &str,
)

Source from the content-addressed store, hash-verified

41}
42
43async fn run_migration<Migrator>(
44 url: &str,
45 _: Migrator,
46 db_name: &str,
47 schema: &str,
48) -> Result<(), DbErr>
49where
50 Migrator: MigratorTrait,
51{
52 let db_connect = |url: String| async {
53 let connect_options = ConnectOptions::new(url)
54 .set_schema_search_path(format!("{schema},public"))
55 .to_owned();
56
57 Database::connect(connect_options).await
58 };
59
60 let db = db_connect(url.to_owned()).await?;
61
62 let db = &match db.get_database_backend() {
63 DbBackend::MySql => {
64 db.execute(Statement::from_string(
65 db.get_database_backend(),
66 format!("CREATE DATABASE IF NOT EXISTS `{db_name}`;"),
67 ))
68 .await?;
69
70 let url = format!("{url}/{db_name}");
71 db_connect(url).await?
72 }
73 DbBackend::Postgres => {
74 db.execute(Statement::from_string(
75 db.get_database_backend(),
76 format!("DROP DATABASE IF EXISTS \"{db_name}\";"),
77 ))
78 .await?;
79 db.execute(Statement::from_string(
80 db.get_database_backend(),
81 format!("CREATE DATABASE \"{db_name}\";"),
82 ))
83 .await?;
84
85 let url = format!("{url}/{db_name}");
86 let db = db_connect(url).await?;
87
88 db.execute(Statement::from_string(
89 db.get_database_backend(),
90 format!("CREATE SCHEMA IF NOT EXISTS \"{schema}\";"),
91 ))
92 .await?;
93
94 db
95 }
96 DbBackend::Sqlite => db,
97 };
98 let manager = SchemaManager::new(db);
99
100 println!("\nMigrator::status");

Callers 1

mainFunction · 0.85

Calls 8

unwrapMethod · 0.80
newFunction · 0.50
resetFunction · 0.50
get_database_backendMethod · 0.45
executeMethod · 0.45
as_strMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected