@danielcok17/prisma-db

中文文档
1.20.45发布于 2026/11/07MITTypeScriptCommonJS近 30 天下载 1983

法律人工智能应用的共享Prisma计划

中文使用文档
文档目录17 节
  1. 结构
  2. 脚本
  3. 导入
  4. 环境
  5. Schema 路径( 用于工具 / CI)
  6. 安装
  7. 快开始
  8. 哪些数据库迁移(IP-011 Q5)
  9. 扩大合同
  10. 部署命令
  11. 出版前的验证
  12. 正在迁移。 yml
  13. 迁移失败
  14. 历史上采用的表格
  15. 地方发展
  16. Prisma 工作室( 可选)
  17. 解决问题

@danielcok17/prisma-db (英语)

与双Prisma客户端共享 Prisma 设置: 用于您的应用表格( )app 计划),用于现有法律表格(schema)public 计划.

结构

  • prisma/app.prisma - 你的模型,迁移到这里(使用图) app(中文(简体) )
  • prisma/law.prisma - 现有 public.law_* 财务报告和审定财务报表 public.version_paragraphs 表格(仅回顾)
  • src/utils.ts - 出口 appPrisma 财务报告和审定财务报表 lawPrisma

脚本

  • npm run db:generate - 生成两个Prisma客户端
  • npm run db:migrate - 管理迁移 app.prisma 仅限
  • npm run db:migrate:prod - 部署迁移(应用程序)
  • npm run db:pull:law - 对现有公法表格进行回顾
  • npm run db:studio - 打开Prisma工作室 app

导入

import { appPrisma, lawPrisma } from '@danielcok17/prisma-db';
// or direct clients if you need advanced typing control
import { AppPrismaClient, LawPrismaClient } from '@danielcok17/prisma-db';

环境

在您的运行时间/ 构建中设置以下 Env vars( 名称匹配 .prisma 文件数 :

POSTGRES_PRISMA_URL=postgres://USER:PASS@HOST:PORT/DB?schema=app
POSTGRES_URL_NON_POOLING=postgres://USER:PASS@HOST:PORT/DB?schema=app
POSTGRES_PRISMA_URL_LAW=postgres://READONLY_USER:PASS@HOST:PORT/DB
POSTGRES_URL_NON_POOLING_LAW=postgres://READONLY_USER:PASS@HOST:PORT/DB

注释:

  • 使用只读角色 POSTGRES_PRISMA_URL_LAW。 。 。 .
  • 确保 DB 有 CREATE SCHEMA IF NOT EXISTS app; 执行一次.

Schema 路径( 用于工具 / CI)

此软件包发布 prisma 目录。 您可以在程序上获得计划绝对路径 :

import { appPrismaSchemaPath, lawPrismaSchemaPath, prismaMigrationsPath } from '@danielcok17/prisma-db';

实例:

# Use the packaged app schema with Prisma CLI
npx prisma migrate deploy --schema "$(node -e "console.log(require('@danielcok17/prisma-db').appPrismaSchemaPath)")"

# Or resolve directly to the file shipped in the package
APP_SCHEMA=$(node -e "console.log(require.resolve('@danielcok17/prisma-db/prisma/app.prisma'))")
npx prisma generate --schema "$APP_SCHEMA"

安装

npm install --save-exact @danielcok17/prisma-db@<x.y.z>
# or
yarn add @danielcok17/prisma-db

软件包运行 Prisma 生成于邮站. 如果您的环境阻挡了生命周期脚本, 请使用手动生成 appPrismaSchemaPath 如下所示.

快开始

  1. 设置 Env vars( 匹配在 .prisma 文件数 :
POSTGRES_PRISMA_URL=postgres://USER:PASS@HOST:PORT/DB?schema=app
POSTGRES_URL_NON_POOLING=postgres://USER:PASS@HOST:PORT/DB?schema=app
POSTGRES_PRISMA_URL_LAW=postgres://READONLY_USER:PASS@HOST:PORT/DB
POSTGRES_URL_NON_POOLING_LAW=postgres://READONLY_USER:PASS@HOST:PORT/DB
  1. 应用迁移到 app 计划 :
APP_SCHEMA=$(node -e "console.log(require('@danielcok17/prisma-db').appPrismaSchemaPath)")
npx prisma migrate deploy --schema "$APP_SCHEMA"
  1. 使用客户端 :
import { appPrisma, lawPrisma } from '@danielcok17/prisma-db';

const users = await appPrisma.user.findMany();
const laws = await lawPrisma.lawVersion.findMany({ take: 5 });

哪些数据库迁移(IP-011 Q5)

这个寄存器拥有应用计划及其迁移历史. 只有这个 寄存器将迁移到 DEV 和 PROD,通过 .github/workflows/migrate.yml. 聊天人- ii 和 rag- backend 永不运行 prisma migrate deploy 部署时; 编译服务 db_schema_check 运行 prisma migrate status 并停止从数据库开始应用程序 缺乏迁移 图像船.

规则:

  • 消费者一号 准确 版本 ("@danielcok17/prisma-db": "1.20.37",没有 ^, (中文(简体) ), 两个仓库都一样 从不 latest。 。 。 .
  • 永远不要编辑应用到任何地方的迁移 。 以一新相接而后行.
  • 应用程序中没有 DDL( 无运行时间) CREATE TABLE没有脚本.
  • law.prisma 仅仅是回顾( e)npm run db:pull:law它从未迁移.
  • 审查每个生成的 SQL 文件 . prisma migrate dev 目前也发出 DROP TABLE "BackgroundJob" 财务报告和审定财务报表 DROP TABLE "legal_opinion" (由 没有模型的迁移 app.prisma),从不进行这些滴入.

扩大合同

每次发布都必须与先前的应用程序图像配合,因为数据库 在应用程序部署之前迁移,然后回滚 图像在新的计划.

  1. 扩展 (任何释放):新表格、新可失效的栏或栏 默认,新索引。 后补入分出步出或放出.
  2. 合同 (后来发布,在每一个部署的消费者停止使用旧的) 形状: 放下或重命名一列或一表, 缩小类型, 添加 NOT NULL 无 默认,添加对现有数据的独特约束.

重命名总是被扩展( 添加新字) - > 既写入又读取新字的部署代码 - > 合同(旧的),以后发布.

部署命令

步骤大卫方案
1个将策略 PR 合并为 main。 。 。 . publish-npm.yml 校验、 碰撞补丁版本并发布- 说吧
2个publish-npm.yml 电话 migrate.yml 页:1 development 带有新版本运行 migrate.yml 手动 : environment=production,同一版本(在 main bE/FE的释放)
3个将精确的版本按入rag-backend和chatbot-ui,合并到 develop释放后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端后端下端后端后端后端后端后端后端后端后端后端后端后端后端后端后端
页:1部署,然后是FE; db_schema_check 通过db_schema_check 通过

如果第2步被跳过, db_schema_check 失败, 且新应用程序容器是 不开始(在PROD聊天机-i上先停止旧的容器,所以这意味着停机时间). 总是在版本被撞倒之前迁移.

出版前的验证

publish-npm.yml 运行在每一个 PR 到 main 在每次出版之前 清洁 PostgreSQL 15 (PROD)和 18 (DEV) 服务容器:

  • prisma validate 页:1 app.prisma 财务报告和审定财务报表 law.prisma, (中文(简体) ),
  • prisma migrate deploy 整个历史,然后 prisma migrate status, (中文(简体) ),
  • scripts/check-migration-drift.sh: 重放的数据库必须相等 app.prisma (只允许记录已知漂移), 和每个数据库中的功能 prisma/functions.lock 必须与其 md5(pg_get_functiondef) (功能由名称来表示,例如. _v1,永远 出版后更改,
  • npm run build 财务报告和审定财务报表 scripts/check-pack.mjs焦油丸里有两种药方, 每个 migration.sql, (中文(简体) ), migration_lock.toml 财务报告和审定财务报表 dist。 。 。 .

版本的凸起只在验证后发生,所以一个失败的检查不会公布任何内容.

正在迁移。 yml

# DEV (normally automatic after a publish)
gh workflow run migrate.yml --ref main -f version=1.20.37 -f environment=development
# PROD (manual only, from main, before the BE/FE release)
gh workflow run migrate.yml --ref main -f version=1.20.37 -f environment=production

任务验证了准确的版本( T)x.y.z,必须公布),准确 Prisma CLI 版本从 package-lock.json发送 deploy/migrate-on-host.sh 超过SSH。 在主机上,脚本使用共享部署锁定(等待最多1200 s,因为 部署通过旧版IP-012的排水口 把它拖走 然后运行一个丢弃 node 后端网络上下载 软件包 npm pack,安装被绑定的 Prisma CLI,运行 prisma migrate deploy 财务报告和审定财务报表 prisma migrate status。数据库 URL 运行于 stdin 时进入 a 0600 env 文件和 从不出现在命令行或日志中。 运行按环境序列进行.

DEV (英语:smartlex(中文(简体) )PROD(solty(中文(简体) )
SSH 服务器强制命令 /opt/smartlex/ops/ci/ci-deploy.sh (单位:千美元)migrate db-dev <version>(中文(简体) )plain SSH, 脚本复制到 ~/deploy/prisma-migrate/
锁定/opt/smartlex/ops/ci/.deploy.lock (与FE/BE DEV部署共用)~/deploy/.deploy.lock (与FE/BE PROD的部署共享:聊天机-i和后端 deploy/ci/prod-deploy.sh 从IP-012阶段开始
网络develop_backendprod_backend

需要此寄存器中的 GitHub 环境( 只名, 相同值) Rag后端的环境; 数据库 URL 必须是 不变 对那些 应用程序的使用,包括任何 ?schema= 参数 :

环境变量秘诀
development (处级政策) main(中文(简体) )SERVER_IP, (中文(简体) ), SERVER_PORT, (中文(简体) ), SERVER_USER, (中文(简体) ), SERVER_KNOWN_HOSTSPRIVATE_SERVER_KEY, (中文(简体) ), POSTGRES_PRISMA_URL, (中文(简体) ), POSTGRES_URL_NON_POOLING
production (处级政策) main(中文(简体) )SERVER_IP, (中文(简体) ), SERVER_PORT, (中文(简体) ), SERVER_USER, (中文(简体) ), SERVER_KNOWN_HOSTSPRIVATE_SERVER_KEY, (中文(简体) ), POSTGRES_PRISMA_URL, (中文(简体) ), POSTGRES_URL_NON_POOLING

DEV 输入点接受 migrate db-dev <x.y.z> 仅取自 deploy/ci/ssh-entrypoint.sh 搭载IP-011Q5 PR的飞船,载入聊天舱 后端; 安装在 smartlex 在第一次 DEV 运行前( 参见后端) deploy/ci/README.md,"一次性SSH入站安装"部分.

迁移失败

prisma migrate deploy 在第一次失败的迁移时停止,并将它记录为 失败; db_schema_check 然后使新的应用程序容器从开始 继续运行。 运行时绝不编辑已失败的迁移 随便哪里 解决原因,然后在主机标记上 它滚回 (单位:千美元)prisma migrate resolve --rolled-back <name> 在同一被丢弃的容器中) 或运送经过更正的后续移民,并运行 migrate.yml 再来一次.

历史上采用的表格

20261015120000_adopt_security_rate_limit_and_document_draft_session 通过 SecurityRateLimit (话语) scripts/bootstrap-rate-limit-table.mjs和 DocumentDraftSession (破旧后端) migrateDocumentDraftSession) (中文(简体) ). 两个都已经 在DEV和PROD上存在;迁移用途 CREATE ... IF NOT EXISTS 然后检查 列类型,无效性和主键,所以它是对已有的, 匹配表格,在干净的数据库中创建表格,在表格中大声失败 以相别相.

地方发展

仅限本地开发数据库. 共享的DEV和PROD由 migrate.yml (见上文),绝不来自消费者.

npm install --save-exact @danielcok17/prisma-db@<x.y.z>
APP_SCHEMA=$(node -e "console.log(require('@danielcok17/prisma-db').appPrismaSchemaPath)")
npx prisma generate --schema "$APP_SCHEMA"
npx prisma migrate deploy --schema "$APP_SCHEMA"   # local database only
npx prisma migrate status --schema "$APP_SCHEMA"   # what the consumers' db_schema_check runs

不运行 prisma migrate dev 在消费者应用。 在此中更改Schema 存储器并作为版本发布.

Prisma 工作室( 可选)

APP_SCHEMA=$(node -e "console.log(require('@danielcok17/prisma-db').appPrismaSchemaPath)")
npx prisma studio --schema "$APP_SCHEMA"

解决问题

  • 缺少客户类型/运行时间:运行 npx prisma generate --schema "$(node -e "console.log(require('@danielcok17/prisma-db').appPrismaSchemaPath)")"。 。 。 .
  • 迁移部署失败: 校验 env vars 和 DB 连接; 确保 app 计划存在.
  • 只读访问法律表格:使用用户/作用,只使用 SELECT 权限 POSTGRES_PRISMA_URL_LAW。 。 。 .

版本与发布记录

@danielcok17/prisma-db 共发布 83 个版本,首次发布于 2025/08/15;过去 12 个月发布了 72 个版本。

版本发布日期距今
1.20.45latest2026/11/077 天前
1.20.442026/11/0410 天前
1.20.432026/11/0410 天前
1.20.422026/10/2718 天前
1.20.412026/10/2223 天前
1.20.402026/10/2223 天前

关于 @danielcok17/prisma-db 的常见问题

@danielcok17/prisma-db 是什么?

法律人工智能应用的共享Prisma计划

如何安装 @danielcok17/prisma-db?

在项目目录运行 npm install @danielcok17/prisma-db,或使用 pnpm add / yarn add / bun add。

@danielcok17/prisma-db 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@danielcok17/prisma-db 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@danielcok17/prisma-db 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@danielcok17/prisma-db 可以商用吗?

@danielcok17/prisma-db 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@danielcok17/prisma-db 的下载量有多少?

根据 npm 官方下载统计,@danielcok17/prisma-db 在 2026/10/11 – 2026/11/09 这 30 天内被下载 1,983 次,日均约 66 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@danielcok17/prisma-db 还在维护吗?

最新版本 1.20.45 发布于 2026/11/07(7 天前);至今共发布 83 个版本,其中过去 12 个月发布了 72 个;首次发布于 2025/08/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。