初始化
This commit is contained in:
93
config/config.go
Normal file
93
config/config.go
Normal file
@@ -0,0 +1,93 @@
|
||||
// Package config 负责加载和管理应用程序配置
|
||||
// 从 config.yaml 文件中读取配置,并提供全局访问接口
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
// Config 应用程序全局配置结构体
|
||||
type Config struct {
|
||||
Server ServerConfig `yaml:"server"` // 服务器配置
|
||||
Database DatabaseConfig `yaml:"database"` // 数据库配置
|
||||
Storage StorageConfig `yaml:"storage"` // 文件存储配置
|
||||
}
|
||||
|
||||
// ServerConfig 服务器配置
|
||||
type ServerConfig struct {
|
||||
Port int `yaml:"port"` // API服务监听端口
|
||||
WsPort int `yaml:"ws_port"` // WebSocket服务监听端口
|
||||
}
|
||||
|
||||
// DatabaseConfig 数据库连接配置
|
||||
type DatabaseConfig struct {
|
||||
Host string `yaml:"host"` // 数据库主机地址
|
||||
Port int `yaml:"port"` // 数据库端口
|
||||
Username string `yaml:"username"` // 数据库用户名
|
||||
Password string `yaml:"password"` // 数据库密码
|
||||
DBName string `yaml:"dbname"` // 数据库名称
|
||||
Charset string `yaml:"charset"` // 字符集
|
||||
}
|
||||
|
||||
// StorageConfig 文件存储配置
|
||||
type StorageConfig struct {
|
||||
Type string `yaml:"type"` // 存储类型:local/qiniu/tencent/aliyun
|
||||
Local LocalConfig `yaml:"local"` // 本地存储配置
|
||||
Qiniu CloudConfig `yaml:"qiniu"` // 七牛云配置
|
||||
Tencent CloudConfig `yaml:"tencent"` // 腾讯云配置
|
||||
Aliyun CloudConfig `yaml:"aliyun"` // 阿里云配置
|
||||
}
|
||||
|
||||
// LocalConfig 本地存储配置
|
||||
type LocalConfig struct {
|
||||
Path string `yaml:"path"` // 本地文件存储目录
|
||||
}
|
||||
|
||||
// CloudConfig 云存储通用配置
|
||||
type CloudConfig struct {
|
||||
AccessKey string `yaml:"access_key"` // 访问密钥ID
|
||||
SecretKey string `yaml:"secret_key"` // 访问密钥Secret
|
||||
Bucket string `yaml:"bucket"` // 存储桶名称
|
||||
Domain string `yaml:"domain"` // 域名(七牛云)
|
||||
Region string `yaml:"region"` // 区域(腾讯云)
|
||||
SecretID string `yaml:"secret_id"` // SecretID(腾讯云)
|
||||
AccessKeyID string `yaml:"access_key_id"` // AccessKeyID(阿里云)
|
||||
AccessKeySecret string `yaml:"access_key_secret"` // AccessKeySecret(阿里云)
|
||||
Endpoint string `yaml:"endpoint"` // Endpoint(阿里云)
|
||||
}
|
||||
|
||||
// App 全局配置实例
|
||||
var App *Config
|
||||
|
||||
// Init 从 config.yaml 文件加载配置到全局变量 App
|
||||
// 如果文件不存在或读取失败,返回错误
|
||||
func Init() error {
|
||||
App = &Config{}
|
||||
data, err := os.ReadFile("config.yaml")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = yaml.Unmarshal(data, App)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// 设置默认值
|
||||
if App.Server.Port == 0 {
|
||||
App.Server.Port = 16702
|
||||
}
|
||||
if App.Server.WsPort == 0 {
|
||||
App.Server.WsPort = 16703
|
||||
}
|
||||
if App.Database.Charset == "" {
|
||||
App.Database.Charset = "utf8mb4"
|
||||
}
|
||||
if App.Storage.Type == "" {
|
||||
App.Storage.Type = "local"
|
||||
}
|
||||
if App.Storage.Local.Path == "" {
|
||||
App.Storage.Local.Path = "./uploads"
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user