refac: restructure database

This commit is contained in:
Dmitriy Pleshevskiy 2021-02-23 18:44:37 +03:00
parent d1d09ac912
commit eb0775e35d
14 changed files with 62 additions and 51 deletions

View File

@ -1,5 +1,6 @@
use crate::config::Config;
use crate::migration::{DatabaseMigrationManager, MigrationManager};
use crate::database::prelude::*;
use crate::database::MigrationManager;
use crate::opts::ApplyCommandOpt;
use crate::StdResult;
use std::convert::TryFrom;

View File

@ -1,5 +1,6 @@
use crate::config::Config;
use crate::migration::{DatabaseMigrationManager, MigrationManager};
use crate::database::prelude::*;
use crate::database::MigrationManager;
use crate::StdResult;
use std::convert::TryFrom;

View File

@ -1,5 +1,4 @@
use crate::config::Config;
use crate::config::MIGRA_TOML_FILENAME;
use crate::config::{Config, MIGRA_TOML_FILENAME};
use crate::StdResult;
use std::path::PathBuf;

View File

@ -1,9 +1,8 @@
use crate::config::Config;
use crate::databases::*;
use crate::database::migration::filter_pending_migrations;
use crate::database::prelude::*;
use crate::database::{DatabaseConnectionManager, Migration, MigrationManager};
use crate::error::{Error, StdResult};
use crate::migration::{
filter_pending_migrations, DatabaseMigrationManager, Migration, MigrationManager,
};
const EM_DASH: char = '—';

View File

@ -1,6 +1,4 @@
use crate::migration::{
filter_pending_migrations, DatabaseMigrationManager, Migration, MigrationManager,
};
use crate::database::migration::*;
use crate::Config;
use crate::StdResult;
use std::convert::TryFrom;

View File

@ -1,5 +1,5 @@
use crate::database::migration::Migration;
use crate::error::{Error, MigraResult};
use crate::migration::Migration;
use serde::{Deserialize, Serialize};
use std::path::{Path, PathBuf};
use std::{env, fs, io};

View File

@ -0,0 +1,17 @@
use crate::error::StdResult;
pub trait ToSql {
fn to_sql(&self) -> String;
}
pub type ToSqlParams<'a> = &'a [&'a dyn ToSql];
impl ToSql for &str {
fn to_sql(&self) -> String {
format!("'{}'", self)
}
}
pub trait TryFromSql<QueryResultRow>: Sized {
fn try_from_sql(row: QueryResultRow) -> StdResult<Self>;
}

View File

@ -1,32 +1,4 @@
use crate::StdResult;
pub trait ToSql {
fn to_sql(&self) -> String;
}
pub type ToSqlParams<'a> = &'a [&'a dyn ToSql];
impl ToSql for &str {
fn to_sql(&self) -> String {
format!("'{}'", self)
}
}
pub trait TryFromSql<QueryResultRow>: Sized {
fn try_from_sql(row: QueryResultRow) -> StdResult<Self>;
}
pub trait OpenDatabaseConnection: Sized {
fn open(connection_string: &str) -> StdResult<Self>;
}
pub trait DatabaseConnection {
fn batch_execute(&mut self, query: &str) -> StdResult<()>;
fn execute<'b>(&mut self, query: &str, params: ToSqlParams<'b>) -> StdResult<u64>;
fn query<'b>(&mut self, query: &str, params: ToSqlParams<'b>) -> StdResult<Vec<Vec<String>>>;
}
use super::prelude::*;
pub(crate) fn merge_query_with_params(query: &str, params: ToSqlParams) -> String {
params

View File

@ -0,0 +1,3 @@
mod postgres;
pub use self::postgres::*;

View File

@ -1,4 +1,5 @@
use crate::database::*;
use crate::database::builder::merge_query_with_params;
use crate::database::prelude::*;
use crate::error::StdResult;
use postgres::{Client, NoTls};

View File

@ -1,11 +1,20 @@
mod postgres;
pub use self::postgres::*;
use super::adapter::ToSqlParams;
use super::clients::*;
use crate::config::{DatabaseConfig, SupportedDatabaseClient};
use crate::database::{DatabaseConnection, OpenDatabaseConnection};
use crate::error::StdResult;
pub trait OpenDatabaseConnection: Sized {
fn open(connection_string: &str) -> StdResult<Self>;
}
pub trait DatabaseConnection {
fn batch_execute(&mut self, query: &str) -> StdResult<()>;
fn execute<'b>(&mut self, query: &str, params: ToSqlParams<'b>) -> StdResult<u64>;
fn query<'b>(&mut self, query: &str, params: ToSqlParams<'b>) -> StdResult<Vec<Vec<String>>>;
}
pub(crate) struct DatabaseConnectionManager {
config: DatabaseConfig,
}

View File

@ -1,6 +1,5 @@
use super::connection::{DatabaseConnection, DatabaseConnectionManager};
use crate::config::Config;
use crate::database::DatabaseConnection;
use crate::databases::DatabaseConnectionManager;
use crate::StdResult;
use std::convert::TryFrom;
use std::fs;

View File

@ -0,0 +1,14 @@
pub(crate) mod adapter;
pub(crate) mod builder;
pub(crate) mod clients;
pub(crate) mod connection;
pub(crate) mod migration;
pub mod prelude {
pub use super::adapter::{ToSql, ToSqlParams, TryFromSql};
pub use super::connection::{DatabaseConnection, OpenDatabaseConnection};
pub use super::migration::DatabaseMigrationManager;
}
pub(crate) use connection::DatabaseConnectionManager;
pub(crate) use migration::{Migration, MigrationManager};

View File

@ -4,9 +4,7 @@
mod commands;
mod config;
mod database;
mod databases;
mod error;
mod migration;
mod opts;
use crate::error::StdResult;