1#![recursion_limit = "256"]
2
3#[cfg(any(test, feature = "test-utils"))]
7extern crate self as server;
8
9pub mod auth_keys;
10pub mod bootstrap;
11pub mod config;
12
13pub mod db;
14
15pub mod account;
17pub mod artifact_mgmt;
18pub mod command;
19pub mod commodity;
20pub mod error;
21pub mod logical;
22pub mod provision;
23pub mod script;
24pub mod split;
25pub mod tag;
26pub mod user;
27use exitfailure::ExitFailure;
28use sqlx::any::install_default_drivers;
29use tokio::{runtime::Handle, task::JoinHandle};
30
31#[macro_use]
32extern crate rust_i18n;
33
34i18n!("locales", fallback = "en");
35
36pub async fn boot() -> Result<(), ExitFailure> {
42 install_default_drivers();
43 db::migrate_db().await?;
44 bootstrap::seed().await?;
45 config::load_config().await?;
46
47 log::info!("{}", &t!("The server boot complete"));
48 Ok(())
49}
50
51pub async fn start() -> JoinHandle<Result<(), ExitFailure>> {
52 let handle = Handle::current();
53
54 handle.spawn(boot())
55}