Upstream Changes - 5 (#2176)

* Upstream Changes - 5

* clippy

* more
This commit is contained in:
Billy Chan 2024-03-28 16:25:31 +08:00 committed by GitHub
parent 0ff000b8f8
commit c8c02f6f6e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 32 additions and 30 deletions

View File

@ -313,7 +313,7 @@ where
} }
// Drop all tables // Drop all tables
let stmt = query_tables(db); let stmt = query_tables(db).await;
let rows = db.query_all(db_backend.build(&stmt)).await?; let rows = db.query_all(db_backend.build(&stmt)).await?;
for row in rows.into_iter() { for row in rows.into_iter() {
let table_name: String = row.try_get("", "table_name")?; let table_name: String = row.try_get("", "table_name")?;
@ -437,7 +437,7 @@ where
Ok(()) Ok(())
} }
fn query_tables<C>(db: &C) -> SelectStatement async fn query_tables<C>(db: &C) -> SelectStatement
where where
C: ConnectionTrait, C: ConnectionTrait,
{ {

View File

@ -1,6 +1,4 @@
use crate::{ use crate::{error::*, ActiveModelTrait, ConnectionTrait, DeleteMany, DeleteOne, EntityTrait};
error::*, ActiveModelTrait, ConnectionTrait, DeleteMany, DeleteOne, EntityTrait, Statement,
};
use sea_query::DeleteStatement; use sea_query::DeleteStatement;
use std::future::Future; use std::future::Future;
@ -56,8 +54,7 @@ impl Deleter {
where where
C: ConnectionTrait, C: ConnectionTrait,
{ {
let builder = db.get_database_backend(); exec_delete(self.query, db)
exec_delete(builder.build(&self.query), db)
} }
} }
@ -68,10 +65,13 @@ where
Deleter::new(query).exec(db).await 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 where
C: ConnectionTrait, C: ConnectionTrait,
{ {
let builder = db.get_database_backend();
let statement = builder.build(&query);
let result = db.execute(statement).await?; let result = db.execute(statement).await?;
Ok(DeleteResult { Ok(DeleteResult {
rows_affected: result.rows_affected(), rows_affected: result.rows_affected(),

View File

@ -1,7 +1,6 @@
use crate::{ use crate::{
error::*, ActiveModelTrait, ColumnTrait, ConnectionTrait, EntityTrait, Insert, IntoActiveModel, error::*, ActiveModelTrait, ColumnTrait, ConnectionTrait, EntityTrait, Insert, IntoActiveModel,
Iterable, PrimaryKeyToColumn, PrimaryKeyTrait, SelectModel, SelectorRaw, Statement, TryFromU64, Iterable, PrimaryKeyToColumn, PrimaryKeyTrait, SelectModel, SelectorRaw, TryFromU64, TryInsert,
TryInsert,
}; };
use sea_query::{FromValueTuple, Iden, InsertStatement, Query, ValueTuple}; use sea_query::{FromValueTuple, Iden, InsertStatement, Query, ValueTuple};
use std::{future::Future, marker::PhantomData}; use std::{future::Future, marker::PhantomData};
@ -176,8 +175,7 @@ where
C: ConnectionTrait, C: ConnectionTrait,
A: 'a, A: 'a,
{ {
let builder = db.get_database_backend(); exec_insert(self.primary_key, self.query, db)
exec_insert(self.primary_key, builder.build(&self.query), db)
} }
/// Execute an insert operation /// Execute an insert operation
@ -208,13 +206,16 @@ where
async fn exec_insert<A, C>( async fn exec_insert<A, C>(
primary_key: Option<ValueTuple>, primary_key: Option<ValueTuple>,
statement: Statement, statement: InsertStatement,
db: &C, db: &C,
) -> Result<InsertResult<A>, DbErr> ) -> Result<InsertResult<A>, DbErr>
where where
C: ConnectionTrait, C: ConnectionTrait,
A: ActiveModelTrait, 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 PrimaryKey<A> = <<A as ActiveModelTrait>::Entity as EntityTrait>::PrimaryKey;
type ValueTypeOf<A> = <PrimaryKey<A> as PrimaryKeyTrait>::ValueType; type ValueTypeOf<A> = <PrimaryKey<A> as PrimaryKeyTrait>::ValueType;
@ -259,7 +260,8 @@ where
C: ConnectionTrait, C: ConnectionTrait,
{ {
let db_backend = db.get_database_backend(); 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()) Ok(exec_result.rows_affected())
} }
@ -281,15 +283,15 @@ where
.map(|c| c.select_as(c.into_returning_expr(db_backend))), .map(|c| c.select_as(c.into_returning_expr(db_backend))),
); );
insert_statement.returning(returning); insert_statement.returning(returning);
let insert_statement = db_backend.build(&insert_statement);
SelectorRaw::<SelectModel<<A::Entity as EntityTrait>::Model>>::from_statement( SelectorRaw::<SelectModel<<A::Entity as EntityTrait>::Model>>::from_statement(
db_backend.build(&insert_statement), insert_statement,
) )
.one(db) .one(db)
.await? .await?
} }
false => { false => {
let insert_res = let insert_res = exec_insert::<A, _>(primary_key, insert_statement, db).await?;
exec_insert::<A, _>(primary_key, db_backend.build(&insert_statement), db).await?;
<A::Entity as EntityTrait>::find_by_id(insert_res.last_insert_id) <A::Entity as EntityTrait>::find_by_id(insert_res.last_insert_id)
.one(db) .one(db)
.await? .await?

View File

@ -67,8 +67,7 @@ where
/// Get the total number of items /// Get the total number of items
pub async fn num_items(&self) -> Result<u64, DbErr> { pub async fn num_items(&self) -> Result<u64, DbErr> {
let builder = self.db.get_database_backend(); let builder = self.db.get_database_backend();
let stmt = builder.build( let stmt = SelectStatement::new()
SelectStatement::new()
.expr(Expr::cust("COUNT(*) AS num_items")) .expr(Expr::cust("COUNT(*) AS num_items"))
.from_subquery( .from_subquery(
self.query self.query
@ -78,8 +77,9 @@ where
.clear_order_by() .clear_order_by()
.to_owned(), .to_owned(),
Alias::new("sub_query"), Alias::new("sub_query"),
), )
); .to_owned();
let stmt = builder.build(&stmt);
let result = match self.db.query_one(stmt).await? { let result = match self.db.query_one(stmt).await? {
Some(res) => res, Some(res) => res,
None => return Ok(0), None => return Ok(0),