Use rest-types to export TOs to the frontend

This commit is contained in:
Simon Goller 2024-06-06 08:29:56 +02:00
parent 91559224e5
commit 764faa6e6b
9 changed files with 257 additions and 217 deletions

View file

@ -5,49 +5,12 @@ use axum::extract::Path;
use axum::routing::{delete, get, post, put};
use axum::{extract::State, response::Response};
use axum::{Extension, Json, Router};
use serde::{Deserialize, Serialize};
use service::sales_person::SalesPerson;
use rest_types::SalesPersonTO;
use service::sales_person::SalesPersonService;
use uuid::Uuid;
use crate::{error_handler, Context, RestError, RestStateDef};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct SalesPersonTO {
#[serde(default)]
pub id: Uuid,
pub name: Arc<str>,
#[serde(default)]
pub inactive: bool,
#[serde(default)]
pub deleted: Option<time::PrimitiveDateTime>,
#[serde(rename = "$version")]
#[serde(default)]
pub version: Uuid,
}
impl From<&SalesPerson> for SalesPersonTO {
fn from(sales_person: &SalesPerson) -> Self {
Self {
id: sales_person.id,
name: sales_person.name.clone(),
inactive: sales_person.inactive,
deleted: sales_person.deleted,
version: sales_person.version,
}
}
}
impl From<&SalesPersonTO> for SalesPerson {
fn from(sales_person: &SalesPersonTO) -> Self {
Self {
id: sales_person.id,
name: sales_person.name.clone(),
inactive: sales_person.inactive,
deleted: sales_person.deleted,
version: sales_person.version,
}
}
}
pub fn generate_route<RestState: RestStateDef>() -> Router<RestState> {
Router::new()
.route("/", get(get_all_sales_persons::<RestState>))