# @danielcok17/prisma-db 中文文档

规范地址：https://npmcn.com/package/%40danielcok17/prisma-db/

版本：1\.20\.45
npm 元数据更新时间：2026-11-07T01:19:25.696Z
中文译文更新时间：2026-11-14T16:20:55.012Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40danielcok17/prisma-db
原文对照：https://npmcn.com/package/%40danielcok17/prisma-db/?lang=original
项目主页：https://github.com/SmartLex-Legal/legal-ai-prisma-db#readme
源码仓库：https://github.com/SmartLex-Legal/legal-ai-prisma-db

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：277 kB，95 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.18
- 运行依赖：1 个
- 首次发布：2025-08-15T12:27:45.684Z
- 最新版本发布：2026-11-07T01:19:25.441Z
- 近 30 天下载量：1983（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：83（近 12 个月 72 个）

## 中文简介

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

## 安装

```sh
npm install @danielcok17/prisma-db
```

也可以使用：`pnpm add @danielcok17/prisma-db`、`yarn add @danielcok17/prisma-db`、`bun add @danielcok17/prisma-db`

## README

# @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`

## 导入

```ts
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` 目录。 您可以在程序上获得计划绝对路径 :

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

实例:

```bash
# 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"
```

## 安装

```bash
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
```

2.  应用迁移到 `app` 计划 :

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

3.  使用客户端 :

```ts
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

```bash
# 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_backend` | `prod_backend` |

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

| 环境 | 变量 | 秘诀 |
| --- | --- | --- |
| `development` (处级政策) `main`(中文(简体) ) | `SERVER_IP`, (中文(简体) ), `SERVER_PORT`, (中文(简体) ), `SERVER_USER`, (中文(简体) ), `SERVER_KNOWN_HOSTS` | `PRIVATE_SERVER_KEY`, (中文(简体) ), `POSTGRES_PRISMA_URL`, (中文(简体) ), `POSTGRES_URL_NON_POOLING` |
| `production` (处级政策) `main`(中文(简体) ) | `SERVER_IP`, (中文(简体) ), `SERVER_PORT`, (中文(简体) ), `SERVER_USER`, (中文(简体) ), `SERVER_KNOWN_HOSTS` | `PRIVATE_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` (见上文),绝不来自消费者.

```bash
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 工作室( 可选)

```bash
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 是什么？

法律人工智能应用的共享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 和提交记录判断。

