server/config/config.go
2025-05-31 20:17:01 +02:00

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 len(config.Valkey.InitAddress) == 0 {
config.Valkey.InitAddress = make([]string, 1)
}
if config == nil {
config = &Config{}
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", "szoe", "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
}