diff --git a/.gitignore b/.gitignore index 916adce..3fd3dde 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,7 @@ go.work !*.html !go.sum !go.mod +!*.sql !README.md !LICENSE diff --git a/internal/database/schema.sql b/internal/database/schema.sql new file mode 100644 index 0000000..210d7b4 --- /dev/null +++ b/internal/database/schema.sql @@ -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 +); + +