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