make bot config mutex more consistent
This commit is contained in:
parent
70571de7aa
commit
faf0bfc68d
3 changed files with 27 additions and 8 deletions
|
|
@ -32,11 +32,17 @@ type Bot map[string]string
|
||||||
|
|
||||||
// Get option
|
// Get option
|
||||||
func (s Bot) Get(key string) string {
|
func (s Bot) Get(key string) string {
|
||||||
|
mu.Lock("config_bot")
|
||||||
|
defer mu.Unlock("config_bot")
|
||||||
|
|
||||||
return s[strings.ToLower(strings.TrimSpace(key))]
|
return s[strings.ToLower(strings.TrimSpace(key))]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set option
|
// Set option
|
||||||
func (s Bot) Set(key, value string) {
|
func (s Bot) Set(key, value string) {
|
||||||
|
mu.Lock("config_bot")
|
||||||
|
defer mu.Unlock("config_bot")
|
||||||
|
|
||||||
s[strings.ToLower(strings.TrimSpace(key))] = value
|
s[strings.ToLower(strings.TrimSpace(key))] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,10 @@ import (
|
||||||
"github.com/etkecc/go-linkpearl"
|
"github.com/etkecc/go-linkpearl"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"maunium.net/go/mautrix/id"
|
"maunium.net/go/mautrix/id"
|
||||||
|
|
||||||
"github.com/etkecc/postmoogle/internal/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Manager of configs
|
// Manager of configs
|
||||||
type Manager struct {
|
type Manager struct {
|
||||||
mu utils.Mutex
|
|
||||||
dkimPrivKey string
|
dkimPrivKey string
|
||||||
dkimSignature string
|
dkimSignature string
|
||||||
log *zerolog.Logger
|
log *zerolog.Logger
|
||||||
|
|
@ -22,7 +19,6 @@ type Manager struct {
|
||||||
// New config manager
|
// New config manager
|
||||||
func New(lp *linkpearl.Linkpearl, log *zerolog.Logger, dkimPrivKey, dkimSignature string) *Manager {
|
func New(lp *linkpearl.Linkpearl, log *zerolog.Logger, dkimPrivKey, dkimSignature string) *Manager {
|
||||||
m := &Manager{
|
m := &Manager{
|
||||||
mu: utils.NewMutex(),
|
|
||||||
lp: lp,
|
lp: lp,
|
||||||
log: log,
|
log: log,
|
||||||
dkimPrivKey: dkimPrivKey,
|
dkimPrivKey: dkimPrivKey,
|
||||||
|
|
@ -34,6 +30,9 @@ func New(lp *linkpearl.Linkpearl, log *zerolog.Logger, dkimPrivKey, dkimSignatur
|
||||||
|
|
||||||
// GetBot config
|
// GetBot config
|
||||||
func (m *Manager) GetBot(ctx context.Context) Bot {
|
func (m *Manager) GetBot(ctx context.Context) Bot {
|
||||||
|
mu.Lock("manager_bot")
|
||||||
|
defer mu.Unlock("manager_bot")
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
var config Bot
|
var config Bot
|
||||||
config, err = m.lp.GetAccountData(ctx, acBotKey)
|
config, err = m.lp.GetAccountData(ctx, acBotKey)
|
||||||
|
|
@ -54,11 +53,17 @@ func (m *Manager) GetBot(ctx context.Context) Bot {
|
||||||
|
|
||||||
// SetBot config
|
// SetBot config
|
||||||
func (m *Manager) SetBot(ctx context.Context, cfg Bot) error {
|
func (m *Manager) SetBot(ctx context.Context, cfg Bot) error {
|
||||||
|
mu.Lock("manager_bot")
|
||||||
|
defer mu.Unlock("manager_bot")
|
||||||
|
|
||||||
return m.lp.SetAccountData(ctx, acBotKey, cfg)
|
return m.lp.SetAccountData(ctx, acBotKey, cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRoom config
|
// GetRoom config
|
||||||
func (m *Manager) GetRoom(ctx context.Context, roomID id.RoomID) (Room, error) {
|
func (m *Manager) GetRoom(ctx context.Context, roomID id.RoomID) (Room, error) {
|
||||||
|
mu.Lock("manager_room_" + roomID.String())
|
||||||
|
defer mu.Unlock("manager_room_" + roomID.String())
|
||||||
|
|
||||||
config, err := m.lp.GetRoomAccountData(ctx, roomID, acRoomKey)
|
config, err := m.lp.GetRoomAccountData(ctx, roomID, acRoomKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.log.Warn().Err(err).Str("room_id", roomID.String()).Msg("cannot get room settings")
|
m.log.Warn().Err(err).Str("room_id", roomID.String()).Msg("cannot get room settings")
|
||||||
|
|
@ -72,6 +77,9 @@ func (m *Manager) GetRoom(ctx context.Context, roomID id.RoomID) (Room, error) {
|
||||||
|
|
||||||
// SetRoom config
|
// SetRoom config
|
||||||
func (m *Manager) SetRoom(ctx context.Context, roomID id.RoomID, cfg Room) error {
|
func (m *Manager) SetRoom(ctx context.Context, roomID id.RoomID, cfg Room) error {
|
||||||
|
mu.Lock("manager_room_" + roomID.String())
|
||||||
|
defer mu.Unlock("manager_room_" + roomID.String())
|
||||||
|
|
||||||
return m.lp.SetRoomAccountData(ctx, roomID, acRoomKey, cfg)
|
return m.lp.SetRoomAccountData(ctx, roomID, acRoomKey, cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -81,8 +89,8 @@ func (m *Manager) GetBanlist(ctx context.Context) List {
|
||||||
return make(List, 0)
|
return make(List, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
m.mu.Lock("banlist")
|
mu.Lock("manager_banlist")
|
||||||
defer m.mu.Unlock("banlist")
|
defer mu.Unlock("manager_banlist")
|
||||||
config, err := m.lp.GetAccountData(ctx, acBanlistKey)
|
config, err := m.lp.GetAccountData(ctx, acBanlistKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.log.Error().Err(err).Msg("cannot get banlist")
|
m.log.Error().Err(err).Msg("cannot get banlist")
|
||||||
|
|
@ -100,8 +108,8 @@ func (m *Manager) SetBanlist(ctx context.Context, cfg List) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
m.mu.Lock("banlist")
|
mu.Lock("manager_banlist")
|
||||||
defer m.mu.Unlock("banlist")
|
defer mu.Unlock("manager_banlist")
|
||||||
if cfg == nil {
|
if cfg == nil {
|
||||||
cfg = make(List, 0)
|
cfg = make(List, 0)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
internal/bot/config/mutex.go
Normal file
5
internal/bot/config/mutex.go
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
package config
|
||||||
|
|
||||||
|
import "github.com/etkecc/postmoogle/internal/utils"
|
||||||
|
|
||||||
|
var mu = utils.NewMutex()
|
||||||
Loading…
Reference in a new issue