refactor: result type, removing rear.admin

This commit is contained in:
2024-07-23 00:18:04 +02:00
parent 966291dbd9
commit 843e432ec4
16 changed files with 127 additions and 1140 deletions

View File

@@ -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
}