Newwebshop/docker/mysql/init/02_modules_schema.sql

148 lines
5.5 KiB
SQL

-- Module-System Schema
-- Erstellt die Tabellen für PrestaShop-kompatible Module
-- Module-Tabelle
CREATE TABLE IF NOT EXISTS `ws_module` (
`id_module` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`display_name` varchar(255) DEFAULT NULL,
`description` text,
`version` varchar(32) DEFAULT '1.0.0',
`author` varchar(255) DEFAULT 'Unknown',
`tab` varchar(64) DEFAULT 'administration',
`need_instance` tinyint(1) DEFAULT 0,
`bootstrap` tinyint(1) DEFAULT 0,
`active` tinyint(1) DEFAULT 1,
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_module`),
UNIQUE KEY `name` (`name`),
KEY `active` (`active`),
KEY `tab` (`tab`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Hook-Module-Tabelle (Verbindung zwischen Hooks und Modulen)
CREATE TABLE IF NOT EXISTS `ws_hook_module` (
`id_hook_module` int(11) NOT NULL AUTO_INCREMENT,
`hook_name` varchar(64) NOT NULL,
`module_name` varchar(64) NOT NULL,
`position` int(11) DEFAULT 0,
`active` tinyint(1) DEFAULT 1,
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_hook_module`),
UNIQUE KEY `hook_module` (`hook_name`, `module_name`),
KEY `hook_name` (`hook_name`),
KEY `module_name` (`module_name`),
KEY `active` (`active`),
KEY `position` (`position`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Module-Konfiguration-Tabelle
CREATE TABLE IF NOT EXISTS `ws_module_config` (
`id_module_config` int(11) NOT NULL AUTO_INCREMENT,
`module_name` varchar(64) NOT NULL,
`config_key` varchar(255) NOT NULL,
`config_value` text,
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_module_config`),
UNIQUE KEY `module_config` (`module_name`, `config_key`),
KEY `module_name` (`module_name`),
KEY `config_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Module-Logs-Tabelle
CREATE TABLE IF NOT EXISTS `ws_module_log` (
`id_module_log` int(11) NOT NULL AUTO_INCREMENT,
`module_name` varchar(64) NOT NULL,
`action` varchar(64) NOT NULL,
`message` text,
`level` enum('info', 'warning', 'error') DEFAULT 'info',
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_module_log`),
KEY `module_name` (`module_name`),
KEY `action` (`action`),
KEY `level` (`level`),
KEY `created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Module-Dependencies-Tabelle
CREATE TABLE IF NOT EXISTS `ws_module_dependency` (
`id_module_dependency` int(11) NOT NULL AUTO_INCREMENT,
`module_name` varchar(64) NOT NULL,
`dependency_name` varchar(64) NOT NULL,
`dependency_version` varchar(32) DEFAULT NULL,
`required` tinyint(1) DEFAULT 1,
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_module_dependency`),
KEY `module_name` (`module_name`),
KEY `dependency_name` (`dependency_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Module-Override-Tabelle
CREATE TABLE IF NOT EXISTS `ws_module_override` (
`id_module_override` int(11) NOT NULL AUTO_INCREMENT,
`module_name` varchar(64) NOT NULL,
`override_type` enum('class', 'template', 'controller') NOT NULL,
`original_path` varchar(255) NOT NULL,
`override_path` varchar(255) NOT NULL,
`active` tinyint(1) DEFAULT 1,
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_module_override`),
KEY `module_name` (`module_name`),
KEY `override_type` (`override_type`),
KEY `active` (`active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Standard-Hooks einfügen
INSERT IGNORE INTO `ws_hook_module` (`hook_name`, `module_name`, `position`) VALUES
-- Display Hooks
('displayHeader', 'system', 0),
('displayTop', 'system', 0),
('displayNav', 'system', 0),
('displayFooter', 'system', 0),
('displayHome', 'system', 0),
-- Product Hooks
('displayProductAdditionalInfo', 'system', 0),
('displayProductListReviews', 'system', 0),
('displayProductButtons', 'system', 0),
-- Cart Hooks
('displayShoppingCart', 'system', 0),
('actionCartUpdateQuantityBefore', 'system', 0),
('actionCartUpdateQuantityAfter', 'system', 0),
-- Order Hooks
('displayOrderConfirmation', 'system', 0),
('actionValidateOrder', 'system', 0),
-- Customer Hooks
('displayCustomerAccount', 'system', 0),
('actionCustomerAccountAdd', 'system', 0),
-- Admin Hooks
('displayAdminOrder', 'system', 0),
('displayAdminProducts', 'system', 0),
-- Payment Hooks
('displayPayment', 'system', 0),
('actionPaymentConfirmation', 'system', 0),
-- Search Hooks
('displaySearch', 'system', 0),
('actionSearch', 'system', 0),
-- Newsletter Hooks
('displayNewsletterRegistration', 'system', 0),
('actionNewsletterRegistrationAfter', 'system', 0),
-- Security Hooks
('actionAuthentication', 'system', 0),
('actionCustomerLogoutAfter', 'system', 0);
-- System-Modul eintragen
INSERT IGNORE INTO `ws_module` (`name`, `display_name`, `description`, `version`, `author`, `tab`, `need_instance`, `bootstrap`, `active`) VALUES
('system', 'System', 'Kern-System-Modul', '1.0.0', 'Webshop System', 'administration', 0, 0, 1);