Add trait for db_model to model conversion
This commit is contained in:
parent
8dab4b9a50
commit
cb47dcda5c
5 changed files with 92 additions and 59 deletions
emgauwa-lib/src/handlers/v1
|
@ -7,7 +7,7 @@ use crate::db::errors::DatabaseError;
|
|||
use crate::db::DbTag;
|
||||
use crate::db::{DbPeriods, DbSchedule};
|
||||
use crate::handlers::errors::ApiError;
|
||||
use crate::models::Schedule;
|
||||
use crate::models::{convert_db_list, FromDbModel, Schedule};
|
||||
use crate::types::ScheduleUid;
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
|
@ -21,14 +21,11 @@ pub struct RequestSchedule {
|
|||
pub async fn index(pool: web::Data<Pool<Sqlite>>) -> Result<HttpResponse, ApiError> {
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let schedules = DbSchedule::get_all(&mut pool_conn).await?;
|
||||
let db_schedules = DbSchedule::get_all(&mut pool_conn).await?;
|
||||
|
||||
let return_schedules: Vec<Schedule> = schedules
|
||||
.into_iter()
|
||||
.map(|s| Schedule::from_schedule(s, &mut pool_conn))
|
||||
.collect();
|
||||
let schedules: Vec<Schedule> = convert_db_list(&mut pool_conn, db_schedules)?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(return_schedules))
|
||||
Ok(HttpResponse::Ok().json(schedules))
|
||||
}
|
||||
|
||||
#[get("/api/v1/schedules/tag/{tag}")]
|
||||
|
@ -43,14 +40,11 @@ pub async fn tagged(
|
|||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?;
|
||||
|
||||
let schedules = DbSchedule::get_by_tag(&mut pool_conn, &tag_db).await?;
|
||||
let db_schedules = DbSchedule::get_by_tag(&mut pool_conn, &tag_db).await?;
|
||||
|
||||
let return_schedules: Vec<Schedule> = schedules
|
||||
.into_iter()
|
||||
.map(|s| Schedule::from_schedule(s, &mut pool_conn))
|
||||
.collect();
|
||||
let schedules: Vec<Schedule> = convert_db_list(&mut pool_conn, db_schedules)?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(return_schedules))
|
||||
Ok(HttpResponse::Ok().json(schedules))
|
||||
}
|
||||
|
||||
#[get("/api/v1/schedules/{schedule_id}")]
|
||||
|
@ -67,7 +61,7 @@ pub async fn show(
|
|||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?;
|
||||
|
||||
let return_schedule = Schedule::from_schedule(schedule, &mut pool_conn);
|
||||
let return_schedule = Schedule::from_db_model(&mut pool_conn, schedule);
|
||||
Ok(HttpResponse::Ok().json(return_schedule))
|
||||
}
|
||||
|
||||
|
@ -84,7 +78,7 @@ pub async fn add(
|
|||
.set_tags(&mut pool_conn, data.tags.as_slice())
|
||||
.await?;
|
||||
|
||||
let return_schedule = Schedule::from_schedule(new_schedule, &mut pool_conn);
|
||||
let return_schedule = Schedule::from_db_model(&mut pool_conn, new_schedule);
|
||||
Ok(HttpResponse::Created().json(return_schedule))
|
||||
}
|
||||
|
||||
|
@ -109,24 +103,20 @@ pub async fn add_list(
|
|||
) -> Result<HttpResponse, ApiError> {
|
||||
let mut pool_conn = pool.acquire().await?;
|
||||
|
||||
let result: Vec<Result<DbSchedule, DatabaseError>> = data
|
||||
.as_slice()
|
||||
.iter()
|
||||
.map(|request_schedule| {
|
||||
futures::executor::block_on(add_list_single(&mut pool_conn, request_schedule))
|
||||
})
|
||||
.collect();
|
||||
|
||||
let mut return_schedules: Vec<Schedule> = Vec::new();
|
||||
for schedule in result {
|
||||
match schedule {
|
||||
Ok(schedule) => {
|
||||
return_schedules.push(Schedule::from_schedule(schedule, &mut pool_conn))
|
||||
let mut db_schedules: Vec<DbSchedule> = Vec::new();
|
||||
data.iter().try_for_each(|s| {
|
||||
let new_s = futures::executor::block_on(add_list_single(&mut pool_conn, s));
|
||||
match new_s {
|
||||
Ok(new_s) => {
|
||||
db_schedules.push(new_s);
|
||||
Ok(())
|
||||
}
|
||||
Err(e) => return Ok(HttpResponse::from(e)),
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
}
|
||||
Ok(HttpResponse::Created().json(return_schedules))
|
||||
})?;
|
||||
|
||||
let schedules: Vec<Schedule> = convert_db_list(&mut pool_conn, db_schedules)?;
|
||||
Ok(HttpResponse::Created().json(schedules))
|
||||
}
|
||||
|
||||
#[put("/api/v1/schedules/{schedule_id}")]
|
||||
|
@ -152,7 +142,7 @@ pub async fn update(
|
|||
.set_tags(&mut pool_conn, data.tags.as_slice())
|
||||
.await?;
|
||||
|
||||
let return_schedule = Schedule::from_schedule(schedule, &mut pool_conn);
|
||||
let return_schedule = Schedule::from_db_model(&mut pool_conn, schedule);
|
||||
Ok(HttpResponse::Ok().json(return_schedule))
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue