Inserter
This commit is contained in:
parent
48a5500670
commit
e66cfd1ab1
@ -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
34
src/connector/insert.rs
Normal 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(),
|
||||
})
|
||||
}
|
||||
}
|
@ -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};
|
||||
|
Loading…
x
Reference in New Issue
Block a user