database.go 994 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package config
  2. import (
  3. log "maunium.net/go/maulogger/v2"
  4. db "go.mau.fi/mautrix-discord/database"
  5. )
  6. type database struct {
  7. Type string `yaml:"type"`
  8. URI string `yaml:"uri"`
  9. MaxOpenConns int `yaml:"max_open_conns"`
  10. MaxIdleConns int `yaml:"max_idle_conns"`
  11. }
  12. func (d *database) validate() error {
  13. if d.Type == "" {
  14. d.Type = "sqlite3"
  15. }
  16. if d.URI == "" {
  17. d.URI = "mautrix-discord.db"
  18. }
  19. if d.MaxOpenConns == 0 {
  20. d.MaxOpenConns = 20
  21. }
  22. if d.MaxIdleConns == 0 {
  23. d.MaxIdleConns = 2
  24. }
  25. return nil
  26. }
  27. func (d *database) UnmarshalYAML(unmarshal func(interface{}) error) error {
  28. type rawDatabase database
  29. raw := rawDatabase{}
  30. if err := unmarshal(&raw); err != nil {
  31. return err
  32. }
  33. *d = database(raw)
  34. return d.validate()
  35. }
  36. func (c *Config) CreateDatabase(baseLog log.Logger) (*db.Database, error) {
  37. return db.New(
  38. c.Appservice.Database.Type,
  39. c.Appservice.Database.URI,
  40. c.Appservice.Database.MaxOpenConns,
  41. c.Appservice.Database.MaxIdleConns,
  42. baseLog,
  43. )
  44. }