kra-new/internal/data/README.md

33 lines
1.8 KiB
Markdown
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.

# Data Layer
`data` owns database clients, persistence models, migrations, configuration
watching, and repository implementations.
- `system/`: system repositories and system table persistence
- `task/`: timed-task tables and task persistence
- `integration/`: `sys_integration_configs` and integration configuration persistence
- `payment/`: payment-order persistence
- each subpackage owns its Wire `ProviderSet`; the root package only binds the
shared `Data` infrastructure and aggregates those sets, mirroring `biz`
- root files: shared database lifecycle, runtime clients, configuration
orchestration, data-scope auditing, and migration orchestration
新增数据模块时创建 `internal/data/<module>`,提供 `ProviderSet`
`Migrations()`,再在 `internal/modules/<module>/definition.go` 注册迁移与
管理面,最后在根 `data.ProviderSet` 中注册该模块。根 `data` 不应直接
拥有业务表 PO也不应让一个模块引用另一个模块的私有 PO。
Root files intentionally stay in one package because they share `Data` state and
reload locks. Do not split them into packages only to reduce file count.
当前内置数据模块为 `system`、`integration`、`task` 和 `payment`。其中:
- `system` 只拥有 `sys_*` 系统表、系统仓储、种子和系统维护清理;
- `integration` 唯一拥有 `sys_integration_configs` 表模型、配置仓储和通信默认值;
- `task` 只拥有定时任务与任务日志表;
- `payment` 只拥有 `pay_orders` 等支付持久化,通过 `biz/integration.PaymentConfigReader`
读取支付配置,不感知 integration 的 PO 或表结构。
配置文件迁移、数据库切换、Redis/Mongo/对象存储重载仍属于根 data 的生命周期编排,
不等同于某个业务模块的表仓储。