仓库自包含化:Docker/CI/文档/规范入库,路由分组拆分
CI / test (push) Successful in 15s

This commit is contained in:
Wang Defa
2026-07-09 19:18:04 +08:00
parent b9a3e97e84
commit 3e0389c1e9
83 changed files with 20241 additions and 248 deletions
+24
View File
@@ -8,6 +8,8 @@ import (
// Config 保存进程运行所需的全部配置。
type Config struct {
Addr string // HTTP 监听地址
DBDriver string // 数据库驱动:sqlite(默认)/ mysql / postgres
DBDSN string // mysql / postgres 的连接串;sqlite 不使用
DBPath string // SQLite 文件路径
DataKey string // 敏感字段加密主密钥
JWTSecret string // JWT 签名密钥
@@ -26,8 +28,14 @@ func Load() (*Config, error) {
if jwtSecret == "" {
return nil, fmt.Errorf("load config: JWT_SECRET is required")
}
driver, dsn, err := dbFromEnv()
if err != nil {
return nil, err
}
return &Config{
Addr: envOr("ADDR", ":8080"),
DBDriver: driver,
DBDSN: dsn,
DBPath: envOr("DB_PATH", "oci-portal.db"),
DataKey: dataKey,
JWTSecret: jwtSecret,
@@ -37,6 +45,22 @@ func Load() (*Config, error) {
}, nil
}
// dbFromEnv 读取并校验数据库驱动配置;外部库缺 DSN 视为配置错误,启动即失败。
func dbFromEnv() (driver, dsn string, err error) {
driver = envOr("DB_DRIVER", "sqlite")
dsn = os.Getenv("DB_DSN")
switch driver {
case "sqlite":
case "mysql", "postgres":
if dsn == "" {
return "", "", fmt.Errorf("load config: DB_DSN is required when DB_DRIVER=%s", driver)
}
default:
return "", "", fmt.Errorf("load config: unsupported DB_DRIVER %q (sqlite/mysql/postgres)", driver)
}
return driver, dsn, nil
}
func envOr(name, def string) string {
if v := os.Getenv(name); v != "" {
return v