-- Active: 1755472439040@@dev.wappcom.com@3306@nucleo_base
-- Active: 1755472439040@@dev.wappcom.com@3306@nucleo_base

-- ============================================
-- ELIMINAR TABLAS EN ORDEN CORRECTO
-- ============================================
DROP TABLE IF EXISTS `menus`;

-- ============================================
-- TABLA: menus
-- Descripción: Almacena los menús principales
-- ============================================

CREATE TABLE `menus` (
  `menu_id` int(11) NOT NULL AUTO_INCREMENT,
  `menu_name` varchar(255) NOT NULL COMMENT 'Nombre del menú',
  `menu_description` text DEFAULT NULL COMMENT 'Descripción del menú',
  `menu_site_id` int(11) DEFAULT NULL COMMENT 'ID del sitio web al que pertenece',
  `menu_ent_id` int(11) DEFAULT 1 COMMENT 'ID de la entidad/empresa',
  `menu_state` tinyint(1) NOT NULL DEFAULT 1 COMMENT '0=Inactivo, 1=Activo',
  `menu_created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha de creación',
  `menu_updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Fecha de actualización',
  PRIMARY KEY (`menu_id`),
  KEY `idx_menu_site_id` (`menu_site_id`),
  KEY `idx_menu_ent_id` (`menu_ent_id`),
  KEY `idx_menu_state` (`menu_state`),
  KEY `idx_site_state` (`menu_site_id`, `menu_state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Menús principales del sistema';


-- ============================================
-- TABLA: menus_items
-- Descripción: Items de menú con soporte para jerarquía padre-hijo
-- ============================================
DROP TABLE IF EXISTS `menus_items`;
CREATE TABLE `menus_items` (
  `menu_item_id` int(11) NOT NULL AUTO_INCREMENT,
  `menu_item_menu_id` int(11) NOT NULL COMMENT 'ID del menú al que pertenece',
  `menu_item_name` varchar(255) NOT NULL COMMENT 'Etiqueta de navegación',
  `menu_item_description` text DEFAULT NULL COMMENT 'Descripción del item',
  `menu_item_pathurl` varchar(500) DEFAULT NULL COMMENT 'URL del enlace',
  `menu_item_target` varchar(20) NOT NULL DEFAULT '_self' COMMENT 'Target del enlace: _self, _blank, etc.',
  `menu_item_parent_id` int(11) DEFAULT 0 COMMENT 'ID del item padre (0 = item raíz)',
  `menu_item_level` tinyint(2) NOT NULL DEFAULT 0 COMMENT 'Nivel de profundidad (0=raíz, 1=hijo, 2=nieto, etc.)',
  `menu_item_order` int(11) NOT NULL DEFAULT 0 COMMENT 'Orden de visualización',
  `menu_item_icon` varchar(255) DEFAULT NULL COMMENT 'Clase del icono o URL de imagen',
  `menu_item_img` varchar(500) DEFAULT NULL COMMENT 'URL de imagen (alternativa al icono)',
  `menu_item_html_id` varchar(100) DEFAULT NULL COMMENT 'ID HTML personalizado',
  `menu_item_css_class` varchar(255) DEFAULT NULL COMMENT 'Clases CSS adicionales',
  `menu_item_cat_id` int(11) DEFAULT NULL COMMENT 'ID de categoría asociada',
  `menu_item_cat_active` tinyint(1) DEFAULT 0 COMMENT 'Si la categoría está activa',
  `menu_item_data` text DEFAULT NULL COMMENT 'Datos JSON adicionales',
  `menu_item_state` tinyint(1) NOT NULL DEFAULT 1 COMMENT '0=Inactivo, 1=Activo',
  `menu_item_created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha de creación',
  `menu_item_updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Fecha de actualización',
  
  PRIMARY KEY (`menu_item_id`),
  KEY `idx_menu_id` (`menu_item_menu_id`),
  KEY `idx_parent_id` (`menu_item_parent_id`),
  KEY `idx_level` (`menu_item_level`),
  KEY `idx_order` (`menu_item_order`),
  KEY `idx_state` (`menu_item_state`),
  KEY `idx_menu_parent` (`menu_item_menu_id`, `menu_item_parent_id`),
  KEY `idx_menu_order` (`menu_item_menu_id`, `menu_item_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Items de menú con soporte jerárquico';


-- ============================================
-- DATOS DE EJEMPLO (OPCIONAL - COMENTADO)
-- ============================================

-- Insertar un menú de ejemplo
INSERT INTO `menus` (`menu_name`, `menu_description`, `menu_state`) VALUES
('Menú Principal', 'Menú de navegación principal del sitio', 1);

-- Obtener el ID del menú recién creado
SET @menu_id = LAST_INSERT_ID();

-- Insertar items de nivel raíz (level 0)
INSERT INTO `menus_items` (`menu_item_menu_id`, `menu_item_name`, `menu_item_pathurl`, `menu_item_icon`, `menu_item_parent_id`, `menu_item_level`, `menu_item_order`, `menu_item_state`) VALUES
(@menu_id, 'Home', '/', 'icon-home', 0, 0, 0, 1),
(@menu_id, 'Products', '/products', 'icon-box', 0, 0, 1, 1),
(@menu_id, 'About Us', '/about', 'icon-info', 0, 0, 2, 1),
(@menu_id, 'Contact', '/contact', 'icon-mail', 0, 0, 3, 1);

-- Obtener el ID del item "Products" para agregar hijos
SET @products_id = (SELECT menu_item_id FROM menus_items WHERE menu_item_name = 'Products' AND menu_item_menu_id = @menu_id LIMIT 1);

-- Insertar items hijos de "Products" (level 1)
INSERT INTO `menus_items` (`menu_item_menu_id`, `menu_item_name`, `menu_item_pathurl`, `menu_item_icon`, `menu_item_parent_id`, `menu_item_level`, `menu_item_order`, `menu_item_state`) VALUES
(@menu_id, 'All Products', '/products/all', 'icon-list', @products_id, 1, 0, 1),
(@menu_id, 'Categories', '/products/categories', 'icon-folder', @products_id, 1, 1, 1),
(@menu_id, 'Featured', '/products/featured', 'icon-star', @products_id, 1, 2, 1);

-- Obtener el ID del item "Categories" para agregar nietos
SET @categories_id = (SELECT menu_item_id FROM menus_items WHERE menu_item_name = 'Categories' AND menu_item_menu_id = @menu_id LIMIT 1);

-- Insertar items nietos de "Categories" (level 2)
INSERT INTO `menus_items` (`menu_item_menu_id`, `menu_item_name`, `menu_item_pathurl`, `menu_item_icon`, `menu_item_parent_id`, `menu_item_level`, `menu_item_order`, `menu_item_state`) VALUES
(@menu_id, 'Electronics', '/products/categories/electronics', 'icon-cpu', @categories_id, 2, 0, 1),
(@menu_id, 'Clothing', '/products/categories/clothing', 'icon-shirt', @categories_id, 2, 1, 1),
(@menu_id, 'Books', '/products/categories/books', 'icon-book', @categories_id, 2, 2, 1);
