93 lines
3.4 KiB
SQL
93 lines
3.4 KiB
SQL
|
|
-- 同 20260917114313_init_identity:Prisma 生成的 MySQL DDL 固定写
|
|||
|
|
-- utf8mb4_unicode_ci,会覆盖库级 utf8mb4_0900_bin;相册域(publicToken、
|
|||
|
|
-- locale 键、objectKey)同样依赖 bin 校对的大小写敏感语义,故逐表改写为
|
|||
|
|
-- utf8mb4_0900_bin。
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `albums` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`publicToken` VARCHAR(32) NOT NULL,
|
|||
|
|
`ownerId` VARCHAR(64) NOT NULL,
|
|||
|
|
`startAt` DATETIME(6) NOT NULL,
|
|||
|
|
`endAt` DATETIME(6) NULL,
|
|||
|
|
`timezone` VARCHAR(64) NOT NULL DEFAULT 'Asia/Shanghai',
|
|||
|
|
`status` VARCHAR(191) NOT NULL DEFAULT 'active',
|
|||
|
|
`defaultLocale` VARCHAR(16) NOT NULL,
|
|||
|
|
`uploadEnabled` BOOLEAN NOT NULL DEFAULT true,
|
|||
|
|
`publicEnabled` BOOLEAN NOT NULL DEFAULT true,
|
|||
|
|
`downloadEnabled` BOOLEAN NOT NULL DEFAULT true,
|
|||
|
|
`originalDownloadEnabled` BOOLEAN NOT NULL DEFAULT false,
|
|||
|
|
`watermarkVersion` INTEGER NOT NULL DEFAULT 0,
|
|||
|
|
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
`updatedAt` DATETIME(6) NOT NULL,
|
|||
|
|
|
|||
|
|
UNIQUE INDEX `albums_publicToken_key`(`publicToken`),
|
|||
|
|
INDEX `albums_ownerId_idx`(`ownerId`),
|
|||
|
|
INDEX `albums_status_publicEnabled_idx`(`status`, `publicEnabled`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `album_translations` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`locale` VARCHAR(16) NOT NULL,
|
|||
|
|
`title` VARCHAR(255) NOT NULL,
|
|||
|
|
`description` TEXT NULL,
|
|||
|
|
`venue` VARCHAR(255) NULL,
|
|||
|
|
`address` VARCHAR(255) NULL,
|
|||
|
|
|
|||
|
|
INDEX `album_translations_albumId_idx`(`albumId`),
|
|||
|
|
UNIQUE INDEX `album_translations_albumId_locale_key`(`albumId`, `locale`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `album_members` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`userId` VARCHAR(64) NOT NULL,
|
|||
|
|
`role` VARCHAR(191) NOT NULL DEFAULT 'collaborator',
|
|||
|
|
`status` VARCHAR(191) NOT NULL DEFAULT 'active',
|
|||
|
|
`addedAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
|
|||
|
|
INDEX `album_members_userId_idx`(`userId`),
|
|||
|
|
UNIQUE INDEX `album_members_albumId_userId_key`(`albumId`, `userId`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `categories` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`sortOrder` INTEGER NOT NULL DEFAULT 0,
|
|||
|
|
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
|
|||
|
|
INDEX `categories_albumId_sortOrder_idx`(`albumId`, `sortOrder`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `category_translations` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`categoryId` VARCHAR(64) NOT NULL,
|
|||
|
|
`locale` VARCHAR(16) NOT NULL,
|
|||
|
|
`name` VARCHAR(128) NOT NULL,
|
|||
|
|
|
|||
|
|
UNIQUE INDEX `category_translations_categoryId_locale_key`(`categoryId`, `locale`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `album_assets` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`kind` VARCHAR(16) NOT NULL,
|
|||
|
|
`locale` VARCHAR(16) NULL,
|
|||
|
|
`objectKey` VARCHAR(255) NOT NULL,
|
|||
|
|
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
|
|||
|
|
INDEX `album_assets_albumId_kind_idx`(`albumId`, `kind`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|