Add SchemaBuilderBackend
This commit is contained in:
parent
72e8b1f9d6
commit
3e7220aad0
@ -1,6 +1,7 @@
|
|||||||
use crate::{ExecErr, ExecResult, QueryErr, QueryResult, Statement, Transaction};
|
use crate::{ExecErr, ExecResult, QueryErr, QueryResult, Statement, Transaction};
|
||||||
use sea_query::{
|
use sea_query::{
|
||||||
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SqliteQueryBuilder,
|
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SchemaStatementBuilder,
|
||||||
|
SqliteQueryBuilder,
|
||||||
};
|
};
|
||||||
use std::{error::Error, fmt};
|
use std::{error::Error, fmt};
|
||||||
|
|
||||||
@ -22,6 +23,12 @@ pub enum QueryBuilderBackend {
|
|||||||
Sqlite,
|
Sqlite,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum SchemaBuilderBackend {
|
||||||
|
MySql,
|
||||||
|
Postgres,
|
||||||
|
Sqlite,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ConnectionErr;
|
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> {
|
pub async fn execute(&self, stmt: Statement) -> Result<ExecResult, ExecErr> {
|
||||||
match self {
|
match self {
|
||||||
#[cfg(feature = "sqlx-mysql")]
|
#[cfg(feature = "sqlx-mysql")]
|
||||||
@ -139,3 +158,17 @@ impl QueryBuilderBackend {
|
|||||||
.into()
|
.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