This commit is contained in:
Chris Tsang 2021-05-31 23:37:37 +08:00
parent 48a5500670
commit e66cfd1ab1
3 changed files with 37 additions and 1 deletions

View File

@ -25,7 +25,7 @@ path = "src/lib.rs"
[dependencies]
async-trait = "^0.1"
futures = { version = "^0.3" }
sea-query = { path = "../sea-query", version = "^0.11" }
sea-query = { path = "../sea-query", version = "^0.12" }
sea-orm-macros = { path = "sea-orm-macros", optional = true }
# sea-schema = { path = "../sea-schema" }
serde = { version = "^1.0", features = [ "derive" ] }

34
src/connector/insert.rs Normal file
View File

@ -0,0 +1,34 @@
use crate::{Connection, Database, ExecErr, Statement};
use sea_query::{InsertStatement, QueryBuilder};
#[derive(Clone, Debug)]
pub struct Inserter {
query: InsertStatement,
}
#[derive(Clone, Debug)]
pub struct InsertResult {
pub last_insert_id: u64,
}
impl Inserter {
pub fn new(query: InsertStatement) -> Self {
Self { query }
}
pub fn build<B>(&self, builder: B) -> Statement
where
B: QueryBuilder,
{
self.query.build(builder).into()
}
pub async fn exec(self, db: &Database) -> Result<InsertResult, ExecErr> {
let builder = db.get_query_builder_backend();
let result = db.get_connection().execute(self.build(builder)).await?;
// TODO: Postgres instead use query_one + returning clause
Ok(InsertResult {
last_insert_id: result.last_insert_id(),
})
}
}

View File

@ -1,7 +1,9 @@
mod executor;
mod insert;
mod select;
pub use executor::*;
pub use insert::*;
pub use select::*;
use crate::{DatabaseConnection, QueryResult, Statement, TypeErr};