58 lines
1022 B
Go
58 lines
1022 B
Go
|
|
package config
|
||
|
|
|
||
|
|
import (
|
||
|
|
"os"
|
||
|
|
"strconv"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Config struct {
|
||
|
|
Database DatabaseConfig
|
||
|
|
Server ServerConfig
|
||
|
|
App AppConfig
|
||
|
|
}
|
||
|
|
|
||
|
|
type DatabaseConfig struct {
|
||
|
|
Driver string
|
||
|
|
DSN string
|
||
|
|
}
|
||
|
|
|
||
|
|
type ServerConfig struct {
|
||
|
|
Port int
|
||
|
|
Mode string
|
||
|
|
}
|
||
|
|
|
||
|
|
type AppConfig struct {
|
||
|
|
Name string
|
||
|
|
Description string
|
||
|
|
Author string
|
||
|
|
Theme string
|
||
|
|
}
|
||
|
|
|
||
|
|
func Load() *Config {
|
||
|
|
port, _ := strconv.Atoi(getEnv("SERVER_PORT", "8080"))
|
||
|
|
|
||
|
|
return &Config{
|
||
|
|
Database: DatabaseConfig{
|
||
|
|
Driver: getEnv("DB_DRIVER", "sqlite"),
|
||
|
|
DSN: getEnv("DB_DSN", "goblog.db"),
|
||
|
|
},
|
||
|
|
Server: ServerConfig{
|
||
|
|
Port: port,
|
||
|
|
Mode: getEnv("GIN_MODE", "debug"),
|
||
|
|
},
|
||
|
|
App: AppConfig{
|
||
|
|
Name: getEnv("APP_NAME", "GoBlog"),
|
||
|
|
Description: getEnv("APP_DESC", "一个简洁的个人博客"),
|
||
|
|
Author: getEnv("APP_AUTHOR", "Admin"),
|
||
|
|
Theme: getEnv("APP_THEME", "default"),
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func getEnv(key, defaultValue string) string {
|
||
|
|
if value := os.Getenv(key); value != "" {
|
||
|
|
return value
|
||
|
|
}
|
||
|
|
return defaultValue
|
||
|
|
}
|