blob: c9be06071237e60b540ccf01ce32891725549079 [file] [log] [blame]
package status
import (
"context"
"go.skia.org/infra/go/skerr"
)
// MultiDB combines two more more DBs.
type MultiDB []DB
// NewMultiDB returns a MultiDB instance. The first DB instance is used for all
// retrievals.
func NewMultiDB(dbs []DB) (MultiDB, error) {
if len(dbs) < 1 {
return nil, skerr.Fmt("At least one DB must be provided.")
}
return MultiDB(dbs), nil
}
// Close implements DB.
func (d MultiDB) Close() error {
var rvErr error
for _, db := range d {
if err := db.Close(); err != nil {
rvErr = skerr.Wrap(err)
}
}
return rvErr
}
// Get implements DB.
func (d MultiDB) Get(ctx context.Context, rollerID string) (*AutoRollStatus, error) {
return d[0].Get(ctx, rollerID)
}
// Set implements DB.
func (d MultiDB) Set(ctx context.Context, rollerID string, st *AutoRollStatus) error {
var rvErr error
for _, db := range d {
if err := db.Set(ctx, rollerID, st); err != nil {
rvErr = skerr.Wrap(err)
}
}
return rvErr
}
var _ DB = MultiDB{}