-- Vendor-attributed SLA (2026-06-02): additive, non-destructive.
--
-- Adds the `Vendor` table and an optional `Monitor.vendorId` FK so each
-- monitor can be linked to the primary vendor we pay for the service it
-- probes. No drops, no type changes — safe to apply ahead of / behind other
-- in-flight branches (per CLAUDE.md pitfall #7).
--
-- Schema rationale: see prisma/schema.prisma model `Vendor`.

-- CreateTable
CREATE TABLE `Vendor` (
    `id` INTEGER NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(191) NOT NULL,
    `promisedUptime` DOUBLE NOT NULL,
    `contractRef` VARCHAR(191) NULL,
    `creditTerms` VARCHAR(191) NULL,
    `notes` TEXT NULL,
    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `updatedAt` DATETIME(3) NOT NULL,
    `createdById` INTEGER NULL,
    `updatedById` INTEGER NULL,
    `deletedById` INTEGER NULL,
    `deletedAt` DATETIME(3) NULL,

    INDEX `Vendor_deletedAt_idx`(`deletedAt`),

    PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- AlterTable
ALTER TABLE `Monitor` ADD COLUMN `vendorId` INTEGER NULL;

-- CreateIndex
CREATE INDEX `Monitor_vendorId_idx` ON `Monitor`(`vendorId`);

-- AddForeignKey (Vendor audit columns -> User)
ALTER TABLE `Vendor` ADD CONSTRAINT `Vendor_createdById_fkey` FOREIGN KEY (`createdById`) REFERENCES `User`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `Vendor` ADD CONSTRAINT `Vendor_updatedById_fkey` FOREIGN KEY (`updatedById`) REFERENCES `User`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `Vendor` ADD CONSTRAINT `Vendor_deletedById_fkey` FOREIGN KEY (`deletedById`) REFERENCES `User`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;

-- AddForeignKey (Monitor.vendorId -> Vendor)
ALTER TABLE `Monitor` ADD CONSTRAINT `Monitor_vendorId_fkey` FOREIGN KEY (`vendorId`) REFERENCES `Vendor`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
