feat: scaffold MySQL services with lifecycle and readiness checks

This commit is contained in:
2026-09-20 23:12:47 +08:00
parent ff95692edb
commit affd02d5f7
28 changed files with 1153 additions and 63 deletions

View File

@@ -5,13 +5,13 @@ GoOmni 是一套面向业务复用的 Go 后端基础框架。当前默认用 Gi
远程 module 地址是 `git.yuntuo.hk/k2safe/go-omni`。业务项目可以直接引用指定版本:
```sh
go get git.yuntuo.hk/k2safe/go-omni@v0.1.1
go get git.yuntuo.hk/k2safe/go-omni@v0.2.0
```
创建新业务项目:
```sh
go install git.yuntuo.hk/k2safe/go-omni/cmd/go-omni@v0.1.1
go install git.yuntuo.hk/k2safe/go-omni/cmd/go-omni@v0.2.0
go-omni new --module example.com/billing ./billing
cd billing
go mod tidy
@@ -21,6 +21,10 @@ go run ./cmd/server
远程安装的 CLI 默认引用自身版本,生成的项目不需要本地 `replace`。
具体版本和本地开发选项见 [CLI 文档](cmd/go-omni/README.md)。
需要数据库持久化时,使用 `go-omni new --database mysql --module example.com/billing ./billing`。
生成项目包含完整用户 CRUD、数据库 Repository、ServiceContext、建表脚本和就绪探针。
先应用生成的 `schema.sql`,再配置 `GO_OMNI_DB_DSN`;启动时会检查连接与表结构,退出时释放连接池。
## 目录结构
```text
@@ -148,7 +152,11 @@ application.GET("/health/ready", checker.ReadinessHandler())
新项目脚手架会生成项目自己的 `internal/servicecontext`。它集中保存 Logger、数据库、缓存和外部客户端,Service 只依赖这个项目上下文,不把基础设施初始化散落到各个 Handler:
```go
services := servicecontext.New(logger, users)
services, err := servicecontext.New(ctx, logger)
if err != nil {
return err
}
defer services.Close()
userService := service.NewUsers(services)
```