Files
9df12c9edac240adbadebe158ac…/database/schema/project.db.ts
NVWA Code Agent f2a98a3881 design database
2025-12-17 08:23:50 +00:00

91 lines
3.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
bigint, // BIGINT (大整数, -2^63 到 2^63-1)
bigserial, // BIGSERIAL (自增大整数, 1 到 2^63-1)
boolean, // BOOLEAN (布尔值)
char, // CHAR (定长字符串)
check, // 定义检查约束
date, // DATE (日期)
decimal, // DECIMAL/NUMERIC (精确数字, 指定 precision 和 scale)
doublePrecision, // DOUBLE PRECISION (双精度浮点数, 8字节)
foreignKey, // 定义外键
index, // 创建索引
integer, // INTEGER (整数, -2^31 到 2^31-1)
interval, // INTERVAL (时间间隔)
json, // JSON (JSON 数据)
jsonb, // JSONB (二进制 JSON, 推荐使用)
numeric, // NUMERIC (同 decimal)
pgEnum, // 定义枚举类型 (PostgreSQL ENUM)
pgMaterializedView, // 创建物化视图
pgPolicy, // 定义行级安全策略
pgRole, // 定义角色
pgSequence, // 创建序列
pgTable, // 定义表
pgTableCreator, // 创建自定义表名生成器的表定义函数
pgView, // 创建视图
primaryKey, // 定义主键
serial, // SERIAL (自增整数, 1 到 2^31-1)
text, // TEXT (变长字符串, 无长度限制)
time, // TIME (时间)
timestamp, // TIMESTAMP (日期时间, 无时区)
unique, // 定义唯一约束
uniqueIndex, // 创建唯一索引
uuid, // UUID (通用唯一标识符)
varchar, // VARCHAR (变长字符串, 指定长度)
} from "drizzle-orm/pg-core";
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,
});