You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
584 B
34 lines
584 B
package members
|
|
|
|
import "sync"
|
|
|
|
type Member struct {
|
|
Nickname string
|
|
Token string
|
|
}
|
|
|
|
type Database struct {
|
|
members map[string]Member
|
|
membersLock sync.RWMutex
|
|
}
|
|
|
|
func (d *Database) AddMember(member Member) {
|
|
// TODO: validate member!
|
|
d.membersLock.Lock()
|
|
d.members[member.Token] = member
|
|
d.membersLock.Unlock()
|
|
}
|
|
|
|
func (d *Database) GetMember(token string) (Member, bool) {
|
|
d.membersLock.RLock()
|
|
defer d.membersLock.RUnlock()
|
|
member, ok := d.members[token]
|
|
return member, ok
|
|
}
|
|
|
|
func NewDatabase() *Database {
|
|
return &Database{
|
|
members: map[string]Member{},
|
|
}
|
|
}
|