neko/internal/session/database/manager.go

67 lines
1.2 KiB
Go
Raw Normal View History

2020-12-06 11:05:46 +13:00
package database
import (
"fmt"
"sync"
"demodesk/neko/internal/types"
)
func New() *MembersDatabaseCtx {
return &MembersDatabaseCtx{
profiles: make(map[string]types.MemberProfile),
mu: sync.Mutex{},
}
}
type MembersDatabaseCtx struct {
profiles map[string]types.MemberProfile
mu sync.Mutex
}
func (manager *MembersDatabaseCtx) Insert(id string, profile types.MemberProfile) error {
manager.mu.Lock()
defer manager.mu.Unlock()
_, ok := manager.profiles[id]
if ok {
return fmt.Errorf("Member ID already exists.")
}
manager.profiles[id] = profile
return nil
}
func (manager *MembersDatabaseCtx) Update(id string, profile types.MemberProfile) error {
manager.mu.Lock()
defer manager.mu.Unlock()
_, ok := manager.profiles[id]
if !ok {
return fmt.Errorf("Member ID does not exist.")
}
manager.profiles[id] = profile
return nil
}
func (manager *MembersDatabaseCtx) Delete(id string) error {
manager.mu.Lock()
defer manager.mu.Unlock()
_, ok := manager.profiles[id]
if !ok {
return fmt.Errorf("Member ID does not exist.")
}
delete(manager.profiles, id)
return nil
}
2020-12-06 11:31:41 +13:00
func (manager *MembersDatabaseCtx) Select() map[string]types.MemberProfile {
2020-12-06 11:05:46 +13:00
manager.mu.Lock()
defer manager.mu.Unlock()
2020-12-06 11:31:41 +13:00
return manager.profiles
2020-12-06 11:05:46 +13:00
}