edited scheme
This commit is contained in:
@@ -1,100 +0,0 @@
|
||||
-- All necessary tables for the borrowing system
|
||||
|
||||
-- IMPORTANT: You need mySQL version 8.0 or newer!
|
||||
|
||||
CREATE TABLE `users` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(100) NOT NULL,
|
||||
`password` varchar(255) NOT NULL,
|
||||
`role` int DEFAULT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username` (`username`)
|
||||
);
|
||||
|
||||
CREATE TABLE `admins` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(100) NOT NULL,
|
||||
`password` varchar(255) NOT NULL,
|
||||
`first_name` varchar(255) NOT NULL,
|
||||
`last_name` varchar(255) NOT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username` (`username`)
|
||||
);
|
||||
|
||||
CREATE TABLE `loans` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(100) NOT NULL,
|
||||
`loan_code` int NOT NULL,
|
||||
`start_date` timestamp NOT NULL,
|
||||
`end_date` timestamp NOT NULL,
|
||||
`take_date` timestamp NULL DEFAULT NULL,
|
||||
`returned_date` timestamp NULL DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`loaned_items_id` json NOT NULL DEFAULT ('[]'),
|
||||
`loaned_items_name` json NOT NULL DEFAULT ('[]'),
|
||||
`deleted` bool NOT NULL DEFAULT false,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `loan_code` (`loan_code`)
|
||||
);
|
||||
|
||||
CREATE TABLE `items` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`item_name` varchar(255) NOT NULL,
|
||||
`can_borrow_role` INT NOT NULL,
|
||||
`inSafe` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `item_name` (`item_name`)
|
||||
);
|
||||
|
||||
CREATE TABLE `lockers` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`item` varchar(255) NOT NULL,
|
||||
`locker_number` int NOT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `item` (`item`),
|
||||
UNIQUE KEY `locker_number` (`locker_number`)
|
||||
);
|
||||
|
||||
CREATE TABLE `apiKeys` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`apiKey` int NOT NULL UNIQUE,
|
||||
`user` VARCHAR(255) NOT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
INSERT INTO `items` (`item_name`, `can_borrow_role`, `inSafe`) VALUES
|
||||
('DJI 1er Mikro', 4, 1),
|
||||
('DJI 2er Mikro 1', 4, 1),
|
||||
('DJI 2er Mikro 2', 4, 1),
|
||||
('Rode Richt Mikrofon', 2, 1),
|
||||
('Kamera Stativ', 1, 0),
|
||||
('SONY Kamera - inkl. Akkus und Objektiv', 1, 1),
|
||||
('MacBook inkl. Adapter', 2, 0),
|
||||
('SD Karten', 3, 0),
|
||||
('Kameragimbal', 1, 0),
|
||||
('ATEM MINI PRO', 1, 1),
|
||||
('Handygimbal', 4, 0),
|
||||
('Kameralüfter', 1, 1),
|
||||
('Kleine Kamera 1 - inkl. Objektiv', 2, 1),
|
||||
('Kleine Kamera 2 - inkl. Objektiv', 2, 1);
|
||||
|
||||
INSERT INTO `lockers` (`item`, `locker_number`) VALUES
|
||||
('DJI 1er Mikro', 1),
|
||||
('DJI 2er Mikro 1', 2),
|
||||
('DJI 2er Mikro 2', 3),
|
||||
('Rode Richt Mikrofon', 4),
|
||||
('Kamera Stativ', 5),
|
||||
('SONY Kamera - inkl. Akkus und Objektiv', 6),
|
||||
('MacBook inkl. Adapter', 7),
|
||||
('SD Karten', 8),
|
||||
('Kameragimbal', 9),
|
||||
('ATEM MINI PRO', 10),
|
||||
('Handygimbal', 11),
|
||||
('Kameralüfter', 12),
|
||||
('Kleine Kamera 1 - inkl. Objektiv', 13),
|
||||
('Kleine Kamera 2 - inkl. Objektiv', 14);
|
||||
BIN
backend/scheme.xlsx
Normal file
BIN
backend/scheme.xlsx
Normal file
Binary file not shown.
89
backend/schemeV2.mock_data.sql
Normal file
89
backend/schemeV2.mock_data.sql
Normal file
@@ -0,0 +1,89 @@
|
||||
USE borrow_system_new;
|
||||
|
||||
-- Optional: keep insert order predictable
|
||||
SET time_zone = '+00:00';
|
||||
|
||||
-- Users
|
||||
INSERT INTO users (username, password, first_name, last_name, role, is_admin)
|
||||
VALUES
|
||||
('alice', 'password123', 'Alice', 'Andersen', 1, false),
|
||||
('bob', 'password123', 'Bob', 'Berg', 2, false),
|
||||
('carol', 'password123', 'Carol', 'Christie', 2, false),
|
||||
('dave', 'password123', 'Dave', 'Dawson', 1, false),
|
||||
('eve', 'password123', 'Eve', 'Evans', 1, false),
|
||||
('admin', 'password123', 'Admin', 'User', 3, true);
|
||||
|
||||
-- Items
|
||||
INSERT INTO items (item_name, can_borrow_role, in_safe, last_borrowed_person, currently_borrowing)
|
||||
VALUES
|
||||
('Canon EOS 90D Camera', 1, false, 'bob', 'alice'),
|
||||
('Rode NT1 Microphone', 1, true, 'dave', NULL),
|
||||
('MacBook Pro 13', 2, false, 'bob', 'carol'),
|
||||
('Tripod Manfrotto', 1, false, 'carol', 'alice'),
|
||||
('LED Panel Aputure', 1, true, NULL, NULL),
|
||||
('Zoom H6 Recorder', 1, true, 'dave', NULL),
|
||||
('Wacom Intuos Tablet', 1, true, NULL, NULL),
|
||||
('DJI Ronin-S Gimbal', 2, true, NULL, NULL),
|
||||
('Sony A7 III Body', 2, false, 'carol', 'eve'),
|
||||
('Sigma 24-70mm Lens', 2, false, 'carol', 'eve');
|
||||
|
||||
-- Capture item IDs for JSON arrays
|
||||
SET @id_canon = (SELECT id FROM items WHERE item_name='Canon EOS 90D Camera');
|
||||
SET @id_rode = (SELECT id FROM items WHERE item_name='Rode NT1 Microphone');
|
||||
SET @id_mac13 = (SELECT id FROM items WHERE item_name='MacBook Pro 13');
|
||||
SET @id_tripod = (SELECT id FROM items WHERE item_name='Tripod Manfrotto');
|
||||
SET @id_led = (SELECT id FROM items WHERE item_name='LED Panel Aputure');
|
||||
SET @id_zoom = (SELECT id FROM items WHERE item_name='Zoom H6 Recorder');
|
||||
SET @id_tablet = (SELECT id FROM items WHERE item_name='Wacom Intuos Tablet');
|
||||
SET @id_ronin = (SELECT id FROM items WHERE item_name='DJI Ronin-S Gimbal');
|
||||
SET @id_sony = (SELECT id FROM items WHERE item_name='Sony A7 III Body');
|
||||
SET @id_sigma = (SELECT id FROM items WHERE item_name='Sigma 24-70mm Lens');
|
||||
|
||||
-- Loans
|
||||
INSERT INTO loans (
|
||||
username, loan_code, start_date, end_date, take_date, returned_date, loaned_items_id, loaned_items_name, deleted
|
||||
) VALUES
|
||||
-- Ongoing loan: Alice has Canon + Tripod
|
||||
('alice', 100001, '2025-10-01 09:00:00', '2025-10-08 17:00:00', '2025-10-01 09:15:00', NULL,
|
||||
JSON_ARRAY(@id_canon, @id_tripod),
|
||||
JSON_ARRAY('Canon EOS 90D Camera','Tripod Manfrotto'),
|
||||
false
|
||||
),
|
||||
-- Ongoing loan: Carol has MacBook Pro 13
|
||||
('carol', 100002, '2025-10-03 10:00:00', '2025-10-10 16:00:00', '2025-10-03 10:05:00', NULL,
|
||||
JSON_ARRAY(@id_mac13),
|
||||
JSON_ARRAY('MacBook Pro 13'),
|
||||
false
|
||||
),
|
||||
-- Returned loan: Dave had Zoom + Rode
|
||||
('dave', 100003, '2025-09-10 08:30:00', '2025-09-12 16:00:00', '2025-09-10 08:45:00', '2025-09-12 15:40:00',
|
||||
JSON_ARRAY(@id_zoom, @id_rode),
|
||||
JSON_ARRAY('Zoom H6 Recorder','Rode NT1 Microphone'),
|
||||
false
|
||||
),
|
||||
-- Cancelled/deleted booking (never taken): Bob reserved Tablet
|
||||
('bob', 100004, '2025-10-05 09:00:00', '2025-10-06 09:00:00', NULL, NULL,
|
||||
JSON_ARRAY(@id_tablet),
|
||||
JSON_ARRAY('Wacom Intuos Tablet'),
|
||||
true
|
||||
),
|
||||
-- Ongoing loan, likely overdue: Eve has Sony + Sigma
|
||||
('eve', 100005, '2025-10-15 11:00:00', '2025-10-20 12:00:00', '2025-10-15 11:10:00', NULL,
|
||||
JSON_ARRAY(@id_sony, @id_sigma),
|
||||
JSON_ARRAY('Sony A7 III Body','Sigma 24-70mm Lens'),
|
||||
false
|
||||
),
|
||||
-- Completed single-day loan: Bob used LED panel
|
||||
('bob', 100006, '2025-09-20 13:00:00', '2025-09-20 18:00:00', '2025-09-20 13:05:00', '2025-09-20 17:30:00',
|
||||
JSON_ARRAY(@id_led),
|
||||
JSON_ARRAY('LED Panel Aputure'),
|
||||
false
|
||||
);
|
||||
|
||||
-- API keys
|
||||
INSERT INTO apiKeys (api_key, username)
|
||||
VALUES
|
||||
(71002123, 'alice'),
|
||||
(71002124, 'bob'),
|
||||
(71002125, 'carol'),
|
||||
(99999999, 'admin');
|
||||
@@ -1,110 +1,57 @@
|
||||
-- All necessary tables for the borrowing system
|
||||
use borrow_system_new;
|
||||
|
||||
-- IMPORTANT: You need mySQL version 8.0 or newer!
|
||||
CREATE TABLE users (
|
||||
id int NOT NULL AUTO_INCREMENT,
|
||||
username varchar(100) NOT NULL UNIQUE,
|
||||
password varchar(255) NOT NULL,
|
||||
first_name varchar(255) NOT NULL,
|
||||
last_name varchar(255) NOT NULL,
|
||||
role int NOT NULL,
|
||||
is_admin bool NOT NULL DEFAULT false,
|
||||
entry_created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
entry_updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE `users` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(100) NOT NULL,
|
||||
`password` varchar(255) NOT NULL,
|
||||
`role` int DEFAULT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username` (`username`)
|
||||
CREATE TABLE loans (
|
||||
id int NOT NULL AUTO_INCREMENT,
|
||||
username varchar(100) NOT NULL,
|
||||
loan_code int NOT NULL UNIQUE,
|
||||
start_date timestamp NOT NULL,
|
||||
end_date timestamp NOT NULL,
|
||||
take_date timestamp NULL DEFAULT NULL,
|
||||
returned_date timestamp NULL DEFAULT NULL,
|
||||
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
loaned_items_id json NOT NULL DEFAULT ('[]'),
|
||||
loaned_items_name json NOT NULL DEFAULT ('[]'),
|
||||
deleted bool NOT NULL DEFAULT false,
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT fk_loans_username
|
||||
FOREIGN KEY (username) REFERENCES users(username)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE items (
|
||||
id int NOT NULL AUTO_INCREMENT,
|
||||
item_name varchar(255) NOT NULL UNIQUE,
|
||||
can_borrow_role INT NOT NULL,
|
||||
in_safe bool NOT NULL DEFAULT true,
|
||||
entry_created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
entry_updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
last_borrowed_person varchar(255) DEFAULT NULL,
|
||||
currently_borrowing varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE `users` (
|
||||
id int NOT NULL AUTO_INCREMENT,
|
||||
username varchar(100) NOT NULL UNIQUE,
|
||||
password varchar(255) NOT NULL,
|
||||
role int NOT NULL,
|
||||
entry_created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
isAdmin boolean NOT NULL DEFAULT false,
|
||||
PRIMARY KEY (id)
|
||||
)
|
||||
|
||||
CREATE TABLE `admins` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(100) NOT NULL,
|
||||
`password` varchar(255) NOT NULL,
|
||||
`first_name` varchar(255) NOT NULL,
|
||||
`last_name` varchar(255) NOT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username` (`username`)
|
||||
);
|
||||
|
||||
CREATE TABLE `loans` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(100) NOT NULL,
|
||||
`loan_code` int NOT NULL,
|
||||
`start_date` timestamp NOT NULL,
|
||||
`end_date` timestamp NOT NULL,
|
||||
`take_date` timestamp NULL DEFAULT NULL,
|
||||
`returned_date` timestamp NULL DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`loaned_items_id` json NOT NULL DEFAULT ('[]'),
|
||||
`loaned_items_name` json NOT NULL DEFAULT ('[]'),
|
||||
`deleted` bool NOT NULL DEFAULT false,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `loan_code` (`loan_code`)
|
||||
);
|
||||
|
||||
CREATE TABLE `items` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`item_name` varchar(255) NOT NULL,
|
||||
`can_borrow_role` INT NOT NULL,
|
||||
`inSafe` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `item_name` (`item_name`)
|
||||
);
|
||||
|
||||
CREATE TABLE `lockers` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`item` varchar(255) NOT NULL,
|
||||
`locker_number` int NOT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `item` (`item`),
|
||||
UNIQUE KEY `locker_number` (`locker_number`)
|
||||
);
|
||||
|
||||
CREATE TABLE `apiKeys` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`apiKey` int NOT NULL UNIQUE,
|
||||
`user` VARCHAR(255) NOT NULL,
|
||||
`entry_created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
INSERT INTO `items` (`item_name`, `can_borrow_role`, `inSafe`) VALUES
|
||||
('DJI 1er Mikro', 4, 1),
|
||||
('DJI 2er Mikro 1', 4, 1),
|
||||
('DJI 2er Mikro 2', 4, 1),
|
||||
('Rode Richt Mikrofon', 2, 1),
|
||||
('Kamera Stativ', 1, 0),
|
||||
('SONY Kamera - inkl. Akkus und Objektiv', 1, 1),
|
||||
('MacBook inkl. Adapter', 2, 0),
|
||||
('SD Karten', 3, 0),
|
||||
('Kameragimbal', 1, 0),
|
||||
('ATEM MINI PRO', 1, 1),
|
||||
('Handygimbal', 4, 0),
|
||||
('Kameralüfter', 1, 1),
|
||||
('Kleine Kamera 1 - inkl. Objektiv', 2, 1),
|
||||
('Kleine Kamera 2 - inkl. Objektiv', 2, 1);
|
||||
|
||||
INSERT INTO `lockers` (`item`, `locker_number`) VALUES
|
||||
('DJI 1er Mikro', 1),
|
||||
('DJI 2er Mikro 1', 2),
|
||||
('DJI 2er Mikro 2', 3),
|
||||
('Rode Richt Mikrofon', 4),
|
||||
('Kamera Stativ', 5),
|
||||
('SONY Kamera - inkl. Akkus und Objektiv', 6),
|
||||
('MacBook inkl. Adapter', 7),
|
||||
('SD Karten', 8),
|
||||
('Kameragimbal', 9),
|
||||
('ATEM MINI PRO', 10),
|
||||
('Handygimbal', 11),
|
||||
('Kameralüfter', 12),
|
||||
('Kleine Kamera 1 - inkl. Objektiv', 13),
|
||||
('Kleine Kamera 2 - inkl. Objektiv', 14);
|
||||
CREATE TABLE apiKeys (
|
||||
id int NOT NULL AUTO_INCREMENT,
|
||||
api_key int NOT NULL UNIQUE,
|
||||
username VARCHAR(100) NOT NULL,
|
||||
entry_created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
CONSTRAINT fk_apikeys_username
|
||||
FOREIGN KEY (username) REFERENCES users(username)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
) ENGINE=InnoDB;
|
||||
@@ -53,5 +53,20 @@ services:
|
||||
ports:
|
||||
- "3309:3306"
|
||||
|
||||
mysql-new:
|
||||
container_name: borrow_system-mysql-new
|
||||
image: mysql:8.0
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
|
||||
MYSQL_DATABASE: borrow_system_new
|
||||
TZ: Europe/Berlin
|
||||
volumes:
|
||||
- mysql-data-new:/var/lib/mysql
|
||||
- ./mysql-timezone.cnf:/etc/mysql/conf.d/timezone.cnf:ro
|
||||
ports:
|
||||
- "3310:3306"
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
mysql-data-new:
|
||||
|
||||
Reference in New Issue
Block a user