Implemented data model, database schema and database connection pool.
parent
df247b3ed1
commit
7cb61cd38a
@ -0,0 +1,70 @@
|
||||
CREATE TABLE company (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR NOT NULL,
|
||||
street VARCHAR,
|
||||
house_number VARCHAR,
|
||||
zip_code VARCHAR,
|
||||
city VARCHAR
|
||||
);
|
||||
|
||||
CREATE TABLE "user" (
|
||||
id SERIAL PRIMARY KEY,
|
||||
login VARCHAR NOT NULL,
|
||||
password VARCHAR NOT NULL,
|
||||
full_name VARCHAR,
|
||||
email VARCHAR,
|
||||
admin bool,
|
||||
get_emails bool
|
||||
);
|
||||
|
||||
CREATE TABLE property (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR NOT NULL,
|
||||
description VARCHAR,
|
||||
price NUMERIC(9, 2) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TYPE message_type AS ENUM ('NewReservation', 'NewReservationCust', 'ReservationApp', 'ReservationCanceled');
|
||||
|
||||
CREATE TABLE message (
|
||||
id SERIAL PRIMARY KEY,
|
||||
msg_type message_type NOT NULL ,
|
||||
subject VARCHAR NOT NULL ,
|
||||
"text" TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE opening_hour (
|
||||
id SERIAL PRIMARY KEY,
|
||||
day INTEGER NOT NULL ,
|
||||
"from" TIME NOT NULL ,
|
||||
"to" TIME NOT NULL,
|
||||
discount INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE customer (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
full_name VARCHAR NOT NULL,
|
||||
email VARCHAR NOT NULL,
|
||||
phone VARCHAR,
|
||||
discount INTEGER
|
||||
);
|
||||
|
||||
CREATE TYPE reservation_state AS ENUM ('New', 'Approved', 'Canceled');
|
||||
|
||||
CREATE TABLE reservation_sum (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
uuid uuid NOT NULL,
|
||||
date DATE NOT NULL,
|
||||
customer BIGINT REFERENCES customer(id) NOT NULL,
|
||||
price NUMERIC(9, 2) NOT NULL,
|
||||
state reservation_state
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE reservation (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
"from" TIME NOT NULL,
|
||||
"to" TIME NOT NULL,
|
||||
property INTEGER REFERENCES property(id) NOT NULL,
|
||||
summary BIGINT REFERENCES reservation_sum(id) NOT NULL
|
||||
);
|
@ -0,0 +1,82 @@
|
||||
use chrono::{NaiveDate, NaiveTime, Weekday};
|
||||
use rust_decimal::Decimal;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub struct Company {
|
||||
id: u16,
|
||||
name: String,
|
||||
street: String,
|
||||
house_number: String,
|
||||
zip_code: String,
|
||||
city: String,
|
||||
}
|
||||
|
||||
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<Reservation>,
|
||||
customer: Customer,
|
||||
price: Decimal,
|
||||
state: ReservationState,
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
use cfg_if::cfg_if;
|
||||
|
||||
pub mod data;
|
||||
|
||||
cfg_if!{
|
||||
if #[cfg(feature = "ssr")] {
|
||||
use sqlx::PgPool;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct AppData {
|
||||
db_pool: PgPool
|
||||
}
|
||||
|
||||
impl AppData {
|
||||
pub fn new(db_pool: PgPool) -> Self {
|
||||
Self {
|
||||
db_pool
|
||||
}
|
||||
}
|
||||
|
||||
pub fn db_pool(&self) -> &PgPool {
|
||||
&self.db_pool
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue