parent
0ff000b8f8
commit
c8c02f6f6e
@ -313,7 +313,7 @@ where
|
||||
}
|
||||
|
||||
// Drop all tables
|
||||
let stmt = query_tables(db);
|
||||
let stmt = query_tables(db).await;
|
||||
let rows = db.query_all(db_backend.build(&stmt)).await?;
|
||||
for row in rows.into_iter() {
|
||||
let table_name: String = row.try_get("", "table_name")?;
|
||||
@ -437,7 +437,7 @@ where
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn query_tables<C>(db: &C) -> SelectStatement
|
||||
async fn query_tables<C>(db: &C) -> SelectStatement
|
||||
where
|
||||
C: ConnectionTrait,
|
||||
{
|
||||
|
@ -1,6 +1,4 @@
|
||||
use crate::{
|
||||
error::*, ActiveModelTrait, ConnectionTrait, DeleteMany, DeleteOne, EntityTrait, Statement,
|
||||
};
|
||||
use crate::{error::*, ActiveModelTrait, ConnectionTrait, DeleteMany, DeleteOne, EntityTrait};
|
||||
use sea_query::DeleteStatement;
|
||||
use std::future::Future;
|
||||
|
||||
@ -56,8 +54,7 @@ impl Deleter {
|
||||
where
|
||||
C: ConnectionTrait,
|
||||
{
|
||||
let builder = db.get_database_backend();
|
||||
exec_delete(builder.build(&self.query), db)
|
||||
exec_delete(self.query, db)
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,10 +65,13 @@ where
|
||||
Deleter::new(query).exec(db).await
|
||||
}
|
||||
|
||||
async fn exec_delete<C>(statement: Statement, db: &C) -> Result<DeleteResult, DbErr>
|
||||
async fn exec_delete<C>(query: DeleteStatement, db: &C) -> Result<DeleteResult, DbErr>
|
||||
where
|
||||
C: ConnectionTrait,
|
||||
{
|
||||
let builder = db.get_database_backend();
|
||||
let statement = builder.build(&query);
|
||||
|
||||
let result = db.execute(statement).await?;
|
||||
Ok(DeleteResult {
|
||||
rows_affected: result.rows_affected(),
|
||||
|
@ -1,7 +1,6 @@
|
||||
use crate::{
|
||||
error::*, ActiveModelTrait, ColumnTrait, ConnectionTrait, EntityTrait, Insert, IntoActiveModel,
|
||||
Iterable, PrimaryKeyToColumn, PrimaryKeyTrait, SelectModel, SelectorRaw, Statement, TryFromU64,
|
||||
TryInsert,
|
||||
Iterable, PrimaryKeyToColumn, PrimaryKeyTrait, SelectModel, SelectorRaw, TryFromU64, TryInsert,
|
||||
};
|
||||
use sea_query::{FromValueTuple, Iden, InsertStatement, Query, ValueTuple};
|
||||
use std::{future::Future, marker::PhantomData};
|
||||
@ -176,8 +175,7 @@ where
|
||||
C: ConnectionTrait,
|
||||
A: 'a,
|
||||
{
|
||||
let builder = db.get_database_backend();
|
||||
exec_insert(self.primary_key, builder.build(&self.query), db)
|
||||
exec_insert(self.primary_key, self.query, db)
|
||||
}
|
||||
|
||||
/// Execute an insert operation
|
||||
@ -208,13 +206,16 @@ where
|
||||
|
||||
async fn exec_insert<A, C>(
|
||||
primary_key: Option<ValueTuple>,
|
||||
statement: Statement,
|
||||
statement: InsertStatement,
|
||||
db: &C,
|
||||
) -> Result<InsertResult<A>, DbErr>
|
||||
where
|
||||
C: ConnectionTrait,
|
||||
A: ActiveModelTrait,
|
||||
{
|
||||
let db_backend = db.get_database_backend();
|
||||
let statement = db_backend.build(&statement);
|
||||
|
||||
type PrimaryKey<A> = <<A as ActiveModelTrait>::Entity as EntityTrait>::PrimaryKey;
|
||||
type ValueTypeOf<A> = <PrimaryKey<A> as PrimaryKeyTrait>::ValueType;
|
||||
|
||||
@ -259,7 +260,8 @@ where
|
||||
C: ConnectionTrait,
|
||||
{
|
||||
let db_backend = db.get_database_backend();
|
||||
let exec_result = db.execute(db_backend.build(&insert_statement)).await?;
|
||||
let insert_statement = db_backend.build(&insert_statement);
|
||||
let exec_result = db.execute(insert_statement).await?;
|
||||
Ok(exec_result.rows_affected())
|
||||
}
|
||||
|
||||
@ -281,15 +283,15 @@ where
|
||||
.map(|c| c.select_as(c.into_returning_expr(db_backend))),
|
||||
);
|
||||
insert_statement.returning(returning);
|
||||
let insert_statement = db_backend.build(&insert_statement);
|
||||
SelectorRaw::<SelectModel<<A::Entity as EntityTrait>::Model>>::from_statement(
|
||||
db_backend.build(&insert_statement),
|
||||
insert_statement,
|
||||
)
|
||||
.one(db)
|
||||
.await?
|
||||
}
|
||||
false => {
|
||||
let insert_res =
|
||||
exec_insert::<A, _>(primary_key, db_backend.build(&insert_statement), db).await?;
|
||||
let insert_res = exec_insert::<A, _>(primary_key, insert_statement, db).await?;
|
||||
<A::Entity as EntityTrait>::find_by_id(insert_res.last_insert_id)
|
||||
.one(db)
|
||||
.await?
|
||||
|
@ -67,8 +67,7 @@ where
|
||||
/// Get the total number of items
|
||||
pub async fn num_items(&self) -> Result<u64, DbErr> {
|
||||
let builder = self.db.get_database_backend();
|
||||
let stmt = builder.build(
|
||||
SelectStatement::new()
|
||||
let stmt = SelectStatement::new()
|
||||
.expr(Expr::cust("COUNT(*) AS num_items"))
|
||||
.from_subquery(
|
||||
self.query
|
||||
@ -78,8 +77,9 @@ where
|
||||
.clear_order_by()
|
||||
.to_owned(),
|
||||
Alias::new("sub_query"),
|
||||
),
|
||||
);
|
||||
)
|
||||
.to_owned();
|
||||
let stmt = builder.build(&stmt);
|
||||
let result = match self.db.query_one(stmt).await? {
|
||||
Some(res) => res,
|
||||
None => return Ok(0),
|
||||
|
Loading…
x
Reference in New Issue
Block a user