Inserter
This commit is contained in:
parent
48a5500670
commit
e66cfd1ab1
@ -25,7 +25,7 @@ path = "src/lib.rs"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
async-trait = "^0.1"
|
async-trait = "^0.1"
|
||||||
futures = { version = "^0.3" }
|
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-orm-macros = { path = "sea-orm-macros", optional = true }
|
||||||
# sea-schema = { path = "../sea-schema" }
|
# sea-schema = { path = "../sea-schema" }
|
||||||
serde = { version = "^1.0", features = [ "derive" ] }
|
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 executor;
|
||||||
|
mod insert;
|
||||||
mod select;
|
mod select;
|
||||||
|
|
||||||
pub use executor::*;
|
pub use executor::*;
|
||||||
|
pub use insert::*;
|
||||||
pub use select::*;
|
pub use select::*;
|
||||||
|
|
||||||
use crate::{DatabaseConnection, QueryResult, Statement, TypeErr};
|
use crate::{DatabaseConnection, QueryResult, Statement, TypeErr};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user