--
-- Host: localhost    Database: limpioo_userdb_2
-- ------------------------------------------------------


--
-- Table structure for table `codes`
--

CREATE TABLE `codes` (
  `UUID` varchar(255) NOT NULL,
  `CODE` varchar(255) NOT NULL,
  PRIMARY KEY (`UUID`,`CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `codes`
--


--
-- Table structure for table `globals`
--

CREATE TABLE `globals` (
  `var` tinytext NOT NULL,
  `val` text NOT NULL,
  `timestamp` int(11) NOT NULL DEFAULT 0,
  UNIQUE KEY `var` (`var`(100)) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `globals`
--


--
-- Table structure for table `log`
--

CREATE TABLE `log` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `UUID` text NOT NULL,
  `P_DATE` text NOT NULL,
  `P_ORDER` tinytext NOT NULL,
  `P_RESPONSE` tinytext NOT NULL,
  `P_AMOUNT` int(11) NOT NULL DEFAULT 0,
  `P_DEBIT` int(11) DEFAULT 0,
  `P_DATA` text NOT NULL,
  `P_URL` text NOT NULL,
  `USED` int(11) DEFAULT 0,
  `U_DATE` text DEFAULT NULL,
  `R_DATA` text DEFAULT NULL,
  `R_DATE` text DEFAULT NULL,
  `HUB` text NOT NULL,
  `WHO` text NOT NULL,
  `WHERE` text NOT NULL,
  `THING` text NOT NULL,
  `NAME` text NOT NULL,
  `DEVICE` text NOT NULL,
  `G_CURRENCY` text DEFAULT NULL,
  `G_POINTS` text DEFAULT NULL,
  `G_AMOUNT` text DEFAULT NULL,
  `SUBSCRIPT_ID` text DEFAULT NULL,
  `SUBSCRIPTION` tinyint(1) NOT NULL DEFAULT 0,
  `SUBSCRI_WASH` tinyint(1) NOT NULL DEFAULT 0,
  `LICENSE_PLATE` varchar(20) DEFAULT NULL COMMENT 'Matrícula del vehículo que realizó el lavado (LPR)',
  `QUANTITY` int(11) NOT NULL DEFAULT 1 COMMENT 'Cantidad de unidades de la operación legacy',
  PRIMARY KEY (`Id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `log`
--


--
-- Table structure for table `qr_usage_log`
--

CREATE TABLE `qr_usage_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `qr_item_id` int(11) NOT NULL COMMENT 'ID del item usado',
  `qr_id` int(11) NOT NULL COMMENT 'ID del QR (para consultas rápidas)',
  `qr_code` varchar(255) NOT NULL COMMENT 'Código QR usado',
  `quantity_used` int(11) NOT NULL DEFAULT 1 COMMENT 'Cantidad usada en esta ocasión',
  `used_at` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha y hora del uso',
  `used_by_device` varchar(255) DEFAULT NULL COMMENT 'Dispositivo que registró el uso',
  `location` varchar(255) DEFAULT NULL COMMENT 'Ubicación donde se usó',
  `notes` text DEFAULT NULL COMMENT 'Notas adicionales del uso',
  `user_uuid` varchar(255) DEFAULT NULL COMMENT 'Usuario que lo usó',
  PRIMARY KEY (`id`),
  KEY `qr_item_id` (`qr_item_id`),
  KEY `qr_id` (`qr_id`),
  KEY `qr_code` (`qr_code`),
  KEY `used_at` (`used_at`),
  KEY `user_uuid` (`user_uuid`),
  CONSTRAINT `fk_usage_log_qr` FOREIGN KEY (`qr_id`) REFERENCES `qr` (`id`) ON DELETE CASCADE,
  CONSTRAINT `fk_usage_log_qr_item` FOREIGN KEY (`qr_item_id`) REFERENCES `qr_items` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `qr_usage_log`
--


--
-- Table structure for table `rewards`
--

CREATE TABLE `rewards` (
  `UUID` text NOT NULL,
  `CURRENCY` text NOT NULL,
  `TOTAL` float NOT NULL DEFAULT 0,
  UNIQUE KEY `INDEX` (`UUID`(100),`CURRENCY`(100)) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `rewards`
--


--
-- Table structure for table `subscription_members`
--

CREATE TABLE `subscription_members` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `subscription_id` int(11) NOT NULL COMMENT 'FK a subscriptions.id',
  `email` varchar(255) NOT NULL COMMENT 'Email del miembro invitado',
  `license_plate` varchar(20) NOT NULL COMMENT 'Matrícula del vehículo del miembro',
  `member_uuid` varchar(64) DEFAULT NULL COMMENT 'UUID del miembro (vinculado tras primer login)',
  `status` enum('pending','active','grace','removed') NOT NULL DEFAULT 'pending' COMMENT 'pending=invitado, active=aceptado, grace=en período de gracia, removed=eliminado',
  `invited_at` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha de envío de invitación',
  `joined_at` datetime DEFAULT NULL COMMENT 'Fecha de aceptación de la invitación',
  `removed_at` datetime DEFAULT NULL COMMENT 'Fecha de eliminación/abandono',
  `grace_until` datetime DEFAULT NULL COMMENT 'Fin del período de gracia (1 mes tras eliminación)',
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_sub_plate` (`subscription_id`,`license_plate`),
  KEY `idx_plate` (`license_plate`),
  KEY `idx_status` (`status`),
  KEY `idx_member_uuid` (`member_uuid`),
  CONSTRAINT `fk_sub_member` FOREIGN KEY (`subscription_id`) REFERENCES `subscriptions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Dumping data for table `subscription_members`
--


--
-- Table structure for table `subscriptions`
--

CREATE TABLE `subscriptions` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identificador único de la suscripción',
  `uuid` varchar(64) NOT NULL COMMENT 'UUID del usuario propietario',
  `item_id` int(11) NOT NULL COMMENT 'ID del producto/servicio (campo id en items)',
  `item_title` varchar(128) NOT NULL COMMENT 'Nombre del producto/servicio',
  `subscription_id` varchar(64) DEFAULT NULL COMMENT 'Identificador de negocio estable de la suscripción',
  `subscription_name` varchar(64) NOT NULL COMMENT 'Nombre de la suscripción',
  `subscription_text` varchar(255) NOT NULL COMMENT 'Descripción de la suscripción',
  `subscription_price` int(11) NOT NULL COMMENT 'Precio base en céntimos',
  `extra_member_price` int(11) NOT NULL DEFAULT 0 COMMENT 'Precio por miembro familiar extra en céntimos',
  `max_members` int(11) NOT NULL DEFAULT 0 COMMENT 'Número máximo de miembros familiares permitidos',
  `license_plate` varchar(20) DEFAULT NULL COMMENT 'Matrícula del vehículo del propietario',
  `start_date` datetime NOT NULL COMMENT 'Fecha de inicio de la suscripción',
  `end_date` datetime DEFAULT NULL COMMENT 'Fecha de fin (si aplica)',
  `status` varchar(20) NOT NULL DEFAULT 'active' COMMENT 'Estado: new, active, cancelled, expired',
  `last_charge` datetime DEFAULT NULL COMMENT 'Fecha del último cobro exitoso',
  `HUB` text DEFAULT NULL,
  `WHO` text DEFAULT NULL,
  `WHERE` text DEFAULT NULL,
  `THING` text DEFAULT NULL,
  `device_key` varchar(64) DEFAULT NULL,
  `payment_gateway` text DEFAULT NULL COMMENT 'URL base de la pasarela de pago (de JSONFILE.payment.gateway)',
  `failed_attempts` int(11) DEFAULT 0 COMMENT 'Intentos de cobro fallidos consecutivos',
  `cancelled_at` datetime DEFAULT NULL COMMENT 'Fecha de cancelación',
  `lpr_opted_out` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'El titular rechazó registrar matrícula LPR: lavado gratis sin cámara hasta fin de período, sin renovación',
  `created_at` datetime DEFAULT current_timestamp() COMMENT 'Fecha de creación del registro',
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Última actualización',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_uuid_subscription_id` (`uuid`,`subscription_id`),
  KEY `idx_uuid_item_plate_thing` (`uuid`,`item_id`,`license_plate`,`THING`(100))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Suscripciones activas de los usuarios a productos/servicios y vehículos';

--
-- Dumping data for table `subscriptions`
--


--
-- Dumping events for database 'limpioo_userdb_2'
--

--
-- Dumping routines for database 'limpioo_userdb_2'
--


