package logic import ( scn "blackforestbytes.com/simplecloudnotifier" "blackforestbytes.com/simplecloudnotifier/db" logsdb "blackforestbytes.com/simplecloudnotifier/db/impl/logs" primarydb "blackforestbytes.com/simplecloudnotifier/db/impl/primary" requestsdb "blackforestbytes.com/simplecloudnotifier/db/impl/requests" "context" ) type DBPool struct { Primary *primarydb.Database Requests *requestsdb.Database Logs *logsdb.Database } func NewDBPool(conf scn.Config) (*DBPool, error) { dbprimary, err := primarydb.NewPrimaryDatabase(conf) if err != nil { return nil, err } dbrequests, err := requestsdb.NewRequestsDatabase(conf) if err != nil { return nil, err } dblogs, err := logsdb.NewLogsDatabase(conf) if err != nil { return nil, err } return &DBPool{ Primary: dbprimary, Requests: dbrequests, Logs: dblogs, }, nil } func (p DBPool) List() []db.DatabaseImpl { return []db.DatabaseImpl{ p.Primary, p.Requests, p.Logs, } } func (p DBPool) Stop(ctx context.Context) error { var err error = nil for _, subdb := range p.List() { err2 := subdb.Stop(ctx) if err2 != nil && err == nil { err = err2 } } if err != nil { return err } return nil } func (p DBPool) Migrate(ctx context.Context) error { for _, subdb := range p.List() { err := subdb.Migrate(ctx) if err != nil { return err } } return nil } func (p DBPool) Ping(ctx context.Context) error { for _, subdb := range p.List() { err := subdb.Ping(ctx) if err != nil { return err } } return nil }