refactor: result type, removing rear.admin
This commit is contained in:
@@ -45,25 +45,25 @@ impl DepotRepository for UserRepository {
|
||||
.set_widget("is_superuser", Widget::checkbox())
|
||||
}
|
||||
|
||||
async fn get(&self, model: &RepositoryContext, id: &Self::Key) -> Option<RepositoryItem> {
|
||||
async fn get(&self, model: &RepositoryContext, id: &Self::Key) -> RepositoryResult {
|
||||
let id: i32 = *id as i32; // use try_into() instead.
|
||||
let get_user = entity::User::find_by_id(id).one(&self.connection).await;
|
||||
match get_user {
|
||||
Ok(get_user) => {
|
||||
if let Some(user) = get_user {
|
||||
let id = user.id.to_string();
|
||||
match serde_json::to_value(&user) {
|
||||
Ok(item) => {
|
||||
return Some(model.build_item(&*id, item));
|
||||
}
|
||||
Err(_) => return None,
|
||||
if let Ok(get_user) = get_user {
|
||||
if let Some(user) = get_user {
|
||||
let id = user.id.to_string();
|
||||
match serde_json::to_value(&user) {
|
||||
Ok(item) => {
|
||||
return Ok(RepositoryResponse::ItemOnly(model.build_item(&*id, item)));
|
||||
}
|
||||
Err(_) => {
|
||||
return Err(RepositoryError::UnknownError(
|
||||
"JSON Error creating value".to_owned(),
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(_) => return None,
|
||||
}
|
||||
|
||||
None
|
||||
Ok(RepositoryResponse::NoItem)
|
||||
}
|
||||
|
||||
async fn list(&self, model: &RepositoryContext) -> RepositoryList {
|
||||
@@ -87,7 +87,7 @@ impl DepotRepository for UserRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async fn create(&mut self, model: &RepositoryContext, data: Value) -> Option<RepositoryItem> {
|
||||
async fn create(&mut self, model: &RepositoryContext, data: Value) -> RepositoryResult {
|
||||
if let Value::Object(data) = data {
|
||||
let username = data.get("username").unwrap().as_str().unwrap();
|
||||
let password = data.get("password").unwrap().as_str().unwrap();
|
||||
@@ -119,10 +119,11 @@ impl DepotRepository for UserRepository {
|
||||
|
||||
if let Ok(user) = user.insert(&self.connection).await {
|
||||
let id = user.id.to_string();
|
||||
return Some(model.build_item(&*id, serde_json::to_value(&user).unwrap()));
|
||||
let item = model.build_item(&*id, serde_json::to_value(&user).unwrap());
|
||||
return Ok(RepositoryResponse::ItemOnly(item));
|
||||
}
|
||||
}
|
||||
None
|
||||
Ok(RepositoryResponse::NoItem)
|
||||
}
|
||||
|
||||
async fn update(
|
||||
@@ -130,7 +131,7 @@ impl DepotRepository for UserRepository {
|
||||
model: &RepositoryContext,
|
||||
id: &Self::Key,
|
||||
data: Value,
|
||||
) -> Option<RepositoryItem> {
|
||||
) -> RepositoryResult {
|
||||
let id: i32 = *id as i32;
|
||||
let user: Option<entity::user::Model> = entity::User::find_by_id(id)
|
||||
.one(&self.connection)
|
||||
@@ -171,10 +172,12 @@ impl DepotRepository for UserRepository {
|
||||
// update
|
||||
if let Ok(user) = user.update(&self.connection).await {
|
||||
let id = user.id.to_string();
|
||||
return Some(model.build_item(&*id, serde_json::to_value(&user).unwrap()));
|
||||
return Ok(RepositoryResponse::ItemOnly(
|
||||
model.build_item(&*id, serde_json::to_value(&user).unwrap()),
|
||||
));
|
||||
}
|
||||
|
||||
None
|
||||
Ok(RepositoryResponse::NoItem)
|
||||
}
|
||||
|
||||
async fn replace(
|
||||
@@ -182,7 +185,7 @@ impl DepotRepository for UserRepository {
|
||||
model: &RepositoryContext,
|
||||
id: &Self::Key,
|
||||
data: Value,
|
||||
) -> Option<RepositoryItem> {
|
||||
) -> RepositoryResult {
|
||||
self.update(model, id, data).await
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user