testing
This commit is contained in:
111
sql.schema
Normal file
111
sql.schema
Normal file
@@ -0,0 +1,111 @@
|
||||
-- ============================================================
|
||||
-- USERS – Benutzerkonto + spätere Rechnungs-/Zahlungsinfos
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
-- Login
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
email VARCHAR(150) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
avatar_path VARCHAR(255) NULL,
|
||||
|
||||
-- Persönliche Daten
|
||||
first_name VARCHAR(100) NULL,
|
||||
last_name VARCHAR(100) NULL,
|
||||
|
||||
-- spätere Rechnungsdaten / Billing
|
||||
company_name VARCHAR(255) NULL,
|
||||
street VARCHAR(255) NULL,
|
||||
postal_code VARCHAR(20) NULL,
|
||||
city VARCHAR(255) NULL,
|
||||
country VARCHAR(100) NULL,
|
||||
vat_id VARCHAR(50) NULL,
|
||||
|
||||
-- spätere Pro-Features / Limits
|
||||
plan ENUM('free', 'pro', 'enterprise') DEFAULT 'free',
|
||||
plan_valid_until DATETIME NULL,
|
||||
|
||||
-- Sicherheit
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
last_login_at DATETIME NULL,
|
||||
failed_logins INT DEFAULT 0,
|
||||
is_locked TINYINT(1) DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- USB DEVICES – vom Nutzer gespeicherte USB-Sticks
|
||||
-- Ein Benutzer kann mehrere Sticks speichern.
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS usb_devices (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
|
||||
serial_number VARCHAR(255) NULL,
|
||||
manufacturer VARCHAR(255) NULL,
|
||||
model_name VARCHAR(255) NULL,
|
||||
usb_type ENUM('USB 2.0', 'USB 3.0', 'USB 3.1', 'USB 3.2', 'USB 4.0') NULL,
|
||||
|
||||
capacity_bytes BIGINT UNSIGNED NULL,
|
||||
advertised_capacity_bytes BIGINT UNSIGNED NULL,
|
||||
|
||||
read_speed_mbps FLOAT NULL,
|
||||
write_speed_mbps FLOAT NULL,
|
||||
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- USB TEST RESULTS – Schnelltest + Pro-Test
|
||||
-- Jedes Testergebnis gehört zu einem Stick.
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS usb_tests (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
usb_device_id BIGINT UNSIGNED NOT NULL,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
|
||||
-- Testtyp
|
||||
test_type ENUM('quick', 'standard', 'deep', 'pro') NOT NULL,
|
||||
|
||||
-- Ergebniswerte
|
||||
test_start DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
test_end DATETIME NULL,
|
||||
|
||||
read_speed_mbps FLOAT NULL,
|
||||
write_speed_mbps FLOAT NULL,
|
||||
|
||||
integrity_ok TINYINT(1) NULL,
|
||||
checksum_sha256 VARCHAR(255) NULL,
|
||||
|
||||
-- Pro-Modus Zusatzwerte (f3, badblocks etc.)
|
||||
f3_status ENUM('unknown', 'pass', 'fail', 'warning') DEFAULT 'unknown',
|
||||
f3_real_capacity_bytes BIGINT UNSIGNED NULL,
|
||||
f3_lost_bytes BIGINT UNSIGNED NULL,
|
||||
|
||||
badblocks_errors INT NULL,
|
||||
|
||||
-- Metadaten
|
||||
test_report_json JSON NULL,
|
||||
ip_address VARCHAR(45) NULL, -- ipv6 kompatibel
|
||||
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (usb_device_id) REFERENCES usb_devices(id)
|
||||
ON DELETE CASCADE,
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
Reference in New Issue
Block a user