design database

This commit is contained in:
NVWA Code Agent
2025-12-17 08:23:50 +00:00
parent 51a29e87a4
commit f2a98a3881
2 changed files with 5034 additions and 0 deletions

View File

@@ -36,3 +36,55 @@ import {
import { sql } from "drizzle-orm";
import { id, createdAt, updatedAt } from "../common";
// 引用其他schema中的表
import { user } from "./auth.db";
import { attributeFile } from "./basic.db";
// 枚举定义
export const generationStatusEnum = pgEnum("generation_status", [
"pending",
"processing",
"completed",
"failed"
]);
// 项目表:用户创建的项目
export const nvwaProject = pgTable("nvwa_project", {
id,
name: varchar("name", { length: 255 }).notNull(),
description: text("description"),
userId: text("user_id")
.notNull()
.references(() => user.id, { onDelete: "cascade" }),
createdAt,
updatedAt,
});
// 线框图表:属于项目的线框图,包含画布数据和描述
export const nvwaWireframe = pgTable("nvwa_wireframe", {
id,
projectId: integer("project_id")
.notNull()
.references(() => nvwaProject.id, { onDelete: "cascade" }),
name: varchar("name", { length: 255 }).notNull(),
canvasData: jsonb("canvas_data"), // 存储画布上的元素和布局数据
description: text("description"), // 用户输入的文本描述用于指导AI生成
uploadedFileId: integer("uploaded_file_id").references(() => attributeFile.id, { onDelete: "set null" }), // 上传的草图文件ID
createdAt,
updatedAt,
});
// 生成表AI生成的任务和结果
export const nvwaGeneration = pgTable("nvwa_generation", {
id,
wireframeId: integer("wireframe_id")
.notNull()
.references(() => nvwaWireframe.id, { onDelete: "cascade" }),
prompt: text("prompt").notNull(), // AI生成的提示词
status: generationStatusEnum("status").default("pending").notNull(),
generatedImageUrl: varchar("generated_image_url", { length: 500 }), // 生成的图像URL
errorMessage: text("error_message"), // 如果生成失败,存储错误信息
createdAt,
updatedAt,
});

4982
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff