added schema.sql

This commit is contained in:
$(pass /github/name)
2024-07-07 16:54:21 +02:00
parent 4ba0ce11d4
commit 9ae699b122
2 changed files with 112 additions and 0 deletions

1
.gitignore vendored
View File

@@ -38,6 +38,7 @@ go.work
!*.html
!go.sum
!go.mod
!*.sql
!README.md
!LICENSE

View File

@@ -0,0 +1,111 @@
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
phone VARCHAR(15),
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
salt VARCHAR(255) NOT NULL,
drivers_id_checked BOOLEAN,
role_id INT,
payment_status VARCHAR(50),
membership_status VARCHAR(50),
date_of_birth DATE,
address VARCHAR(255),
profile_picture VARCHAR(255),
notes TEXT,
status VARCHAR(50),
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE SET NULL
);
CREATE TABLE banking (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
iban VARCHAR(34) NOT NULL,
bic VARCHAR(11) NOT NULL,
mandate_reference VARCHAR(50),
mandate_date_signed DATE,
bank_name VARCHAR(100),
account_holder_name VARCHAR(100),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE membership (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
membership_fee DECIMAL(10, 2),
rental_fee DECIMAL(10, 2),
included_hours_per_year INT,
remaining_hours_per_year INT,
included_hours_per_month INT,
remaining_hours_per_month INT,
membership_model VARCHAR(50),
membership_id VARCHAR(50),
membership_start_date DATE,
membership_end_date DATE,
discount_rate DECIMAL(5, 2),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE rentals (
id INT PRIMARY KEY AUTO_INCREMENT,
car_id INT,
user_id INT,
start_datetime DATETIME NOT NULL,
end_datetime DATETIME NOT NULL,
booking_datetime DATETIME NOT NULL,
total_cost DECIMAL(10, 2),
payment_method VARCHAR(50),
status VARCHAR(50),
FOREIGN KEY (car_id) REFERENCES cars(id),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
);
CREATE TABLE roles (
id INT PRIMARY KEY AUTO_INCREMENT,
role_name VARCHAR(50) NOT NULL
);
CREATE TABLE consents (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
modified DATE,
created DATE,
first_name VARCHAR(255),
last_name VARCHAR(255),
email VARCHAR(255),
type VARCHAR(255),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
);
CREATE TABLE cars (
id INT PRIMARY KEY AUTO_INCREMENT,
licence_plate VARCHAR(15) NOT NULL UNIQUE,
insurance VARCHAR(255) NOT NULL,
acquired_date DATE NOT NULL,
monthly_expenses DECIMAL(10, 2) NOT NULL,
make VARCHAR(50),
model VARCHAR(50),
year INT,
mileage INT,
last_service_date DATE,
status VARCHAR(50),
vin VARCHAR(17) UNIQUE,
fuel_type VARCHAR(20),
gps BOOLEAN,
current_location VARCHAR(255),
service_history TEXT
);
CREATE TABLE email_verifications (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
verification_token VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL,
verified_at DATETIME,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);