tea_orm/queries/
create_random_database_from_template.rs

1use crate::queries::query_create_database_from_template;
2use anyhow::Result;
3use names::Generator;
4use names::Name;
5use sea_orm::DatabaseConnection;
6use std::fmt::Display;
7
8const TEST_DATABASE_BASENAME: &'static str = "test-database";
9
10/// Runs a query which will create a new database with a randomly generated name.
11/// The name of this new database will be returned.
12pub async fn query_create_random_database_from_template<T>(
13    db_connection: &DatabaseConnection,
14    template_name: &T,
15) -> Result<String>
16where
17    T: Display,
18{
19    let db_name = random_db_name();
20
21    query_create_database_from_template(&db_connection, &db_name, template_name).await?;
22
23    Ok(db_name)
24}
25
26fn random_db_name() -> String {
27    let mut generator = Generator::with_naming(Name::Numbered);
28    let db_name = generator
29        .next()
30        .expect("Expect generating a name should always succeed");
31
32    format!("{}--{}", TEST_DATABASE_BASENAME, db_name,)
33}