aee4b7ac46
Co-Authored-By: Claude Code <noreply@anthropic.com>
40 lines
1.8 KiB
SQL
40 lines
1.8 KiB
SQL
-- P4b Task 2:展示位域(embed_slots/embed_slot_members)。
|
||
-- 校对手决:Prisma 生成 DDL 固定 utf8mb4_unicode_ci,逐表改写为库级约定的
|
||
-- utf8mb4_0900_bin(publicToken 的大小写敏感唯一语义依赖它,同 albums 口径)。
|
||
-- · embed_slots 双版本位:configVersion(嵌入端可见配置版本,任一管理面
|
||
-- 变更递增)/entityVersion(slot.updated 同步事件版本);无删除端点,
|
||
-- enabled=false 即下线。settings 为归一化 EmbedSlotSettings 全集 JSON。
|
||
-- · embed_slot_members:授权成员表**建而未用**(P4b 权限简化 admin-only,
|
||
-- 登记偏差;P5 授权面按需启用)。
|
||
-- · 两表均扁平字符串外键(albumId/userId/slotId 无 FK 约束,同相册域约定)。
|
||
|
||
-- CreateTable
|
||
CREATE TABLE `embed_slots` (
|
||
`id` VARCHAR(191) NOT NULL,
|
||
`publicToken` VARCHAR(32) NOT NULL,
|
||
`name` VARCHAR(64) NOT NULL,
|
||
`enabled` BOOLEAN NOT NULL DEFAULT true,
|
||
`albumId` VARCHAR(64) NULL,
|
||
`configVersion` INTEGER NOT NULL DEFAULT 1,
|
||
`settings` JSON NOT NULL,
|
||
`entityVersion` INTEGER NOT NULL DEFAULT 1,
|
||
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||
`updatedAt` DATETIME(6) NOT NULL,
|
||
|
||
UNIQUE INDEX `embed_slots_publicToken_key`(`publicToken`),
|
||
PRIMARY KEY (`id`)
|
||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
||
|
||
-- CreateTable
|
||
CREATE TABLE `embed_slot_members` (
|
||
`id` VARCHAR(191) NOT NULL,
|
||
`slotId` VARCHAR(64) NOT NULL,
|
||
`userId` VARCHAR(64) NOT NULL,
|
||
`permission` VARCHAR(32) NOT NULL,
|
||
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||
|
||
INDEX `embed_slot_members_userId_idx`(`userId`),
|
||
UNIQUE INDEX `embed_slot_members_slotId_userId_key`(`slotId`, `userId`),
|
||
PRIMARY KEY (`id`)
|
||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|