1use std::env::var;
2use std::path::PathBuf;
3use std::str::FromStr;
4use serde::{Deserialize, Serialize};
5use indexmap::IndexMap;
6
7const MIGRATION_FOLDER: &str = "migrations";
8pub const MIGRATION_TABLE: &str = "_sqlx_migrations";
9const MIGRATION_SNAPSHOT_FOLDER: &str = "migrations/snapshot";
10pub const MODEL_FOLDERS: &str = ".";
11
12pub fn get_var_migration_folder() -> PathBuf {
13 let folder = var("MIGRATION_FOLDER").unwrap_or_else(|_| MIGRATION_FOLDER.to_string());
14 PathBuf::from_str(&folder).unwrap()
15}
16
17pub fn get_var_snapshot_folder() -> PathBuf {
18 let folder = var("MIGRATION_BACKUP_FOLDER").unwrap_or_else(|_| MIGRATION_SNAPSHOT_FOLDER.to_string());
19 PathBuf::from_str(&folder).unwrap()
20}
21
22pub fn get_var_database_url() -> String {
23 var("DATABASE_URL").expect("DATABASE_URL must be set")
24}
25
26pub fn get_var_model_folders() -> Vec<PathBuf> {
27 let folders = var("MODEL_FOLDERS").unwrap_or_else(|_| MODEL_FOLDERS.to_string());
28 folders.split(',').map(|s| PathBuf::from_str(s).unwrap()).collect()
29}
30
31#[derive(Debug, Serialize, Deserialize, Clone, Default)]
32pub struct Table {
33 pub aliases: IndexMap<String, String>,
37}
38
39#[derive(Debug, Deserialize, Serialize, Clone, Default)]
40pub struct Config {
41 pub table: Table,
42}