96 lines
3.7 KiB
SQL
96 lines
3.7 KiB
SQL
|
|
-- 同 20260917114313_init_identity:Prisma 生成的 MySQL DDL 固定写
|
|||
|
|
-- utf8mb4_unicode_ci,会覆盖库级 utf8mb4_0900_bin;照片与上传域
|
|||
|
|
-- (photos.objectKey、upload_sessions.objectKey、outbox_events.type 等)
|
|||
|
|
-- 同样依赖 bin 校对的大小写敏感语义,故逐表改写为 utf8mb4_0900_bin。
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `photos` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`uploaderId` VARCHAR(64) NOT NULL,
|
|||
|
|
`categoryId` VARCHAR(64) NULL,
|
|||
|
|
`objectKey` VARCHAR(255) NOT NULL,
|
|||
|
|
`bytes` INTEGER NOT NULL DEFAULT 0,
|
|||
|
|
`width` INTEGER NULL,
|
|||
|
|
`height` INTEGER NULL,
|
|||
|
|
`shotAt` DATETIME(6) NULL,
|
|||
|
|
`uploadedAt` DATETIME(6) NULL,
|
|||
|
|
`publishedAt` DATETIME(6) NULL,
|
|||
|
|
`processingState` VARCHAR(191) NOT NULL DEFAULT 'pending_upload',
|
|||
|
|
`errorCode` VARCHAR(64) NULL,
|
|||
|
|
`visibility` VARCHAR(191) NOT NULL DEFAULT 'unpublished',
|
|||
|
|
`likeCount` INTEGER NOT NULL DEFAULT 0,
|
|||
|
|
`entityVersion` INTEGER NOT NULL DEFAULT 1,
|
|||
|
|
|
|||
|
|
UNIQUE INDEX `photos_objectKey_key`(`objectKey`),
|
|||
|
|
INDEX `photos_albumId_visibility_publishedAt_id_idx`(`albumId`, `visibility`, `publishedAt`, `id`),
|
|||
|
|
INDEX `photos_albumId_uploaderId_uploadedAt_idx`(`albumId`, `uploaderId`, `uploadedAt`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `photo_variants` (
|
|||
|
|
`photoId` VARCHAR(64) NOT NULL,
|
|||
|
|
`variant` VARCHAR(32) NOT NULL,
|
|||
|
|
`objectKey` VARCHAR(255) NOT NULL,
|
|||
|
|
`bytes` INTEGER NOT NULL,
|
|||
|
|
`version` INTEGER NOT NULL DEFAULT 1,
|
|||
|
|
`width` INTEGER NULL,
|
|||
|
|
`height` INTEGER NULL,
|
|||
|
|
|
|||
|
|
UNIQUE INDEX `photo_variants_objectKey_key`(`objectKey`),
|
|||
|
|
UNIQUE INDEX `photo_variants_photoId_variant_key`(`photoId`, `variant`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `upload_sessions` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`userId` VARCHAR(64) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`clientTaskId` VARCHAR(128) NOT NULL,
|
|||
|
|
`photoId` VARCHAR(64) NOT NULL,
|
|||
|
|
`objectKey` VARCHAR(255) NOT NULL,
|
|||
|
|
`expectedBytes` INTEGER NOT NULL,
|
|||
|
|
`contentType` VARCHAR(128) NOT NULL,
|
|||
|
|
`multipartId` VARCHAR(255) NULL,
|
|||
|
|
`state` VARCHAR(191) NOT NULL DEFAULT 'pending',
|
|||
|
|
`expiresAt` DATETIME(6) NOT NULL,
|
|||
|
|
`createdAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
|
|||
|
|
UNIQUE INDEX `upload_sessions_photoId_key`(`photoId`),
|
|||
|
|
UNIQUE INDEX `upload_sessions_objectKey_key`(`objectKey`),
|
|||
|
|
UNIQUE INDEX `upload_sessions_userId_clientTaskId_key`(`userId`, `clientTaskId`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `photo_jobs` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`photoId` VARCHAR(64) NOT NULL,
|
|||
|
|
`type` VARCHAR(32) NOT NULL DEFAULT 'process',
|
|||
|
|
`state` VARCHAR(191) NOT NULL DEFAULT 'pending',
|
|||
|
|
`attempt` INTEGER NOT NULL DEFAULT 0,
|
|||
|
|
`errorCode` VARCHAR(64) NULL,
|
|||
|
|
`nextRetryAt` DATETIME(6) NULL,
|
|||
|
|
`updatedAt` DATETIME(6) NOT NULL,
|
|||
|
|
|
|||
|
|
INDEX `photo_jobs_state_nextRetryAt_idx`(`state`, `nextRetryAt`),
|
|||
|
|
UNIQUE INDEX `photo_jobs_photoId_type_key`(`photoId`, `type`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|
|||
|
|
|
|||
|
|
-- CreateTable
|
|||
|
|
CREATE TABLE `outbox_events` (
|
|||
|
|
`id` VARCHAR(191) NOT NULL,
|
|||
|
|
`type` VARCHAR(64) NOT NULL,
|
|||
|
|
`albumId` VARCHAR(64) NOT NULL,
|
|||
|
|
`photoId` VARCHAR(64) NULL,
|
|||
|
|
`entityVersion` INTEGER NOT NULL,
|
|||
|
|
`payload` JSON NOT NULL,
|
|||
|
|
`occurredAt` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|||
|
|
`deliveredAt` DATETIME(6) NULL,
|
|||
|
|
|
|||
|
|
INDEX `outbox_events_deliveredAt_occurredAt_idx`(`deliveredAt`, `occurredAt`),
|
|||
|
|
PRIMARY KEY (`id`)
|
|||
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin;
|