diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2026-01-22 16:04:19 +0100 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2026-01-22 16:04:19 +0100 |
| commit | f4368074a7cc07ad305ae9fb9b08d6b8dd3025eb (patch) | |
| tree | 4fb677a7e41748d5db2ae57192f03d9443b909e5 /common/config.go | |
| parent | 94a11e552b50a389a4e3a6b5fe7bdea4ce7097a4 (diff) | |
feat(context): create custom with config data in
Diffstat (limited to 'common/config.go')
| -rw-r--r-- | common/config.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/common/config.go b/common/config.go new file mode 100644 index 0000000..07cff8d --- /dev/null +++ b/common/config.go @@ -0,0 +1,64 @@ +package common + +import ( + "fmt" + "os" + + "github.com/pelletier/go-toml/v2" + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +type Config struct { + Debug bool `toml:"debug"` + Author string `toml:"author"` + Database *PostgresConfig `toml:"database"` +} + +type PostgresConfig struct { + Host string `toml:"host"` + User string `toml:"user"` + Password string `toml:"password"` + DBName string `toml:"db_name"` + Port int `toml:"port"` +} + +func (p *PostgresConfig) SetDefaultValues() { + p.Host = "localhost" + p.User = "" + p.Password = "" + p.DBName = "" + p.Port = 5432 +} + +func (p *PostgresConfig) Connect() (*gorm.DB, error) { + db, err := gorm.Open(postgres.Open(p.generateDsn()), &gorm.Config{}) + if err != nil { + return nil, err + } + return db, nil +} + +// generateDsn for the connection to postgres using the given config.SQLCredentials +func (p *PostgresConfig) generateDsn() string { + return fmt.Sprintf( + "host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Europe/Paris", + p.Host, p.User, p.Password, p.DBName, p.Port, + ) +} + +func (c *Config) SetDefaultValues() { + c.Debug = false + c.Author = "anhgelus" + c.Database = &PostgresConfig{} + c.Database.SetDefaultValues() +} + +func LoadConfig(path string) (*Config, error) { + b, err := os.ReadFile(path) + if err != nil { + return nil, err + } + var cfg Config + return &cfg, toml.Unmarshal(b, &cfg) +} |
