1
0
Fork 0
mirror of https://git.sr.ht/~ashkeel/strimertul synced 2024-09-20 02:00:49 +00:00
strimertul/modules/manager.go
2022-01-27 16:49:18 +01:00

49 lines
812 B
Go

package modules
import (
"go.uber.org/zap"
)
type ModuleStatus struct {
Enabled bool
Working bool
Data interface{}
StatusString string
}
func (m ModuleStatus) String() string {
return m.StatusString
}
type Module interface {
Status() ModuleStatus
Close() error
}
type ModuleID string
const (
ModuleLoyalty ModuleID = "loyalty"
ModuleTwitch ModuleID = "twitch"
ModuleStulbe ModuleID = "stulbe"
ModuleDB ModuleID = "db"
ModuleHTTP ModuleID = "http"
)
type Manager struct {
Modules map[ModuleID]Module
logger *zap.Logger
}
func NewManager(log *zap.Logger) *Manager {
return &Manager{
Modules: make(map[ModuleID]Module),
logger: log,
}
}
func (m *Manager) Logger(module ModuleID) *zap.Logger {
return m.logger.With(zap.String("module", string(module)))
}