Files
lab/go/projects/lyra/README.md
T
labmem 8c0c9978e5 feat(lyra): 接入 PostgreSQL 与 Goose 迁移
- 使用 pgx/sqlx 建立连接,从环境变量读取数据库密码
- 添加本地 PostgreSQL Compose 配置与初始迁移
- 补充 Goose 操作手册和连接串排错说明
2026-10-17 15:09:46 +08:00

51 lines
2.4 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.
# Lyra
链接、分类、设置等资源的后端服务(规划中)。目标结构与技术选型见
[docs/architecture.md](docs/architecture.md)。
## 当前状态
已搭建目录骨架、程序入口 `main.go` 与 HTTP 通路:启动时加载 `etc/lyra.toml`,
注册 `GET /hello`(经 `httpx.OK` 输出响应)并启动 HTTP 服务;路由注册配有
httptest 回归测试,不监听实际端口、不连接数据库。各内部目录的职责与依赖
约束记录在 `AGENTS.md` 中。数据库迁移 SQL 已就位:`migrations/00001_init.sql`
(初始函数与三张表),通过手工 goose CLI 执行,操作手册见
[docs/goose.md](docs/goose.md),迁移目录说明见
[migrations/README.md](migrations/README.md);Go 应用侧的数据库连接与
Goose Go 依赖仍未实现,真实业务逻辑同样未实现;架构文档中标注“待新增”的
文件(links 等)尚未创建。
## 目录职责
| 路径 | 职责 |
|---|---|
| `cmd/lyra/` | 程序入口:启动、依赖组装、退出清理 |
| `internal/api/` | HTTP 请求/响应 DTO,按资源分文件(平铺) |
| `internal/config/` | 配置定义与加载 |
| `internal/postgres/` | PostgreSQL 连接(pgx stdlib,待实现) |
| `internal/router/` | 路由注册、项目路径前缀(router.go,平铺) |
| `internal/handler/` | 参数绑定、DTO 转换、响应输出;可按业务分包,服务级简单接口平铺在根包 |
| `internal/service/` | 业务规则、事务协调;可按业务分包,服务级简单接口平铺在根包 |
| `internal/model/` | 数据结构定义与数据访问(SQL,平铺) |
| `internal/httpx/` | 公共响应辅助 |
| `migrations/` | Goose SQL 迁移文件(00001 初始迁移已就位) |
| `docs/` | 架构与计划文档 |
## 运行
Go 命令在本目录(module 根)下执行;配置路径 `etc/lyra.toml` 按当前工作目录
解析,换目录运行会找不到配置:
```bash
go run ./cmd/lyra # 启动 HTTP 服务,监听地址与端口见 etc/lyra.toml
go test ./... # 含路由回归测试
```
配置中的 `app.env` 直接传给 `gin.SetMode`,仅支持 `debug`/`release`/`test`。
## 技术栈
已引入 Gin 与 Viper(读取 TOML 配置),go.sum 已生成;
PostgreSQL、Squirrel + sqlx(pgx stdlib 驱动)与 Goose 为目标选型,随后续功能引入;
数据库迁移已用独立 goose CLI(v3.29.0)管理,Goose Go 依赖尚未引入。