Tests
This commit is contained in:
parent
f0634c2451
commit
5c93253877
@ -352,13 +352,8 @@ impl ActiveEnum {
|
|||||||
|
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl sea_orm::TryGetable for #ident {
|
impl sea_orm::TryGetable for #ident {
|
||||||
fn try_get(res: &sea_orm::QueryResult, pre: &str, col: &str) -> std::result::Result<Self, sea_orm::TryGetError> {
|
fn try_get_by<I: sea_orm::ColIdx>(res: &sea_orm::QueryResult, idx: I) -> std::result::Result<Self, sea_orm::TryGetError> {
|
||||||
let value = <<Self as sea_orm::ActiveEnum>::Value as sea_orm::TryGetable>::try_get(res, pre, col)?;
|
let value = <<Self as sea_orm::ActiveEnum>::Value as sea_orm::TryGetable>::try_get_by(res, idx)?;
|
||||||
<Self as sea_orm::ActiveEnum>::try_from_value(&value).map_err(sea_orm::TryGetError::DbErr)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn try_get_by_index(res: &sea_orm::QueryResult, idx: usize) -> std::result::Result<Self, sea_orm::TryGetError> {
|
|
||||||
let value = <<Self as sea_orm::ActiveEnum>::Value as sea_orm::TryGetable>::try_get_by_index(res, idx)?;
|
|
||||||
<Self as sea_orm::ActiveEnum>::try_from_value(&value).map_err(sea_orm::TryGetError::DbErr)
|
<Self as sea_orm::ActiveEnum>::try_from_value(&value).map_err(sea_orm::TryGetError::DbErr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,15 @@ impl From<TryGetError> for DbErr {
|
|||||||
// QueryResult //
|
// QueryResult //
|
||||||
|
|
||||||
impl QueryResult {
|
impl QueryResult {
|
||||||
|
/// Get a value from the query result with an ColIdx
|
||||||
|
pub fn try_get_by<T, I>(&self, index: I) -> Result<T, DbErr>
|
||||||
|
where
|
||||||
|
T: TryGetable,
|
||||||
|
I: ColIdx,
|
||||||
|
{
|
||||||
|
Ok(T::try_get_by(self, index)?)
|
||||||
|
}
|
||||||
|
|
||||||
/// Get a value from the query result with prefixed column name
|
/// Get a value from the query result with prefixed column name
|
||||||
pub fn try_get<T>(&self, pre: &str, col: &str) -> Result<T, DbErr>
|
pub fn try_get<T>(&self, pre: &str, col: &str) -> Result<T, DbErr>
|
||||||
where
|
where
|
||||||
@ -125,7 +134,7 @@ impl<T: TryGetable> TryGetable for Option<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Column Index, used by [`TryGetable`]
|
/// Column Index, used by [`TryGetable`]
|
||||||
pub trait ColIdx: std::fmt::Debug {
|
pub trait ColIdx: std::fmt::Debug + Copy {
|
||||||
#[cfg(feature = "sqlx-mysql")]
|
#[cfg(feature = "sqlx-mysql")]
|
||||||
/// Type shenanigans
|
/// Type shenanigans
|
||||||
type SqlxMySqlIndex: sqlx::ColumnIndex<sqlx::mysql::MySqlRow>;
|
type SqlxMySqlIndex: sqlx::ColumnIndex<sqlx::mysql::MySqlRow>;
|
||||||
|
@ -39,13 +39,8 @@ impl From<Events> for Value {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TryGetable for Events {
|
impl TryGetable for Events {
|
||||||
fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, TryGetError> {
|
fn try_get_by<I: sea_orm::ColIdx>(res: &QueryResult, idx: I) -> Result<Self, TryGetError> {
|
||||||
let vec: Vec<String> = res.try_get(pre, col).map_err(TryGetError::DbErr)?;
|
let vec: Vec<String> = res.try_get_by(idx).map_err(TryGetError::DbErr)?;
|
||||||
Ok(Events(vec.into_iter().map(Event).collect()))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn try_get_by_index(res: &QueryResult, idx: usize) -> Result<Self, TryGetError> {
|
|
||||||
let vec: Vec<String> = res.try_get_by_index(idx).map_err(TryGetError::DbErr)?;
|
|
||||||
Ok(Events(vec.into_iter().map(Event).collect()))
|
Ok(Events(vec.into_iter().map(Event).collect()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,13 +25,8 @@ impl From<StringVec> for Value {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl TryGetable for StringVec {
|
impl TryGetable for StringVec {
|
||||||
fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, TryGetError> {
|
fn try_get_by<I: sea_orm::ColIdx>(res: &QueryResult, idx: I) -> Result<Self, TryGetError> {
|
||||||
let json_str: String = res.try_get(pre, col).map_err(TryGetError::DbErr)?;
|
let json_str: String = res.try_get_by(idx).map_err(TryGetError::DbErr)?;
|
||||||
serde_json::from_str(&json_str).map_err(|e| TryGetError::DbErr(DbErr::Json(e.to_string())))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn try_get_by_index(res: &QueryResult, idx: usize) -> Result<Self, TryGetError> {
|
|
||||||
let json_str: String = res.try_get_by_index(idx).map_err(TryGetError::DbErr)?;
|
|
||||||
serde_json::from_str(&json_str).map_err(|e| TryGetError::DbErr(DbErr::Json(e.to_string())))
|
serde_json::from_str(&json_str).map_err(|e| TryGetError::DbErr(DbErr::Json(e.to_string())))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user