Don't create database conn pool when running mitractl
This commit is contained in:
parent
81d60656e6
commit
040934da2d
4 changed files with 23 additions and 12 deletions
|
@ -2,7 +2,7 @@ use clap::Clap;
|
|||
use uuid::Uuid;
|
||||
|
||||
use mitra::config;
|
||||
use mitra::database::{create_pool, get_database_client};
|
||||
use mitra::database::create_database_client;
|
||||
use mitra::database::migrate::apply_migrations;
|
||||
use mitra::ethereum::utils::generate_ethereum_address;
|
||||
use mitra::logger::configure_logger;
|
||||
|
@ -87,9 +87,9 @@ async fn main() {
|
|||
// Other commands require initialized app
|
||||
let config = config::parse_config();
|
||||
configure_logger(config.log_level);
|
||||
let db_pool = create_pool(&config.database_url);
|
||||
apply_migrations(&db_pool).await;
|
||||
let db_client = &mut **get_database_client(&db_pool).await.unwrap();
|
||||
let db_config = config.database_url.parse().unwrap();
|
||||
let db_client = &mut create_database_client(&db_config).await;
|
||||
apply_migrations(db_client).await;
|
||||
|
||||
match subcmd {
|
||||
SubCommand::GenerateInviteCode(_) => {
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
use crate::database::Pool;
|
||||
use tokio_postgres::Client;
|
||||
|
||||
mod embedded {
|
||||
use refinery::embed_migrations;
|
||||
embed_migrations!("migrations");
|
||||
}
|
||||
|
||||
pub async fn apply_migrations(pool: &Pool) {
|
||||
// https://github.com/rust-db/refinery/issues/105
|
||||
let mut client_object = pool.get().await.unwrap();
|
||||
let client = &mut *(*client_object);
|
||||
pub async fn apply_migrations(db_client: &mut Client) {
|
||||
let migration_report = embedded::migrations::runner()
|
||||
.run_async(client)
|
||||
.run_async(db_client)
|
||||
.await.unwrap();
|
||||
|
||||
for migration in migration_report.applied_migrations() {
|
||||
|
|
|
@ -1,8 +1,21 @@
|
|||
use tokio_postgres::config::{Config as DbConfig};
|
||||
|
||||
pub mod int_enum;
|
||||
pub mod migrate;
|
||||
|
||||
pub type Pool = deadpool_postgres::Pool;
|
||||
|
||||
pub async fn create_database_client(db_config: &DbConfig) -> tokio_postgres::Client {
|
||||
let (client, connection) = db_config.connect(tokio_postgres::NoTls)
|
||||
.await.unwrap();
|
||||
tokio::spawn(async move {
|
||||
if let Err(err) = connection.await {
|
||||
log::error!("connection error: {}", err);
|
||||
};
|
||||
});
|
||||
client
|
||||
}
|
||||
|
||||
pub fn create_pool(database_url: &str) -> Pool {
|
||||
deadpool_postgres::Pool::new(
|
||||
deadpool_postgres::Manager::new(
|
||||
|
|
|
@ -7,7 +7,7 @@ use actix_web::{
|
|||
|
||||
use mitra::activitypub::views as activitypub;
|
||||
use mitra::config::{Environment, parse_config};
|
||||
use mitra::database::create_pool;
|
||||
use mitra::database::{get_database_client, create_pool};
|
||||
use mitra::database::migrate::apply_migrations;
|
||||
use mitra::logger::configure_logger;
|
||||
use mitra::mastodon_api::accounts::views::account_api_scope;
|
||||
|
@ -32,7 +32,8 @@ async fn main() -> std::io::Result<()> {
|
|||
let config = parse_config();
|
||||
configure_logger(config.log_level);
|
||||
let db_pool = create_pool(&config.database_url);
|
||||
apply_migrations(&db_pool).await;
|
||||
let db_client = &mut **get_database_client(&db_pool).await.unwrap();
|
||||
apply_migrations(db_client).await;
|
||||
if !config.media_dir().exists() {
|
||||
std::fs::create_dir(config.media_dir())
|
||||
.expect("failed to created media directory");
|
||||
|
|
Loading…
Reference in a new issue