39 lines
692 B
Go
39 lines
692 B
Go
package cache
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
type UserGroupMemberMap struct {
|
|
sync.RWMutex
|
|
Data map[int64]map[int64]struct{}
|
|
}
|
|
|
|
// groupid -> userid
|
|
var UserGroupMember = &UserGroupMemberMap{Data: make(map[int64]map[int64]struct{})}
|
|
|
|
func (m *UserGroupMemberMap) Get(id int64) (map[int64]struct{}, bool) {
|
|
m.RLock()
|
|
defer m.RUnlock()
|
|
ids, exists := m.Data[id]
|
|
return ids, exists
|
|
}
|
|
|
|
func (m *UserGroupMemberMap) Exists(gid, uid int64) bool {
|
|
m.RLock()
|
|
defer m.RUnlock()
|
|
uidMap, exists := m.Data[gid]
|
|
if !exists {
|
|
return false
|
|
}
|
|
|
|
_, exists = uidMap[uid]
|
|
return exists
|
|
}
|
|
|
|
func (m *UserGroupMemberMap) SetAll(data map[int64]map[int64]struct{}) {
|
|
m.Lock()
|
|
defer m.Unlock()
|
|
m.Data = data
|
|
}
|