use chrono::{NaiveDate, NaiveTime, Weekday}; use rust_decimal::Decimal; use serde::{Deserialize, Serialize}; use uuid::Uuid; use validator::Validate; #[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq, Validate, Default)] #[cfg_attr(feature = "ssr", derive(sqlx::FromRow))] pub struct Company { id: i32, #[validate(length(min = 1,message = "Name cannot be empty"))] pub name: String, #[validate(length(min = 1,message = "Street cannot be empty"))] pub street: String, #[validate(length(min = 1,message = "House number cannot be empty"))] pub house_number: String, pub zip_code: String, pub city: String, } impl Company { pub fn id(&self) -> i32 { self.id } } pub struct User { id: u16, login: String, password: String, full_name: String, email: String, admin: bool, get_emails: bool, } pub struct Property { id: u16, name: String, description: String, price: Decimal } pub enum MessageType { NewReservation, NewReservationCust, ReservationApp, ReservationCanceled, } pub struct Message { id: u16, msg_type: MessageType, subject: String, text: String, } pub struct OpeningHour { id: u16, day: Weekday, from: NaiveTime, to: NaiveTime, discount: u8 } pub struct Customer { id: u128, full_name: String, email: String, phone: String, discount: u8 } pub enum ReservationState { New, Approved, Canceled, } pub struct Reservation { id: u128, from: NaiveTime, to: NaiveTime, property: Property, } pub struct ReservationSum { id: u128, uuid: Uuid, date: NaiveDate, items: Vec, customer: Customer, price: Decimal, state: ReservationState, }