搭建Go后端框架:数据模型、JWT鉴权、租户隔离、WebSocket、REST API路由

This commit is contained in:
yml2213
2026-07-14 11:23:05 +08:00
parent 81c32cfdea
commit 05ab468498
16 changed files with 1692 additions and 1 deletions
+64
View File
@@ -0,0 +1,64 @@
package config
import (
"os"
"time"
)
type Config struct {
Server ServerConfig
Database DatabaseConfig
JWT JWTConfig
}
type ServerConfig struct {
Port string
Mode string
}
type DatabaseConfig struct {
Host string
Port string
User string
Password string
Name string
SSLMode string
}
type JWTConfig struct {
Secret string
ExpireTime time.Duration
}
func Load() *Config {
return &Config{
Server: ServerConfig{
Port: getEnv("SERVER_PORT", "8080"),
Mode: getEnv("GIN_MODE", "debug"),
},
Database: DatabaseConfig{
Host: getEnv("DB_HOST", "localhost"),
Port: getEnv("DB_PORT", "5432"),
User: getEnv("DB_USER", "postgres"),
Password: getEnv("DB_PASSWORD", "postgres"),
Name: getEnv("DB_NAME", "kefu_sys"),
SSLMode: getEnv("DB_SSLMODE", "disable"),
},
JWT: JWTConfig{
Secret: getEnv("JWT_SECRET", "kefu-sys-secret-key"),
ExpireTime: 24 * time.Hour,
},
}
}
func (d *DatabaseConfig) DSN() string {
return "host=" + d.Host + " port=" + d.Port + " user=" + d.User +
" password=" + d.Password + " dbname=" + d.Name + " sslmode=" + d.SSLMode
}
func getEnv(key, fallback string) string {
if v := os.Getenv(key); v != "" {
return v
}
return fallback
}