CREATE TABLE IF NOT EXISTS `mod_hexagamecloud_installations` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `last_error` text NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `mod_hexagamecloud_sync_cursors` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `events_cursor` varchar(64) NULL,
  `last_poll_at` datetime NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `mod_hexagamecloud_events` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `remote_event_id` varchar(64) NOT NULL,
  `event_type` varchar(64) NOT NULL,
  `payload` mediumtext NOT NULL,
  `status` varchar(32) NOT NULL DEFAULT 'pending',
  `processed_at` datetime NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `remote_event_id` (`remote_event_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `mod_hexagamecloud_operations` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `operation` varchar(64) NOT NULL,
  `status` varchar(32) NOT NULL,
  `metadata` mediumtext NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `mod_hexagamecloud_reconciliation` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `run_id` varchar(64) NOT NULL,
  `mode` varchar(32) NOT NULL,
  `issue_count` int unsigned NOT NULL DEFAULT 0,
  `payload` mediumtext NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `mod_hexagamecloud_product_mappings` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `whmcs_product_id` int unsigned NOT NULL,
  `whmcs_product_name` varchar(128) NOT NULL DEFAULT '',
  `plan_slug` varchar(64) NOT NULL,
  `default_edition` varchar(16) NOT NULL DEFAULT 'JAVA',
  `default_software` varchar(32) NOT NULL DEFAULT 'VANILLA',
  `default_version` varchar(16) NOT NULL DEFAULT '1.21.1',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `whmcs_product_id` (`whmcs_product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO `mod_hexagamecloud_installations` (`id`, `updated_at`) VALUES (1, UTC_TIMESTAMP());

INSERT IGNORE INTO `mod_hexagamecloud_sync_cursors` (`id`, `updated_at`) VALUES (1, UTC_TIMESTAMP());
