Files
GoGinScaffold/pkg/config/types.go

91 lines
2.2 KiB
Go

package config
import (
"path/filepath"
"time"
"github.com/zhilv666/go-gin-scaffold/pkg/common"
)
type Server struct {
Debug bool `mapstructure:"debug"`
Port int `mapstructure:"port"`
}
type Log struct {
Level string `mapstructure:"level"`
Filepath string `mapstructure:"filepath"`
MaxSizeMB int `mapstructure:"max_size_mb"` // 单个日志文件最大(MB)
MaxAgeDay int `mapstructure:"max_age_day"` // 日志文件最大保存天数
Backups int `mapstructure:"backups"` // 保留的旧文件个数
Compress bool `mapstructure:"compress"` // 是否压缩
}
type Database struct {
Driver string `mapstructure:"driver"`
User string `mapstructure:"user"`
Password string `mapstructure:"password"`
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
DbName string `mapstructure:"db_name"`
SqliteDbPath string `mapstructure:"sqlite_db_path"`
}
type JWT struct {
SecretKey string `mapstructure:"secret_key"`
ExpireDurationHour time.Duration `mapstructure:"expire_duration_hour"`
}
type Email struct {
SMTPServer string `mapstructure:"smtp_server"`
Port int `mapstructure:"port"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
}
type Config struct {
Server Server `mapstructure:"server"`
Log Log `mapstructure:"log"`
Database Database `mapstructure:"database"`
JWT JWT `mapstructure:"jwt"`
Email Email `mapstructure:"email"`
}
func DefaultConfig() *Config {
logPath := filepath.Join("data", "log.log")
dbPath := filepath.Join("data", "sqlite.db")
return &Config{
Server: Server{
Debug: true,
Port: 8080,
},
Log: Log{
Level: "debug",
Filepath: logPath,
MaxSizeMB: 10,
MaxAgeDay: 7,
Backups: 3,
Compress: true,
},
Database: Database{
Driver: "sqlite",
User: "",
Password: "",
Host: "",
Port: 0,
DbName: "",
SqliteDbPath: dbPath,
},
JWT: JWT{
SecretKey: common.Rand(16),
ExpireDurationHour: 24,
},
Email: Email{
SMTPServer: "smtp.qq.com",
Port: 465,
Username: "xxx@qq.com",
Password: "xxx",
},
}
}