1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use ::anyhow::Result;
use ::names::Generator;
use ::names::Name;
use ::sea_orm::DatabaseConnection;

const TEST_DATABASE_BASENAME: &'static str = "test-database";

use crate::queries::query_create_database;

/// Runs a query which will create a new database with a randomly generated name.
/// The name of this new database will be returned.
pub async fn query_create_random_database(db_connection: &DatabaseConnection) -> Result<String> {
    let db_name = random_db_name();

    query_create_database(&db_connection, &db_name).await?;

    Ok(db_name)
}

fn random_db_name() -> String {
    let mut generator = Generator::with_naming(Name::Numbered);
    let db_name = generator
        .next()
        .expect("Expect generating a name should always succeed");

    format!("{}--{}", TEST_DATABASE_BASENAME, db_name,)
}