@hile/typeorm 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +22 -18
  2. package/SKILL.md +35 -76
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @hile/typeorm
2
2
 
3
- 基于 `@hile/core` 的 TypeORM 集成:将 TypeORM DataSource 封装为 Hile 服务(单例、随进程退出销毁),并提供事务封装 `transaction`。
3
+ 基于 `@hile/core` 的 TypeORM 集成:将 `DataSource` 封装为 Hile 服务(单例、可优雅销毁),并提供事务辅助函数 `transaction`。
4
4
 
5
5
  ## 安装
6
6
 
@@ -8,12 +8,10 @@
8
8
  pnpm add @hile/typeorm
9
9
  ```
10
10
 
11
- 依赖 `@hile/core` 与 `typeorm`,请一并安装。
11
+ 同时安装依赖:`@hile/core`、`typeorm`。
12
12
 
13
13
  ## 快速开始
14
14
 
15
- 通过环境变量配置数据库,用 `loadService` 获取 DataSource:
16
-
17
15
  ```typescript
18
16
  import { loadService } from '@hile/core'
19
17
  import typeormService from '@hile/typeorm'
@@ -24,7 +22,7 @@ const ds = await loadService(typeormService)
24
22
 
25
23
  ## 环境变量
26
24
 
27
- DataSource 从以下环境变量读取配置:
25
+ 默认 DataSource 从以下环境变量读取配置:
28
26
 
29
27
  | 变量 | 说明 |
30
28
  |------|------|
@@ -34,15 +32,20 @@ DataSource 从以下环境变量读取配置:
34
32
  | `TYPEORM_PASSWORD` | 密码 |
35
33
  | `TYPEORM_DATABASE` | 数据库名 |
36
34
  | `TYPEORM_PORT` | 端口 |
37
- | `TYPEORM_CHARSET` | 数据库字符集 |
35
+ | `TYPEORM_CHARSET` | 字符集 |
38
36
  | `TYPEORM_ENTITY_PREFIX` | 实体表名前缀 |
39
37
  | `TYPEORM_ENTITIES` | 实体目录(单一路径) |
40
38
 
41
- 行为:`synchronize: true`;当 `NODE_ENV === 'development'` 时开启 `logging`。未设置 `TYPEORM_ENTITIES` 时实体列表为空。连接在进程退出时通过 Hile 的 shutdown 自动销毁。
39
+ 行为说明:
40
+
41
+ - `synchronize: true`
42
+ - 当 `NODE_ENV === 'development'` 时启用 `logging`
43
+ - 未配置 `TYPEORM_ENTITIES` 时,实体数组为空
44
+ - 进程退出时通过 Hile 的 shutdown 自动销毁连接
42
45
 
43
- ## 事务
46
+ ## 事务辅助
44
47
 
45
- 使用 `transaction` 在 DataSource 上执行事务,并在失败时执行已注册的回滚逻辑(LIFO):
48
+ 使用 `transaction` 在 DataSource 上执行事务,并注册失败时的回滚逻辑(LIFO):
46
49
 
47
50
  ```typescript
48
51
  import { loadService } from '@hile/core'
@@ -52,20 +55,21 @@ import typeormService from '@hile/typeorm'
52
55
  const ds = await loadService(typeormService)
53
56
 
54
57
  const result = await transaction(ds, async (runner, rollback) => {
55
- // 使用 runner 进行查询/写入
58
+ // runner 执行数据库操作
56
59
  rollback(() => {
57
- // 事务失败时执行的清理(如撤销外部副作用)
60
+ // 事务失败时执行的补偿逻辑
58
61
  })
62
+
59
63
  return value
60
64
  })
61
65
  ```
62
66
 
63
- - 成功:`transaction` 提交并返回回调的返回值。
64
- - 失败:回滚事务并按后进先出顺序执行所有通过 `rollback(fn)` 注册的函数,再抛出原错误。
67
+ - 成功:提交事务并返回回调结果
68
+ - 失败:回滚事务,并按后进先出顺序执行 `rollback(fn)` 注册函数,最后抛出原错误
65
69
 
66
70
  ## 与 @hile/cli 一起使用
67
71
 
68
- 若使用 `@hile/cli` 启动应用,可在项目根 `package.json` 中配置自动加载本包默认服务:
72
+ 可在 `package.json` 配置自动加载:
69
73
 
70
74
  ```json
71
75
  {
@@ -75,15 +79,15 @@ const result = await transaction(ds, async (runner, rollback) => {
75
79
  }
76
80
  ```
77
81
 
78
- 之后在业务中直接 `loadService(typeormService)` 即可,DataSource 会在应用启动时初始化、退出时销毁。
82
+ 这样应用启动时会初始化 DataSource,退出时自动销毁。
79
83
 
80
84
  ## 开发
81
85
 
82
86
  ```bash
83
87
  pnpm install
84
- pnpm build # 编译
85
- pnpm dev # 监听模式
86
- pnpm test # 测试
88
+ pnpm build
89
+ pnpm dev
90
+ pnpm test
87
91
  ```
88
92
 
89
93
  ## License
package/SKILL.md CHANGED
@@ -1,118 +1,77 @@
1
1
  ---
2
2
  name: hile-typeorm
3
- description: Code generation and usage rules for @hile/typeorm. Use when using TypeORM DataSource as Hile service, transaction helper, or when the user asks about @hile/typeorm or TypeORM service patterns.
3
+ description: @hile/typeorm 的代码生成与使用规范。适用于 DataSource 服务加载、transaction 事务封装、及与 @hile/core/@hile/cli 集成场景。
4
4
  ---
5
5
 
6
- # @hile/typeorm
6
+ # @hile/typeorm SKILL
7
7
 
8
- 本文档是面向 AI 编码模型和人类开发者的 **代码生成规范**,阅读后应能正确地使用本库编写符合架构规则的代码。
8
+ 本文档规范 `@hile/typeorm` 的使用方式,确保 DataSource 生命周期与事务行为一致。
9
9
 
10
- ---
11
-
12
- ## 1. 架构总览
10
+ ## 1. 架构概览
13
11
 
14
- `@hile/typeorm` 在 `@hile/core` 之上提供:
12
+ `@hile/typeorm` 提供:
15
13
 
16
- - **默认导出**:一个通过 `defineService` 定义的 TypeORM **DataSource** 服务,配置来自环境变量,进程退出时通过 `shutdown` 注册 `connection.destroy()`。
17
- - **transaction**:事务封装函数,接收 DataSource 与回调,在回调内提供 `QueryRunner` 与 `rollback` 注册器;提交成功则返回结果,失败则回滚并按 LIFO 执行已注册的 rollback 回调。
14
+ - 默认导出:Hile 服务化的 TypeORM `DataSource`
15
+ - `transaction`:事务封装,支持失败时 LIFO 执行补偿回调
18
16
 
19
- 依赖:`@hile/core`、`typeorm`。生成代码时必须遵循 Hile 的服务定义与加载规则,并正确使用本包默认服务与 `transaction` 签名。
20
-
21
- ---
17
+ 依赖:`@hile/core`、`typeorm`。
22
18
 
23
- ## 2. 类型与环境变量
24
-
25
- ### 2.1 环境变量(DataSource 默认服务)
19
+ ## 2. 环境变量
26
20
 
27
21
  | 变量 | 说明 |
28
- |------|------|
22
+ |---|---|
29
23
  | `TYPEORM_TYPE` | 数据库类型 |
30
24
  | `TYPEORM_HOST` | 主机 |
31
25
  | `TYPEORM_USERNAME` | 用户名 |
32
26
  | `TYPEORM_PASSWORD` | 密码 |
33
27
  | `TYPEORM_DATABASE` | 数据库名 |
34
- | `TYPEORM_PORT` | 端口(字符串会被转为数字) |
35
- | `TYPEORM_CHARSET` | 数据库字符集 |
36
- | `TYPEORM_ENTITY_PREFIX` | 实体表名前缀 |
37
- | `TYPEORM_ENTITIES` | 实体目录(单一路径,会以单元素数组传入 DataSource.entities) |
38
-
39
- DataSource 行为:`synchronize: true`;`logging` 在 `NODE_ENV === 'development'` 时为 `true`。未设置 `TYPEORM_ENTITIES` 时 `entities` 为空数组。
40
-
41
- ### 2.2 类型(生成代码时须遵循)
28
+ | `TYPEORM_PORT` | 端口(字符串转数字) |
29
+ | `TYPEORM_CHARSET` | 字符集 |
30
+ | `TYPEORM_ENTITY_PREFIX` | 表名前缀 |
31
+ | `TYPEORM_ENTITIES` | 实体目录(单一路径) |
42
32
 
43
- - 使用 `typeorm` 的 `DataSource`、`DataSourceOptions`、`QueryRunner`。
44
- - **transaction** 签名:
45
-
46
- ```typescript
47
- function transaction<T>(
48
- datasource: DataSource,
49
- callback: (
50
- runner: QueryRunner,
51
- rollback: (roll: () => unknown | Promise<unknown>) => number
52
- ) => Promise<T>
53
- ): Promise<T>;
54
- ```
55
-
56
- - 默认服务:`defineService(async (shutdown) => { ... return connection; })`,在 `connection.initialize()` 前 `shutdown(() => connection.destroy())`。
57
-
58
- ---
33
+ 行为:
59
34
 
60
- ## 3. 代码生成模板与规则
35
+ - `synchronize: true`
36
+ - `NODE_ENV === 'development'` 时 `logging: true`
37
+ - 未设置 `TYPEORM_ENTITIES` 时实体为空数组
61
38
 
62
- ### 3.1 使用默认 DataSource 服务
39
+ ## 3. 标准模板
63
40
 
64
- **模板:**
41
+ ### 3.1 加载默认 DataSource 服务
65
42
 
66
43
  ```typescript
67
44
  import { loadService } from '@hile/core'
68
45
  import typeormService from '@hile/typeorm'
69
46
 
70
47
  const ds = await loadService(typeormService)
71
- // 使用 ds 进行 TypeORM 操作
72
48
  ```
73
49
 
74
- **规则:**
75
- - 仅通过 `loadService(默认导出)` 获取 DataSource,不要自行 `new DataSource` 并暴露为“全局数据源”与 Hile 并存。
76
- - 环境变量在应用启动前必须配置完整,否则 DataSource 初始化可能失败。
77
-
78
- ### 3.2 在事务中执行并注册回滚
79
-
80
- **模板:**
50
+ ### 3.2 事务执行与补偿
81
51
 
82
52
  ```typescript
83
- import { loadService } from '@hile/core'
84
53
  import { transaction } from '@hile/typeorm'
85
- import typeormService from '@hile/typeorm'
86
-
87
- const ds = await loadService(typeormService)
88
54
 
89
55
  const result = await transaction(ds, async (runner, rollback) => {
90
- // 使用 runner 进行查询/写入
91
- rollback(() => { /* 业务级回滚逻辑,失败时 LIFO 执行 */ })
56
+ rollback(async () => {
57
+ // 事务失败时执行的补偿逻辑
58
+ })
59
+
60
+ // 使用 runner 执行写操作
92
61
  return value
93
62
  })
94
63
  ```
95
64
 
96
- **规则:**
97
- - 第一个参数必须是 `DataSource` 实例(通常来自 `loadService(typeormService)`)。
98
- - 回调内需要“事务失败时执行”的逻辑通过 `rollback(fn)` 注册,不要依赖在回调外再执行清理。
99
-
100
- ### 3.3 与 @hile/core 的约定
101
-
102
- - 本包默认导出是 Hile 服务(`defineService`),遵循 core 的 SKILL:服务函数为 `async (shutdown)`,资源创建后立即 `shutdown(() => connection.destroy())`。
103
- - 其他服务若依赖 DataSource,应在该服务函数内 `loadService(typeormService)` 获取,不要在模块顶层缓存 DataSource。
65
+ ## 4. 强制规则
104
66
 
105
- ### 3.4 反模式
106
-
107
- - **不要**在未通过 Hile 加载的情况下,多处自行 `new DataSource` 并与本包默认服务混用。
108
- - **不要**在 `transaction` 回调外依赖“事务未提交”的状态做后续逻辑;提交/回滚由 `transaction` 内部统一处理。
109
- - **不要**省略 `shutdown(() => connection.destroy())` 或将其放在 `initialize()` 之后才注册(应在连接初始化前注册,与源码一致)。
110
-
111
- ---
67
+ 1. 统一通过 `loadService(typeormService)` 获取 DataSource。
68
+ 2. 不在多个模块里自行 new 全局 DataSource 与本包混用。
69
+ 3. 需要失败补偿时,使用 `rollback(fn)` 注册,不在事务外分散处理。
70
+ 4. 依赖 DataSource 的服务在函数内部 `loadService`,不要模块顶层缓存。
112
71
 
113
- ## 4. API 速查
72
+ ## 5. API 速查
114
73
 
115
74
  | 导出 | 说明 |
116
- |------|------|
117
- | 默认导出 | `defineService` 返回的 DataSource 服务(需通过 `loadService` 使用) |
118
- | `transaction(datasource, callback)` | DataSource 上执行事务,回调接收 `(runner, rollback)`,返回 `Promise<T>` |
75
+ |---|---|
76
+ | 默认导出 | Hile 服务化 DataSource |
77
+ | `transaction(datasource, callback)` | 事务封装,失败时执行 rollback 队列 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hile/typeorm",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "TypeORM DataSource as Hile service with transaction helper",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,8 +22,8 @@
22
22
  "vitest": "^4.0.18"
23
23
  },
24
24
  "dependencies": {
25
- "@hile/core": "^1.0.16",
25
+ "@hile/core": "^1.0.17",
26
26
  "typeorm": "^0.3.28"
27
27
  },
28
- "gitHead": "a6eab4e7803f0df7d4bca9a0bdeca76692dbc883"
28
+ "gitHead": "6672fc4cdc551c4265912cc85ee2e96fc44bc4c9"
29
29
  }