Newwebshop/database/migrations/004_create_override_tables.sql

262 lines
12 KiB
SQL

-- Override-System Tabellen
-- Copyright seit 2024 Webshop System
-- Module Override Tabelle
CREATE TABLE IF NOT EXISTS `ws_module_override` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_key` varchar(255) NOT NULL,
`override_type` enum('class','template','controller') NOT NULL,
`original_path` varchar(500) NOT NULL,
`override_path` varchar(500) NOT NULL,
`module_name` varchar(100) NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT 1,
`priority` int(11) NOT NULL DEFAULT 50,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `override_key_module` (`override_key`, `module_name`),
KEY `idx_override_type` (`override_type`),
KEY `idx_module_name` (`module_name`),
KEY `idx_active` (`active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Historie Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`action` enum('created','updated','deactivated','reactivated') NOT NULL,
`old_path` varchar(500) NULL,
`new_path` varchar(500) NULL,
`user_id` int(11) NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_action` (`action`),
KEY `idx_created_at` (`created_at`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Kompatibilität Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_compatibility` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`webshop_version` varchar(20) NOT NULL,
`prestashop_version` varchar(20) NOT NULL,
`compatible` tinyint(1) NOT NULL DEFAULT 1,
`notes` text NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_webshop_version` (`webshop_version`),
KEY `idx_prestashop_version` (`prestashop_version`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Performance Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_performance` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`load_time` decimal(10,4) NOT NULL,
`memory_usage` int(11) NOT NULL,
`execution_count` int(11) NOT NULL DEFAULT 1,
`last_executed` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_load_time` (`load_time`),
KEY `idx_last_executed` (`last_executed`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Statistiken Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_statistics` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`override_type` enum('class','template','controller') NOT NULL,
`total_overrides` int(11) NOT NULL DEFAULT 0,
`active_overrides` int(11) NOT NULL DEFAULT 0,
`module_count` int(11) NOT NULL DEFAULT 0,
`avg_load_time` decimal(10,4) NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `date_type` (`date`, `override_type`),
KEY `idx_date` (`date`),
KEY `idx_override_type` (`override_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Backup Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_backup` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`backup_path` varchar(500) NOT NULL,
`backup_size` int(11) NOT NULL,
`backup_hash` varchar(64) NOT NULL,
`backup_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`restored` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_backup_date` (`backup_date`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Metadaten Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_metadata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`meta_key` varchar(100) NOT NULL,
`meta_value` text NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `override_meta_key` (`override_id`, `meta_key`),
KEY `idx_meta_key` (`meta_key`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Dependencies Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_dependencies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`dependency_type` enum('class','template','controller','module') NOT NULL,
`dependency_name` varchar(255) NOT NULL,
`dependency_version` varchar(20) NULL,
`required` tinyint(1) NOT NULL DEFAULT 1,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_dependency_type` (`dependency_type`),
KEY `idx_dependency_name` (`dependency_name`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Validierung Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_validation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`validation_type` enum('syntax','security','performance','compatibility') NOT NULL,
`status` enum('passed','failed','warning') NOT NULL,
`message` text NULL,
`validated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_validation_type` (`validation_type`),
KEY `idx_status` (`status`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Versionierung Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_versions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`version` varchar(20) NOT NULL,
`version_path` varchar(500) NOT NULL,
`version_hash` varchar(64) NOT NULL,
`changelog` text NULL,
`is_current` tinyint(1) NOT NULL DEFAULT 0,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_version` (`version`),
KEY `idx_is_current` (`is_current`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Tags Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NOT NULL,
`tag_name` varchar(100) NOT NULL,
`tag_value` varchar(255) NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_tag_name` (`tag_name`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Logs Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_id` int(11) NULL,
`log_level` enum('debug','info','warning','error','critical') NOT NULL,
`log_message` text NOT NULL,
`log_context` json NULL,
`user_id` int(11) NULL,
`ip_address` varchar(45) NULL,
`user_agent` text NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_override_id` (`override_id`),
KEY `idx_log_level` (`log_level`),
KEY `idx_created_at` (`created_at`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Settings Tabelle
CREATE TABLE IF NOT EXISTS `ws_override_settings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`setting_key` varchar(100) NOT NULL,
`setting_value` text NULL,
`setting_type` enum('string','integer','boolean','json','array') NOT NULL DEFAULT 'string',
`description` text NULL,
`is_system` tinyint(1) NOT NULL DEFAULT 0,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `setting_key` (`setting_key`),
KEY `idx_is_system` (`is_system`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Standard-Einstellungen einfügen
INSERT INTO `ws_override_settings` (`setting_key`, `setting_value`, `setting_type`, `description`, `is_system`) VALUES
('override.enabled', '1', 'boolean', 'Override-System aktiviert', 1),
('override.cache_enabled', '1', 'boolean', 'Override-Cache aktiviert', 1),
('override.auto_backup', '1', 'boolean', 'Automatische Backups für Overrides', 1),
('override.validation_enabled', '1', 'boolean', 'Override-Validierung aktiviert', 1),
('override.max_file_size', '1048576', 'integer', 'Maximale Override-Dateigröße in Bytes', 1),
('override.allowed_extensions', '["php","tpl","js","css"]', 'json', 'Erlaubte Dateierweiterungen für Overrides', 1),
('override.backup_retention_days', '30', 'integer', 'Backup-Aufbewahrungszeit in Tagen', 1),
('override.performance_monitoring', '1', 'boolean', 'Performance-Monitoring für Overrides', 1),
('override.security_scanning', '1', 'boolean', 'Sicherheits-Scanning für Overrides', 1),
('override.compatibility_check', '1', 'boolean', 'Kompatibilitätsprüfung für Overrides', 1);
-- Override-Index Tabelle für Performance
CREATE TABLE IF NOT EXISTS `ws_override_index` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`override_key` varchar(255) NOT NULL,
`override_type` enum('class','template','controller') NOT NULL,
`module_name` varchar(100) NOT NULL,
`file_path` varchar(500) NOT NULL,
`file_hash` varchar(64) NOT NULL,
`file_size` int(11) NOT NULL,
`last_modified` timestamp NOT NULL,
`is_active` tinyint(1) NOT NULL DEFAULT 1,
`indexed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `override_key_type` (`override_key`, `override_type`),
KEY `idx_module_name` (`module_name`),
KEY `idx_file_hash` (`file_hash`),
KEY `idx_is_active` (`is_active`),
KEY `idx_indexed_at` (`indexed_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Override-Queue Tabelle für asynchrone Verarbeitung
CREATE TABLE IF NOT EXISTS `ws_override_queue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`queue_type` enum('backup','validation','indexing','cleanup') NOT NULL,
`override_id` int(11) NULL,
`queue_data` json NULL,
`priority` int(11) NOT NULL DEFAULT 5,
`status` enum('pending','processing','completed','failed') NOT NULL DEFAULT 'pending',
`attempts` int(11) NOT NULL DEFAULT 0,
`max_attempts` int(11) NOT NULL DEFAULT 3,
`error_message` text NULL,
`scheduled_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`started_at` timestamp NULL,
`completed_at` timestamp NULL,
PRIMARY KEY (`id`),
KEY `idx_queue_type` (`queue_type`),
KEY `idx_status` (`status`),
KEY `idx_priority` (`priority`),
KEY `idx_scheduled_at` (`scheduled_at`),
FOREIGN KEY (`override_id`) REFERENCES `ws_module_override` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;