Files
WKVS/docker/database/wkvs-database-template.sql
T

335 lines
13 KiB
SQL

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `audiofiles`
-- --------------------------------------------------------
CREATE TABLE `audiofiles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`file_name` varchar(1024) NOT NULL,
`file_path` varchar(1024) NOT NULL,
`edited_by` int(11) DEFAULT NULL,
`timestamp` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `disziplinen`
-- --------------------------------------------------------
CREATE TABLE `disziplinen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(1024) DEFAULT NULL,
`start_index` int(11) DEFAULT NULL,
`color_kampfrichter` char(7) NOT NULL DEFAULT '#424242',
`audiofile` tinyint(1) DEFAULT NULL,
`audiofile_max_duration` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `einmal_links`
-- --------------------------------------------------------
CREATE TABLE `einmal_links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(1000) DEFAULT NULL,
`user_id` int(11) NOT NULL DEFAULT 0,
`type` enum('login','pwreset','create_profile','') NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT current_timestamp(),
`expires_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
DELIMITER $$
CREATE TRIGGER `before_insert_login_tokens`
BEFORE INSERT ON `einmal_links`
FOR EACH ROW
BEGIN
IF NEW.url IS NULL THEN
SET NEW.url = HEX(RANDOM_BYTES(32));
END IF;
END$$
DELIMITER ;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `gruppen`
-- --------------------------------------------------------
CREATE TABLE `gruppen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT 'KEIN NAME',
`order_index` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `gruppen_zeiten`
-- --------------------------------------------------------
CREATE TABLE `gruppen_zeiten` (
`zeitplan_id` int(11) NOT NULL,
`start_time` time NOT NULL,
`end_time` time DEFAULT NULL,
`abt_id` int(11) NOT NULL,
UNIQUE KEY `unique_index` (`zeitplan_id`,`abt_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `intern_benutzende`
-- --------------------------------------------------------
CREATE TABLE `intern_benutzende` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(191) DEFAULT NULL,
`name_person` varchar(255) DEFAULT NULL,
`password_hash` varchar(255) DEFAULT NULL,
`password_cipher` text DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`edited_by` varchar(20) NOT NULL DEFAULT '0',
`freigabe` varchar(500) NOT NULL DEFAULT 'keine',
`login_active` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username_page_unique` (`username`,`password_hash`) USING BTREE,
KEY `indexFreigabe` (`freigabe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Admin Seed Entry (Uses Argon2id placeholder for replacement via bash sed script)
INSERT INTO `intern_benutzende` (`username`, `password_hash`, `password_cipher`, `freigabe`, `login_active`)
VALUES ('admin', '__ARGON_HASH_PLACEHOLDER__', 'not_set', '{"types":["wk_leitung","trainer","kampfrichter"],"freigabenTrainer":["admin"],"freigabenKampfrichter":["A"]}', 1);
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `kategorien`
-- --------------------------------------------------------
CREATE TABLE `kategorien` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`programm` text NOT NULL,
`order_index` int(11) DEFAULT NULL,
`preis` decimal(10,2) DEFAULT 0.00,
`aktiv` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `tabellen_konfiguration`
-- --------------------------------------------------------
CREATE TABLE `tabellen_konfiguration` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type_slug` varchar(128) NOT NULL,
`json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`json`)),
`all_noten_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`all_noten_json`)),
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`created_by` int(11) DEFAULT NULL,
`updated_by` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_slug` (`type_slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `teilnehmende`
-- --------------------------------------------------------
CREATE TABLE `teilnehmende` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`wk_id` int(11) DEFAULT NULL,
`name` text NOT NULL,
`vorname` text NOT NULL,
`geburtsdatum` date NOT NULL,
`programm` text NOT NULL,
`verein` text NOT NULL,
`bezahlt` int(11) NOT NULL DEFAULT 1,
`bezahltoverride` int(11) NOT NULL DEFAULT 0,
`betrag_bezahlt` decimal(12,2) NOT NULL DEFAULT 0.00,
PRIMARY KEY (`id`),
KEY `wk_index` (`wk_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `teilnehmende_audiofiles`
-- --------------------------------------------------------
CREATE TABLE `teilnehmende_audiofiles` (
`person_id` int(7) NOT NULL,
`geraet_id` int(7) NOT NULL,
`audiofile_id` int(7) NOT NULL,
UNIQUE KEY `unique_combo` (`person_id`,`geraet_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `teilnehmende_gruppen`
-- --------------------------------------------------------
CREATE TABLE `teilnehmende_gruppen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`turnerin_id` int(11) NOT NULL,
`abteilung_id` int(11) NOT NULL,
`geraet_id` int(11) NOT NULL,
`turnerin_index` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_turnerin` (`turnerin_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `variables`
-- --------------------------------------------------------
CREATE TABLE `variables` (
`name` varchar(255) NOT NULL DEFAULT 'NaN',
`value` varchar(255) DEFAULT NULL,
UNIQUE KEY `uniqueIndex` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `verbuchte_startgebueren`
-- --------------------------------------------------------
CREATE TABLE `verbuchte_startgebueren` (
`order_id` int(11) NOT NULL,
`order_type` varchar(100) DEFAULT NULL,
`preis` float DEFAULT NULL,
`user_id` int(11) NOT NULL,
`item_ids` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`item_ids`)),
`used_verein_konten` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`order_status` int(11) NOT NULL DEFAULT 0,
`timestamp` timestamp NOT NULL DEFAULT current_timestamp(),
`edited_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `verbuchte_startgebueren_log`
-- --------------------------------------------------------
CREATE TABLE `verbuchte_startgebueren_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) NOT NULL,
`old_order_status` int(11) NOT NULL,
`new_order_status` int(11) NOT NULL,
`edited_by` int(11) NOT NULL,
`edited_at` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `vereine`
-- --------------------------------------------------------
CREATE TABLE `vereine` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`verein` text NOT NULL,
`email` varchar(100) NOT NULL DEFAULT 'forms@testseite-fh.ch',
`konto` decimal(12,2) NOT NULL DEFAULT 0.00,
PRIMARY KEY (`id`),
UNIQUE KEY `indexturnerinnen` (`id`,`verein`(31))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `warenkorb_startgebueren`
-- --------------------------------------------------------
CREATE TABLE `warenkorb_startgebueren` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) UNSIGNED NOT NULL,
`item_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `basket_items_ibfk_1` (`user_id`),
KEY `basket_items_ibfk_2` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `wertungen`
-- --------------------------------------------------------
CREATE TABLE `wertungen` (
`person_id` int(11) NOT NULL,
`note_bezeichnung_id` int(11) NOT NULL,
`geraet_id` int(11) NOT NULL,
`wk_id` int(11) NOT NULL,
`run_number` tinyint(3) NOT NULL DEFAULT 1,
`value` float DEFAULT NULL,
`is_public` tinyint(1) DEFAULT NULL,
`public_value` float DEFAULT NULL,
`timestamp` timestamp NOT NULL DEFAULT current_timestamp(),
UNIQUE KEY `uniquePersonNoteJahrGereat` (`person_id`,`note_bezeichnung_id`,`wk_id`,`geraet_id`,`run_number`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `wertungen_log`
-- --------------------------------------------------------
CREATE TABLE `wertungen_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`person_id` int(11) NOT NULL,
`note_bezeichnung_id` int(11) NOT NULL,
`geraet_id` int(11) NOT NULL,
`wk_id` int(11) NOT NULL,
`run_number` tinyint(3) NOT NULL DEFAULT 1,
`old_value` float DEFAULT NULL,
`new_value` float DEFAULT NULL,
`edited_by` int(11) NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `wertungstypen`
-- --------------------------------------------------------
CREATE TABLE `wertungstypen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`default_value` float DEFAULT NULL,
`type` enum('input','berechnung') NOT NULL DEFAULT 'input',
`berechnung` varchar(255) DEFAULT NULL,
`berechnung_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`berechnung_json`)),
`max_value` float DEFAULT NULL,
`min_value` float DEFAULT NULL,
`pro_geraet` tinyint(1) NOT NULL DEFAULT 1,
`anzahl_laeufe_json` text DEFAULT NULL,
`geraete_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '[]',
`zeige_auf_rangliste` float DEFAULT NULL,
`groesse_auf_rangliste` int(11) NOT NULL DEFAULT 0,
`nullstellen` int(11) NOT NULL DEFAULT 2,
`display_string` varchar(63) NOT NULL DEFAULT '${note}',
PRIMARY KEY (`id`),
UNIQUE KEY `uniqueName` (`name`) USING BTREE,
KEY `indexMaxValue` (`max_value`),
KEY `indexMinValue` (`min_value`),
KEY `indexBerechnungJson` (`berechnung_json`(768)),
KEY `indexDefaultValue` (`default_value`),
KEY `indexType` (`type`),
KEY `indexNullstellen` (`nullstellen`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `wettkaempfe`
-- --------------------------------------------------------
CREATE TABLE `wettkaempfe` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
`slug` varchar(64) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
-- --------------------------------------------------------
-- Tabellenstruktur für Tabelle `zeitplan_types`
-- --------------------------------------------------------
CREATE TABLE `zeitplan_types` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(2048) NOT NULL,
`has_endtime` tinyint(1) DEFAULT NULL,
`display_index` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
COMMIT;