62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package config
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"github.com/kouhin/envflag"
|
|
"github.com/valkey-io/valkey-go"
|
|
)
|
|
|
|
type Config struct {
|
|
Database struct {
|
|
Host string
|
|
Port uint
|
|
User string
|
|
Password string
|
|
DBname string
|
|
}
|
|
|
|
Valkey valkey.ClientOption
|
|
|
|
API struct {
|
|
Address string
|
|
Base string
|
|
TokenLife int
|
|
}
|
|
}
|
|
|
|
var config *Config
|
|
|
|
func GetConfig() *Config {
|
|
if config == nil {
|
|
config = &Config{}
|
|
|
|
if len(config.Valkey.InitAddress) == 0 {
|
|
config.Valkey.InitAddress = make([]string, 1)
|
|
}
|
|
|
|
flag.StringVar(&config.Database.Host, "db-host", "db", "database host")
|
|
flag.UintVar(&config.Database.Port, "db-port", 5432, "database port")
|
|
flag.StringVar(&config.Database.User, "db-user", "admin", "database user")
|
|
flag.StringVar(&config.Database.Password, "db-password", "admin", "database password")
|
|
flag.StringVar(&config.Database.DBname, "db-name", "chat", "database name")
|
|
|
|
flag.StringVar(&config.Valkey.InitAddress[0], "valkey-address", "valkey:6379", "Valkey server address")
|
|
flag.StringVar(&config.Valkey.Username, "valkey-username", "", "Valkey username")
|
|
flag.StringVar(&config.Valkey.Password, "valkey-password", "", "Valkey password")
|
|
flag.IntVar(&config.Valkey.SelectDB, "valkey-db", 0, "Valkey database number")
|
|
|
|
flag.StringVar(&config.API.Address, "api-address", ":5000", "API address")
|
|
flag.StringVar(&config.API.Base, "api-base", "", "API path base")
|
|
flag.IntVar(&config.API.TokenLife, "api-token-life", 24*60*60, "API login token lifetime in seconds")
|
|
|
|
if err := envflag.Parse(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
flag.Parse()
|
|
}
|
|
|
|
return config
|
|
}
|