feat: Users API, ownership transfer and removal of the legacy role string
This commit is contained in:
1 parent
094df63a7f
commit
80f7037d3a
124 files changed
+4644
-824
No files matched your search
+52
-14
@@ -16,6 +16,7 @@ type mockRoleRepo struct {
|
||||
nextID uint32
|
||||
fail failSwitch
|
||||
users *mockUserRepo
|
||||
invites *inviteFakeRepo
|
||||
calls map[string]int
|
||||
beforeSave func()
|
||||
}
|
||||
@@ -127,18 +128,47 @@ func (m *mockRoleRepo) Save(saved role.Role) (role.Role, error) {
|
||||
}
|
||||
|
||||
func (m *mockRoleRepo) memberCount(roleID uint32) int {
|
||||
if m.users == nil {
|
||||
return 0
|
||||
}
|
||||
count := 0
|
||||
for _, member := range m.users.users {
|
||||
if member.RoleID == roleID {
|
||||
count++
|
||||
if m.users != nil {
|
||||
for _, member := range m.users.users {
|
||||
if member.RoleID == roleID {
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
if m.invites != nil {
|
||||
for _, pending := range m.invites.invites {
|
||||
if pending.RoleID == roleID && pending.AcceptedAt == nil {
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
func (m *mockRoleRepo) MemberCounts() (map[uint32]int, error) {
|
||||
m.calls["MemberCounts"]++
|
||||
if err := m.fail.trigger("MemberCounts"); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
counts := map[uint32]int{}
|
||||
if m.users != nil {
|
||||
for _, member := range m.users.users {
|
||||
if member.RoleID != 0 {
|
||||
counts[member.RoleID]++
|
||||
}
|
||||
}
|
||||
}
|
||||
if m.invites != nil {
|
||||
for _, pending := range m.invites.invites {
|
||||
if pending.RoleID != 0 && pending.AcceptedAt == nil {
|
||||
counts[pending.RoleID]++
|
||||
}
|
||||
}
|
||||
}
|
||||
return counts, nil
|
||||
}
|
||||
|
||||
func (m *mockRoleRepo) Delete(id uint32) error {
|
||||
m.calls["Delete"]++
|
||||
if err := m.fail.trigger("Delete"); err != nil {
|
||||
@@ -159,15 +189,23 @@ func (m *mockRoleRepo) ReassignMembers(from uint32, to uint32) (int, error) {
|
||||
if err := m.fail.trigger("ReassignMembers"); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if m.users == nil {
|
||||
return 0, nil
|
||||
}
|
||||
moved := 0
|
||||
for id, member := range m.users.users {
|
||||
if member.RoleID == from {
|
||||
member.RoleID = to
|
||||
m.users.users[id] = member
|
||||
moved++
|
||||
if m.users != nil {
|
||||
for id, member := range m.users.users {
|
||||
if member.RoleID == from {
|
||||
member.RoleID = to
|
||||
m.users.users[id] = member
|
||||
moved++
|
||||
}
|
||||
}
|
||||
}
|
||||
if m.invites != nil {
|
||||
for id, pending := range m.invites.invites {
|
||||
if pending.RoleID == from && pending.AcceptedAt == nil {
|
||||
pending.RoleID = to
|
||||
m.invites.invites[id] = pending
|
||||
moved++
|
||||
}
|
||||
}
|
||||
}
|
||||
return moved, nil
|
||||
|
||||
Reference in new issue
Block a user