feat: 完成分类、worksheet 接口开发,资源迁移到七牛
This commit is contained in:
@@ -94,6 +94,7 @@ ALTER TABLE public.users
|
||||
REFERENCES public.assets (id) ON UPDATE RESTRICT ON DELETE RESTRICT;
|
||||
|
||||
CREATE TABLE public.categories (
|
||||
status varchar(16) NOT NULL DEFAULT 'draft',
|
||||
id varchar(128) COLLATE "C" PRIMARY KEY,
|
||||
name varchar(100) NOT NULL,
|
||||
icon varchar(1024) NOT NULL,
|
||||
@@ -107,9 +108,13 @@ CREATE TABLE public.categories (
|
||||
REFERENCES public.categories (id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||
CONSTRAINT categories_icon_asset_id_fkey FOREIGN KEY (icon_asset_id)
|
||||
REFERENCES public.assets (id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||
CONSTRAINT categories_status_check CHECK (status IN ('draft', 'active', 'hidden')),
|
||||
CONSTRAINT categories_parent_not_self_check CHECK (parent_id IS NULL OR parent_id <> id)
|
||||
);
|
||||
|
||||
CREATE INDEX categories_status_parent_sort_idx ON public.categories (status, parent_id, sort_order, id);
|
||||
COMMENT ON COLUMN public.categories.status IS '发布状态:draft 开发测试,active 上线,hidden 下架;公开访问还需所有上级分类 active';
|
||||
|
||||
CREATE INDEX categories_parent_sort_idx ON public.categories (parent_id, sort_order, id);
|
||||
|
||||
CREATE TABLE public.worksheets (
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
-- 既有分类保留当前公开行为;以后新建分类默认草稿。不要重跑已成功的增量迁移。
|
||||
BEGIN;
|
||||
ALTER TABLE public.categories ADD COLUMN status varchar(16) NOT NULL DEFAULT 'draft';
|
||||
UPDATE public.categories SET status = 'active';
|
||||
ALTER TABLE public.categories ADD CONSTRAINT categories_status_check
|
||||
CHECK (status IN ('draft', 'active', 'hidden'));
|
||||
CREATE INDEX categories_status_parent_sort_idx ON public.categories (status, parent_id, sort_order, id);
|
||||
COMMENT ON COLUMN public.categories.status IS '发布状态:draft 开发测试,active 上线,hidden 下架;公开访问还需所有上级分类 active';
|
||||
COMMIT;
|
||||
@@ -1,5 +1,7 @@
|
||||
# v3.5 PostgreSQL 初始化 SQL
|
||||
|
||||
> 2026-10-15:已接入 Prisma Schema 与 `0_v35_baseline`,本地现有库仅登记基线,没有重建业务表。下文保留原手工 SQL 的执行路径和历史核查;新的空库优先使用 Prisma migrate deploy,后续升级新增迁移。详见 [Prisma 说明](../README.md)。
|
||||
|
||||
基于 [数据库设计](../../../../docs/v3.5/数据库设计文档.md),面向 PostgreSQL 18。缩进统一 4 个空格;文件是普通 PostgreSQL SQL,可使用 psql 或数据库客户端执行。
|
||||
|
||||
2026-10-12 已在本地 PostgreSQL 18.6 临时数据库执行 001/002/003,并重复执行 003 验证不覆盖 enabled=false;10 张表与 19 项关键约束检查通过,历史 NULL 事件、标识大小写及资产所有者删除行为符合设计。验证库已删除;随后已在用户授权下正式初始化 doodle_dev,10 张表与两条配置记录核对通过。
|
||||
@@ -28,7 +30,7 @@ Docker 已在首次启动时创建 doodle_dev,**当前本地跳过 001**。其
|
||||
| 已执行部分增量的库 | 按编号顺序执行尚未应用的后续文件 |
|
||||
| 已执行 008 的库 | 无需再次执行 DDL |
|
||||
|
||||
004~008 是历史结构的升级文件,不能用于已执行最新 002 的空库基线。下文各阶段记录解释该次变更,不表示只完成其中某一步就已到最新结构。Prisma 迁移历史尚未接入,执行前依据实际结构及执行记录确认当前版本。
|
||||
004~008 是历史结构的升级文件,不能用于已执行最新 002 的空库基线。下文各阶段记录解释该次变更,不表示只完成其中某一步就已到最新结构。当前已接入 Prisma 迁移基线,旧手工库在登记前依据实际结构及执行记录确认当前版本。
|
||||
|
||||
## 空库初始化示例
|
||||
|
||||
@@ -64,7 +66,7 @@ SELECT id, value FROM public.settings;
|
||||
- 下载 NULL exportId 只允许 import 来源;非空事件按 userId + exportId 去重。计数不会通过触发器自动更新,由后续业务事务实现。
|
||||
- tags 元素类型、分类多层循环、任务租约/锁、JWT 失效与管理员权限由后续业务实现;SQL 不代表业务 API 已完成。
|
||||
- updatedAt 和 contentUpdatedAt 由服务显式维护,不添加把两者混为一谈的更新时间触发器。
|
||||
- Prisma 尚未安装,Schema 和迁移历史尚未接入。后续接入时将本 SQL 纳入正式基线;已有表的库须采用基线登记流程,不能直接再次执行同一 DDL。
|
||||
- Prisma Schema 和迁移历史已接入,本 SQL 已纳入正式基线;已有表的库须先核对再登记基线,不能直接再次执行同一 DDL。
|
||||
|
||||
## 单小程序身份简化(2026-10-14)
|
||||
|
||||
@@ -180,3 +182,7 @@ docker compose --env-file .env -f infra/compose.yaml exec -T postgres \
|
||||
- 所有临时核查库已清理;开发库只读比对,无样本写入。本次只修正文档说明,无需新增 DDL 或再次升级开发库。
|
||||
|
||||
业务归属/权限、首次发布、计数和审计事务、任务调度等仍需服务端接入;SQL 验证不代替业务 API 验收。
|
||||
|
||||
## 分类发布状态(2026-10-16)
|
||||
|
||||
最新 002/003 包含分类 status,空库不再执行 009。原 004~008 及 Prisma 旧基线不改写;已有结构新增 009(或使用对应 Prisma 迁移,二者不能重复)。009 新增 status 默认 draft、三态 CHECK 和状态/父级索引,同时将既有分类置为 active 保持兼容。当前为 13 张表、136 个字段。新后端公开接口同时检查分类祖先状态,管理员状态修改使数据库页面快照失效。
|
||||
|
||||
Reference in New Issue
Block a user