WangDL e5c6113b25
All checks were successful
Deploy API Server / build-and-deploy (push) Successful in 13s
feat: add admin_users, admin_sessions, admin_audit_logs tables
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 14:39:38 +08:00

63 lines
2.3 KiB
SQL

-- CreateTable
CREATE TABLE `AdminUser` (
`id` VARCHAR(191) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`passwordHash` VARCHAR(255) NOT NULL,
`displayName` VARCHAR(100) NOT NULL,
`role` VARCHAR(32) NOT NULL DEFAULT 'ADMIN',
`status` VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
`twoFactorEnabled` BOOLEAN NOT NULL DEFAULT false,
`twoFactorSecret` VARCHAR(100) NULL,
`lastLoginAt` DATETIME(3) NULL,
`lastLoginIp` VARCHAR(45) NULL,
`failedLoginCount` INTEGER NOT NULL DEFAULT 0,
`lockedUntil` DATETIME(3) NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
`deletedAt` DATETIME(3) NULL,
UNIQUE INDEX `AdminUser_email_key`(`email`),
INDEX `AdminUser_email_idx`(`email`),
INDEX `AdminUser_status_idx`(`status`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `AdminSession` (
`id` VARCHAR(191) NOT NULL,
`adminUserId` VARCHAR(191) NOT NULL,
`refreshTokenHash` VARCHAR(255) NOT NULL,
`ip` VARCHAR(45) NULL,
`userAgent` VARCHAR(500) NULL,
`expiresAt` DATETIME(3) NOT NULL,
`revokedAt` DATETIME(3) NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `AdminSession_adminUserId_idx`(`adminUserId`),
INDEX `AdminSession_refreshTokenHash_idx`(`refreshTokenHash`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `AdminAuditLog` (
`id` VARCHAR(191) NOT NULL,
`adminUserId` VARCHAR(191) NOT NULL,
`action` VARCHAR(64) NOT NULL,
`resourceType` VARCHAR(64) NULL,
`resourceId` VARCHAR(255) NULL,
`beforeJson` JSON NULL,
`afterJson` JSON NULL,
`ip` VARCHAR(45) NULL,
`userAgent` VARCHAR(500) NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `AdminAuditLog_adminUserId_idx`(`adminUserId`),
INDEX `AdminAuditLog_action_idx`(`action`),
INDEX `AdminAuditLog_createdAt_idx`(`createdAt`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `AdminSession` ADD CONSTRAINT `AdminSession_adminUserId_fkey` FOREIGN KEY (`adminUserId`) REFERENCES `AdminUser`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;