@@ -60,7 +60,7 @@ func New() database.Store {
60
60
dbcryptKeys : make ([]database.DBCryptKey , 0 ),
61
61
externalAuthLinks : make ([]database.ExternalAuthLink , 0 ),
62
62
groups : make ([]database.Group , 0 ),
63
- groupMembers : make ([]database.GroupMember , 0 ),
63
+ groupMembers : make ([]database.GroupMemberTable , 0 ),
64
64
auditLogs : make ([]database.AuditLog , 0 ),
65
65
files : make ([]database.File , 0 ),
66
66
gitSSHKey : make ([]database.GitSSHKey , 0 ),
@@ -156,7 +156,7 @@ type data struct {
156
156
files []database.File
157
157
externalAuthLinks []database.ExternalAuthLink
158
158
gitSSHKey []database.GitSSHKey
159
- groupMembers []database.GroupMember
159
+ groupMembers []database.GroupMemberTable
160
160
groups []database.Group
161
161
jfrogXRayScans []database.JfrogXrayScan
162
162
licenses []database.License
@@ -723,41 +723,68 @@ func (q *FakeQuerier) getOrganizationMemberNoLock(orgID uuid.UUID) []database.Or
723
723
return members
724
724
}
725
725
726
+ var ErrUserDeleted = xerrors .New ("user deleted" )
727
+
728
+ // getGroupMemberNoLock fetches a group member by user ID and group ID.
729
+ func (q * FakeQuerier ) getGroupMemberNoLock (ctx context.Context , userID , groupID uuid.UUID ) (database.GroupMember , error ) {
730
+ groupName := "Everyone"
731
+ orgID := groupID
732
+ groupIsEveryone := q .isEveryoneGroup (groupID )
733
+ if ! groupIsEveryone {
734
+ group , err := q .getGroupByIDNoLock (ctx , groupID )
735
+ if err != nil {
736
+ return database.GroupMember {}, err
737
+ }
738
+ groupName = group .Name
739
+ orgID = group .OrganizationID
740
+ }
741
+
742
+ user , err := q .getUserByIDNoLock (userID )
743
+ if err != nil {
744
+ return database.GroupMember {}, err
745
+ }
746
+ if user .Deleted {
747
+ return database.GroupMember {}, ErrUserDeleted
748
+ }
749
+
750
+ return database.GroupMember {
751
+ UserID : user .ID ,
752
+ UserEmail : user .Email ,
753
+ UserUsername : user .Username ,
754
+ UserHashedPassword : user .HashedPassword ,
755
+ UserCreatedAt : user .CreatedAt ,
756
+ UserUpdatedAt : user .UpdatedAt ,
757
+ UserStatus : user .Status ,
758
+ UserRbacRoles : user .RBACRoles ,
759
+ UserLoginType : user .LoginType ,
760
+ UserAvatarUrl : user .AvatarURL ,
761
+ UserDeleted : user .Deleted ,
762
+ UserLastSeenAt : user .LastSeenAt ,
763
+ UserQuietHoursSchedule : user .QuietHoursSchedule ,
764
+ UserThemePreference : user .ThemePreference ,
765
+ UserName : user .Name ,
766
+ UserGithubComUserID : user .GithubComUserID ,
767
+ OrganizationID : orgID ,
768
+ GroupName : groupName ,
769
+ GroupID : groupID ,
770
+ }, nil
771
+ }
772
+
726
773
// getEveryoneGroupMembersNoLock fetches all the users in an organization.
727
- func (q * FakeQuerier ) getEveryoneGroupMembersNoLock (orgID uuid.UUID ) []database.GroupMember {
774
+ func (q * FakeQuerier ) getEveryoneGroupMembersNoLock (ctx context. Context , orgID uuid.UUID ) []database.GroupMember {
728
775
var (
729
776
everyone []database.GroupMember
730
777
orgMembers = q .getOrganizationMemberNoLock (orgID )
731
778
)
732
779
for _ , member := range orgMembers {
733
- user , err := q .getUserByIDNoLock (member .UserID )
780
+ groupMember , err := q .getGroupMemberNoLock (ctx , member .UserID , orgID )
781
+ if errors .Is (err , ErrUserDeleted ) {
782
+ continue
783
+ }
734
784
if err != nil {
735
785
return nil
736
786
}
737
- if user .Deleted {
738
- continue
739
- }
740
- everyone = append (everyone , database.GroupMember {
741
- UserID : user .ID ,
742
- UserEmail : user .Email ,
743
- UserUsername : user .Username ,
744
- UserHashedPassword : user .HashedPassword ,
745
- UserCreatedAt : user .CreatedAt ,
746
- UserUpdatedAt : user .UpdatedAt ,
747
- UserStatus : user .Status ,
748
- UserRbacRoles : user .RBACRoles ,
749
- UserLoginType : user .LoginType ,
750
- UserAvatarUrl : user .AvatarURL ,
751
- UserDeleted : user .Deleted ,
752
- UserLastSeenAt : user .LastSeenAt ,
753
- UserQuietHoursSchedule : user .QuietHoursSchedule ,
754
- UserThemePreference : user .ThemePreference ,
755
- UserName : user .Name ,
756
- UserGithubComUserID : user .GithubComUserID ,
757
- OrganizationID : orgID ,
758
- GroupName : "Everyone" ,
759
- GroupID : orgID ,
760
- })
787
+ everyone = append (everyone , groupMember )
761
788
}
762
789
return everyone
763
790
}
@@ -2509,31 +2536,59 @@ func (q *FakeQuerier) GetGroupByOrgAndName(_ context.Context, arg database.GetGr
2509
2536
return database.Group {}, sql .ErrNoRows
2510
2537
}
2511
2538
2512
- func (q * FakeQuerier ) GetGroupMembers (_ context.Context ) ([]database.GroupMember , error ) {
2539
+ func (q * FakeQuerier ) GetGroupMembers (ctx context.Context ) ([]database.GroupMember , error ) {
2513
2540
q .mutex .RLock ()
2514
2541
defer q .mutex .RUnlock ()
2515
2542
2516
- out := make ([]database.GroupMember , len (q .groupMembers ))
2517
- copy (out , q .groupMembers )
2518
- return out , nil
2543
+ members := make ([]database.GroupMemberTable , 0 , len (q .groupMembers ))
2544
+ members = append (members , q .groupMembers ... )
2545
+ for _ , org := range q .organizations {
2546
+ for _ , user := range q .users {
2547
+ members = append (members , database.GroupMemberTable {
2548
+ UserID : user .ID ,
2549
+ GroupID : org .ID ,
2550
+ })
2551
+ }
2552
+ }
2553
+
2554
+ var groupMembers []database.GroupMember
2555
+ for _ , member := range members {
2556
+ groupMember , err := q .getGroupMemberNoLock (ctx , member .UserID , member .GroupID )
2557
+ if errors .Is (err , ErrUserDeleted ) {
2558
+ continue
2559
+ }
2560
+ if err != nil {
2561
+ return nil , err
2562
+ }
2563
+ groupMembers = append (groupMembers , groupMember )
2564
+ }
2565
+
2566
+ return groupMembers , nil
2519
2567
}
2520
2568
2521
- func (q * FakeQuerier ) GetGroupMembersByGroupID (_ context.Context , id uuid.UUID ) ([]database.GroupMember , error ) {
2569
+ func (q * FakeQuerier ) GetGroupMembersByGroupID (ctx context.Context , id uuid.UUID ) ([]database.GroupMember , error ) {
2522
2570
q .mutex .RLock ()
2523
2571
defer q .mutex .RUnlock ()
2524
2572
2525
2573
if q .isEveryoneGroup (id ) {
2526
- return q .getEveryoneGroupMembersNoLock (id ), nil
2574
+ return q .getEveryoneGroupMembersNoLock (ctx , id ), nil
2527
2575
}
2528
2576
2529
- var members []database.GroupMember
2577
+ var groupMembers []database.GroupMember
2530
2578
for _ , member := range q .groupMembers {
2579
+ groupMember , err := q .getGroupMemberNoLock (ctx , member .UserID , member .GroupID )
2580
+ if errors .Is (err , ErrUserDeleted ) {
2581
+ continue
2582
+ }
2583
+ if err != nil {
2584
+ return nil , err
2585
+ }
2531
2586
if member .GroupID == id {
2532
- members = append (members , member )
2587
+ groupMembers = append (groupMembers , groupMember )
2533
2588
}
2534
2589
}
2535
2590
2536
- return members , nil
2591
+ return groupMembers , nil
2537
2592
}
2538
2593
2539
2594
func (q * FakeQuerier ) GetGroupMembersCountByGroupID (ctx context.Context , groupID uuid.UUID ) (int64 , error ) {
@@ -2561,15 +2616,15 @@ func (q *FakeQuerier) GetGroupsByOrganizationAndUserID(_ context.Context, arg da
2561
2616
2562
2617
q .mutex .RLock ()
2563
2618
defer q .mutex .RUnlock ()
2564
- var groupIds []uuid.UUID
2619
+ var groupIDs []uuid.UUID
2565
2620
for _ , member := range q .groupMembers {
2566
2621
if member .UserID == arg .UserID {
2567
- groupIds = append (groupIds , member .GroupID )
2622
+ groupIDs = append (groupIDs , member .GroupID )
2568
2623
}
2569
2624
}
2570
2625
groups := []database.Group {}
2571
2626
for _ , group := range q .groups {
2572
- if slices .Contains (groupIds , group .ID ) && group .OrganizationID == arg .OrganizationID {
2627
+ if slices .Contains (groupIDs , group .ID ) && group .OrganizationID == arg .OrganizationID {
2573
2628
groups = append (groups , group )
2574
2629
}
2575
2630
}
@@ -6254,7 +6309,7 @@ func (q *FakeQuerier) InsertGroupMember(_ context.Context, arg database.InsertGr
6254
6309
}
6255
6310
6256
6311
//nolint:gosimple
6257
- q .groupMembers = append (q .groupMembers , database.GroupMember {
6312
+ q .groupMembers = append (q .groupMembers , database.GroupMemberTable {
6258
6313
GroupID : arg .GroupID ,
6259
6314
UserID : arg .UserID ,
6260
6315
})
@@ -6794,7 +6849,7 @@ func (q *FakeQuerier) InsertUserGroupsByName(_ context.Context, arg database.Ins
6794
6849
}
6795
6850
6796
6851
for _ , groupID := range groupIDs {
6797
- q .groupMembers = append (q .groupMembers , database.GroupMember {
6852
+ q .groupMembers = append (q .groupMembers , database.GroupMemberTable {
6798
6853
UserID : arg .UserID ,
6799
6854
GroupID : groupID ,
6800
6855
})
0 commit comments