feat: 新增数据库
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE `users` (
|
||||
`id` INT NOT NULL,
|
||||
`username` VARCHAR(191) NOT NULL DEFAULT '',
|
||||
`display_name` VARCHAR(191) NOT NULL DEFAULT '',
|
||||
`group` VARCHAR(191) NOT NULL DEFAULT '',
|
||||
`role` INT NOT NULL DEFAULT 0,
|
||||
`status` INT NOT NULL DEFAULT 0,
|
||||
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `image_generations` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` INT NOT NULL,
|
||||
`prompt` TEXT NOT NULL,
|
||||
`status` ENUM('QUEUED', 'RUNNING', 'SUCCEEDED', 'FAILED') NOT NULL DEFAULT 'RUNNING',
|
||||
`model` VARCHAR(64) NOT NULL DEFAULT 'gpt-image-2',
|
||||
`size` VARCHAR(32) NOT NULL DEFAULT '1024x1024',
|
||||
`started_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`ended_at` DATETIME(3) NULL,
|
||||
`duration_ms` INT NULL,
|
||||
`image_url` VARCHAR(2048) NULL,
|
||||
`image_base64` LONGTEXT NULL,
|
||||
`image_mime_type` VARCHAR(191) NULL,
|
||||
`revised_prompt` TEXT NULL,
|
||||
`upstream_response` JSON NULL,
|
||||
`error_message` TEXT NULL,
|
||||
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
`deleted_at` DATETIME(3) NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE `generation_stats` (
|
||||
`id` VARCHAR(32) NOT NULL,
|
||||
`total_requests` INT NOT NULL DEFAULT 0,
|
||||
`success_requests` INT NOT NULL DEFAULT 0,
|
||||
`failed_requests` INT NOT NULL DEFAULT 0,
|
||||
`queued_requests` INT NOT NULL DEFAULT 0,
|
||||
`running_requests` INT NOT NULL DEFAULT 0,
|
||||
`total_images` INT NOT NULL DEFAULT 0,
|
||||
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX `image_generations_user_id_created_at_idx` ON `image_generations`(`user_id`, `created_at`);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX `image_generations_status_idx` ON `image_generations`(`status`);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX `image_generations_deleted_at_idx` ON `image_generations`(`deleted_at`);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `image_generations`
|
||||
ADD CONSTRAINT `image_generations_user_id_fkey`
|
||||
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -0,0 +1,3 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (e.g., Git)
|
||||
provider = "mysql"
|
||||
@@ -0,0 +1,75 @@
|
||||
// This is your Prisma schema file,
|
||||
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||||
|
||||
// Get a free hosted Postgres database in seconds: `npx create-db`
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client"
|
||||
output = "../app/generated/prisma"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "mysql"
|
||||
}
|
||||
|
||||
enum ImageGenerationStatus {
|
||||
QUEUED
|
||||
RUNNING
|
||||
SUCCEEDED
|
||||
FAILED
|
||||
}
|
||||
|
||||
model User {
|
||||
id Int @id
|
||||
username String @default("") @db.VarChar(191)
|
||||
displayName String @default("") @map("display_name") @db.VarChar(191)
|
||||
group String @default("") @db.VarChar(191)
|
||||
role Int @default(0)
|
||||
status Int @default(0)
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
imageGenerations ImageGeneration[]
|
||||
|
||||
@@map("users")
|
||||
}
|
||||
|
||||
model ImageGeneration {
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
userId Int @map("user_id")
|
||||
prompt String @db.Text
|
||||
status ImageGenerationStatus @default(RUNNING)
|
||||
model String @default("gpt-image-2") @db.VarChar(64)
|
||||
size String @default("1024x1024") @db.VarChar(32)
|
||||
startedAt DateTime @default(now()) @map("started_at")
|
||||
endedAt DateTime? @map("ended_at")
|
||||
durationMs Int? @map("duration_ms")
|
||||
imageUrl String? @map("image_url") @db.VarChar(2048)
|
||||
imageBase64 String? @map("image_base64") @db.LongText
|
||||
imageMimeType String? @map("image_mime_type") @db.VarChar(191)
|
||||
revisedPrompt String? @map("revised_prompt") @db.Text
|
||||
upstreamResponse Json? @map("upstream_response")
|
||||
errorMessage String? @map("error_message") @db.Text
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
deletedAt DateTime? @map("deleted_at")
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([userId, createdAt])
|
||||
@@index([status])
|
||||
@@index([deletedAt])
|
||||
@@map("image_generations")
|
||||
}
|
||||
|
||||
model GenerationStats {
|
||||
id String @id @db.VarChar(32)
|
||||
totalRequests Int @default(0) @map("total_requests")
|
||||
successRequests Int @default(0) @map("success_requests")
|
||||
failedRequests Int @default(0) @map("failed_requests")
|
||||
queuedRequests Int @default(0) @map("queued_requests")
|
||||
runningRequests Int @default(0) @map("running_requests")
|
||||
totalImages Int @default(0) @map("total_images")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@map("generation_stats")
|
||||
}
|
||||
Reference in New Issue
Block a user