// SPDX-FileCopyrightText: 2024 Simon Bruder // // SPDX-License-Identifier: AGPL-3.0-or-later use serde::{Deserialize, Serialize}; use time::OffsetDateTime; use uuid::Uuid; #[derive(Deserialize)] pub enum EntityType { Item, ItemClass, } #[derive(Clone, Debug, Serialize, sqlx::FromRow)] pub struct Item { pub id: Uuid, pub name: Option, pub parent: Option, pub class: Uuid, #[serde(with = "time::serde::iso8601")] pub created_at: OffsetDateTime, pub short_id: i32, pub original_packaging: Option, pub description: String, } #[derive(Debug, Deserialize)] pub struct NewItem { #[serde(default)] pub name: Option, #[serde(default)] pub parent: Option, pub class: Uuid, pub original_packaging: Option, pub description: String, } #[derive(Clone, Debug, Serialize)] pub struct ItemClass { pub id: Uuid, pub name: String, #[serde(skip_serializing_if = "Option::is_none")] pub parent: Option, #[serde(with = "time::serde::iso8601")] pub created_at: OffsetDateTime, pub description: String, } #[derive(Debug, Deserialize)] pub struct NewItemClass { pub name: String, #[serde(default)] pub parent: Option, pub description: String, }