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