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
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,
{

View File

@ -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(),

View File

@ -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?

View File

@ -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),