-- LP System V2 migration 0002_m1_platform: M1 platform tables: rate limits, outbox, scheduler leases and runs, V2 settings (C-15).
-- GENERATED by scripts/generate-migration.ts from prisma schema snapshots. Do not edit by hand.
-- Every table states ENGINE, charset and collation explicitly; nothing relies on server or database defaults.
-- Every statement can be re-run safely (IF NOT EXISTS / INSERT IGNORE) so an interrupted migration always resumes.
-- CreateTable
CREATE TABLE IF NOT EXISTS `RateLimitBucket` (
    `bucket` VARCHAR(64) NOT NULL,
    `key` VARCHAR(191) NOT NULL,
    `count` INTEGER NOT NULL DEFAULT 0,
    `resetAt` DATETIME(3) NOT NULL,

    INDEX `RateLimitBucket_resetAt_idx`(`resetAt`),
    PRIMARY KEY (`bucket`, `key`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- CreateTable
CREATE TABLE IF NOT EXISTS `OutboxMessage` (
    `id` VARCHAR(191) NOT NULL,
    `channel` VARCHAR(16) NOT NULL,
    `logId` VARCHAR(191) NULL,
    `dedupeKey` VARCHAR(191) NULL,
    `status` VARCHAR(16) NOT NULL DEFAULT 'QUEUED',
    `attempts` INTEGER NOT NULL DEFAULT 0,
    `nextAttemptAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `leaseUntil` DATETIME(3) NULL,
    `lastError` TEXT NULL,
    `payloadEnc` TEXT NULL,
    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),

    UNIQUE INDEX `OutboxMessage_logId_key`(`logId`),
    UNIQUE INDEX `OutboxMessage_dedupeKey_key`(`dedupeKey`),
    INDEX `OutboxMessage_status_nextAttemptAt_idx`(`status`, `nextAttemptAt`),
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- CreateTable
CREATE TABLE IF NOT EXISTS `JobLock` (
    `name` VARCHAR(64) NOT NULL,
    `holder` VARCHAR(64) NOT NULL,
    `leaseUntil` DATETIME(3) NOT NULL,

    PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- CreateTable
CREATE TABLE IF NOT EXISTS `JobRun` (
    `id` VARCHAR(191) NOT NULL,
    `job` VARCHAR(64) NOT NULL,
    `startedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `finishedAt` DATETIME(3) NULL,
    `outcome` VARCHAR(16) NOT NULL,
    `detail` JSON NULL,

    INDEX `JobRun_job_startedAt_idx`(`job`, `startedAt`),
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- CreateTable
CREATE TABLE IF NOT EXISTS `AppSetting` (
    `key` VARCHAR(64) NOT NULL,
    `value` JSON NOT NULL,
    `updatedById` VARCHAR(191) NULL,
    `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),

    PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

INSERT INTO `SystemMeta` (`key`, `value`, `updatedAt`) VALUES ('schema_version', '2', CURRENT_TIMESTAMP(3)) ON DUPLICATE KEY UPDATE `value` = '2', `updatedAt` = CURRENT_TIMESTAMP(3);
