Refactor 2
This commit is contained in:
parent
07d5f781ca
commit
a465d1ebac
@ -138,36 +138,33 @@ where
|
|||||||
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;
|
||||||
|
|
||||||
let last_insert_id = if db.support_returning() {
|
let last_insert_id = match (primary_key, db.support_returning()) {
|
||||||
let mut rows = db.query_all(statement).await?;
|
(Some(value_tuple), _) => {
|
||||||
let row = match rows.pop() {
|
db.execute(statement).await?;
|
||||||
Some(row) => row,
|
FromValueTuple::from_value_tuple(value_tuple)
|
||||||
None => {
|
|
||||||
return Err(DbErr::RecordNotInserted(
|
|
||||||
"None of the records are being inserted".to_owned(),
|
|
||||||
))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
match primary_key {
|
|
||||||
Some(value_tuple) => Ok(FromValueTuple::from_value_tuple(value_tuple)),
|
|
||||||
None => {
|
|
||||||
let cols = PrimaryKey::<A>::iter()
|
|
||||||
.map(|col| col.to_string())
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
row.try_get_many("", cols.as_ref())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
(None, true) => {
|
||||||
let res = db.execute(statement).await?;
|
let mut rows = db.query_all(statement).await?;
|
||||||
match primary_key {
|
let row = match rows.pop() {
|
||||||
Some(value_tuple) => Ok(FromValueTuple::from_value_tuple(value_tuple)),
|
Some(row) => row,
|
||||||
None => {
|
None => {
|
||||||
let last_insert_id = res.last_insert_id();
|
return Err(DbErr::RecordNotInserted(
|
||||||
ValueTypeOf::<A>::try_from_u64(last_insert_id)
|
"None of the records are being inserted".to_owned(),
|
||||||
}
|
))
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let cols = PrimaryKey::<A>::iter()
|
||||||
|
.map(|col| col.to_string())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
row.try_get_many("", cols.as_ref())
|
||||||
|
.map_err(|_| DbErr::UnpackInsertId)?
|
||||||
}
|
}
|
||||||
}
|
(None, false) => {
|
||||||
.map_err(|_| DbErr::UnpackInsertId)?;
|
let res = db.execute(statement).await?;
|
||||||
|
let last_insert_id = res.last_insert_id();
|
||||||
|
ValueTypeOf::<A>::try_from_u64(last_insert_id).map_err(|_| DbErr::UnpackInsertId)?
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Ok(InsertResult { last_insert_id })
|
Ok(InsertResult { last_insert_id })
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user