Newer
Older
package configuration
import (
"errors"
"fmt"
configParser "github.com/caarlos0/env/v9"
)
const BODY_SIZE_LIMIT = 32 * 1024 * 1024 // 32 MB, in bytes
Version string `env:"VERSION" envDefault:"N/A"`
Environment string `env:"ENV_NAME" envDefault:"development"`
Host string `env:"HOST" envDefault:"127.0.0.1"`
Port int16 `env:"PORT" envDefault:"3000"`
DatabaseHost string `env:"DB_HOST" envDefault:""`
DatabasePort int16 `env:"DB_PORT" envDefault:"6379"`
DatabaseName int `env:"DB_NAME" envDefault:"0"`
DatabaseUsername string `env:"DB_USERNAME" envDefault:""`
DatabasePassword string `env:"DB_PASSWORD" envDefault:""`
}
func New() ( *Config, error ){
cfg := Config{}
if err := configParser.Parse( &cfg ); err != nil {
return nil, err
}
possibleEnvValues := map[ string ] bool {
"development": true,
"testing": true,
"production": true,
}
if _, ok := possibleEnvValues[ cfg.Environment ]; !ok {
return nil, errors.New(
fmt.Sprintf( "Invalid environment value: %s", cfg.Environment ),
)
}
return &cfg, nil
}