Add SchemaBuilderBackend
This commit is contained in:
parent
72e8b1f9d6
commit
3e7220aad0
@ -1,6 +1,7 @@
|
||||
use crate::{ExecErr, ExecResult, QueryErr, QueryResult, Statement, Transaction};
|
||||
use sea_query::{
|
||||
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SqliteQueryBuilder,
|
||||
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SchemaStatementBuilder,
|
||||
SqliteQueryBuilder,
|
||||
};
|
||||
use std::{error::Error, fmt};
|
||||
|
||||
@ -22,6 +23,12 @@ pub enum QueryBuilderBackend {
|
||||
Sqlite,
|
||||
}
|
||||
|
||||
pub enum SchemaBuilderBackend {
|
||||
MySql,
|
||||
Postgres,
|
||||
Sqlite,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ConnectionErr;
|
||||
|
||||
@ -70,6 +77,18 @@ impl DatabaseConnection {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_schema_builder_backend(&self) -> SchemaBuilderBackend {
|
||||
match self {
|
||||
#[cfg(feature = "sqlx-mysql")]
|
||||
DatabaseConnection::SqlxMySqlPoolConnection(_) => SchemaBuilderBackend::MySql,
|
||||
#[cfg(feature = "sqlx-sqlite")]
|
||||
DatabaseConnection::SqlxSqlitePoolConnection(_) => SchemaBuilderBackend::Sqlite,
|
||||
#[cfg(feature = "mock")]
|
||||
DatabaseConnection::MockDatabaseConnection(_) => SchemaBuilderBackend::Postgres,
|
||||
DatabaseConnection::Disconnected => panic!("Disconnected"),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn execute(&self, stmt: Statement) -> Result<ExecResult, ExecErr> {
|
||||
match self {
|
||||
#[cfg(feature = "sqlx-mysql")]
|
||||
@ -139,3 +158,17 @@ impl QueryBuilderBackend {
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
||||
impl SchemaBuilderBackend {
|
||||
pub fn build<S>(&self, statement: &S) -> Statement
|
||||
where
|
||||
S: SchemaStatementBuilder,
|
||||
{
|
||||
match self {
|
||||
Self::MySql => statement.build(MysqlQueryBuilder),
|
||||
Self::Postgres => statement.build(PostgresQueryBuilder),
|
||||
Self::Sqlite => statement.build(SqliteQueryBuilder),
|
||||
}
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user