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;

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());
