From 752afd7d883a66ee9d6d54a5ffa19925d1886942 Mon Sep 17 00:00:00 2001 From: "theis.gaedigk" Date: Mon, 18 Aug 2025 16:57:28 +0200 Subject: [PATCH] changed data structure --- backend/scheme.sql | 54 ++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 4 +-- other/data_structure.xlsx | Bin 11735 -> 11775 bytes 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/backend/scheme.sql b/backend/scheme.sql index e69de29..65b6e12 100644 --- a/backend/scheme.sql +++ b/backend/scheme.sql @@ -0,0 +1,54 @@ +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(100) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL +); + +CREATE TABLE items ( + id INT AUTO_INCREMENT PRIMARY KEY, + item_name VARCHAR(255) NOT NULL UNIQUE, + can_borrow_role VARCHAR(255) NOT NULL +); + +CREATE TABLE loans ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(100) NOT NULL, + loan_code INT(6) NOT NULL UNIQUE, + start_date TIMESTAMP NOT NULL, + end_date TIMESTAMP NOT NULL, + returned_date TIMESTAMP, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE lockers ( + id INT AUTO_INCREMENT PRIMARY KEY, + item VARCHAR(255) NOT NULL UNIQUE, + locker_number INT NOT NULL UNIQUE +); + + +-- Mock data + +-- Users +INSERT INTO users (username, password) VALUES +('alice', 'password123'), +('bob', 'securepass'), +('charlie', 'charliepwd'); + +-- Items +INSERT INTO items (item_name, can_borrow_role) VALUES +('Laptop', 'student'), +('Projector', 'teacher'), +('Tablet', 'student,teacher'); + +-- Loans +INSERT INTO loans (username, loan_code, start_date, end_date, returned_date) VALUES +('alice', 100001, '2025-08-01 09:00:00', '2025-08-10 17:00:00', NULL), +('bob', 100002, '2025-08-05 10:00:00', '2025-08-12 15:00:00', '2025-08-12 14:30:00'), +('charlie', 100003, '2025-08-07 11:00:00', '2025-08-15 16:00:00', NULL); + +-- Lockers +INSERT INTO lockers (item, locker_number) VALUES +('Laptop', 101), +('Projector', 102), +('Tablet', 103); \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 3c0748c..808f3ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: environment: DB_HOST: mysql DB_USER: root - DB_PASSWORD: ${MYSQL_ROOT_PASSWORD} + DB_PASSWORD: ${DB_PASSWORD} DB_NAME: borrow_system depends_on: - mysql @@ -32,7 +32,7 @@ services: image: mysql:8.0 restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: borrow_system volumes: - mysql-data:/var/lib/mysql diff --git a/other/data_structure.xlsx b/other/data_structure.xlsx index ccffbad3141305a8cad5e54d44caa3a863ed8c3a..624b034ddfb567b549220f03dec6ae4f19a35938 100644 GIT binary patch delta 3205 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 delta 3147 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