accounts/server/server.go
2025-08-02 23:55:07 +08:00

54 lines
1.1 KiB
Go

package server
import (
"log"
"os"
"path/filepath"
"runtime"
"github.com/gin-gonic/gin"
"gopkg.in/yaml.v3"
)
// Config represents server configuration loaded from YAML.
type Config struct {
Env map[string]string `yaml:"env"`
Model []string `yaml:"model"`
}
// cfg holds the loaded configuration.
var cfg Config
// loadConfig reads config/server.yaml and sets environment variables.
func loadConfig() {
path := filepath.Join("server", "config", "server.yaml")
data, err := os.ReadFile(path)
if err != nil {
log.Printf("server config: %v", err)
return
}
if err := yaml.Unmarshal(data, &cfg); err != nil {
log.Printf("server config parse: %v", err)
return
}
for k, v := range cfg.Env {
os.Setenv(k, v)
}
}
// Registrar registers routes on the provided gin engine.
type Registrar func(*gin.Engine)
// New creates a gin engine with all CPU cores enabled and applies the provided route registrars.
func New(registrars ...Registrar) *gin.Engine {
loadConfig()
runtime.GOMAXPROCS(runtime.NumCPU())
r := gin.Default()
for _, register := range registrars {
if register != nil {
register(r)
}
}
return r
}