mirror of
https://github.com/netbirdio/netbird.git
synced 2025-01-19 04:19:48 +01:00
add GetGroupByName from store
Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
This commit is contained in:
parent
28840383e1
commit
1ffe89d20d
@ -982,3 +982,7 @@ func (s *FileStore) AccountExists(_ context.Context, id string) (bool, error) {
|
|||||||
func (s *FileStore) UpdateAccount(_ context.Context, _ LockingStrength, _ *Account) error {
|
func (s *FileStore) UpdateAccount(_ context.Context, _ LockingStrength, _ *Account) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *FileStore) GetGroupByName(_ context.Context, _ LockingStrength, _, _ string) (*nbgroup.Group, error) {
|
||||||
|
return nil, status.Errorf(status.Internal, "GetGroupByName is not implemented")
|
||||||
|
}
|
||||||
|
@ -62,32 +62,7 @@ func (am *DefaultAccountManager) GetAllGroups(ctx context.Context, accountID str
|
|||||||
|
|
||||||
// GetGroupByName filters all groups in an account by name and returns the one with the most peers
|
// GetGroupByName filters all groups in an account by name and returns the one with the most peers
|
||||||
func (am *DefaultAccountManager) GetGroupByName(ctx context.Context, groupName, accountID string) (*nbgroup.Group, error) {
|
func (am *DefaultAccountManager) GetGroupByName(ctx context.Context, groupName, accountID string) (*nbgroup.Group, error) {
|
||||||
groups, err := am.Store.GetAccountGroups(ctx, accountID)
|
return am.Store.GetGroupByName(ctx, LockingStrengthShare, groupName, accountID)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
matchingGroups := make([]*nbgroup.Group, 0)
|
|
||||||
for _, group := range groups {
|
|
||||||
if group.Name == groupName {
|
|
||||||
matchingGroups = append(matchingGroups, group)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(matchingGroups) == 0 {
|
|
||||||
return nil, status.Errorf(status.NotFound, "group with name %s not found", groupName)
|
|
||||||
}
|
|
||||||
|
|
||||||
maxPeers := -1
|
|
||||||
var groupWithMostPeers *nbgroup.Group
|
|
||||||
for i, group := range matchingGroups {
|
|
||||||
if len(group.Peers) > maxPeers {
|
|
||||||
maxPeers = len(group.Peers)
|
|
||||||
groupWithMostPeers = matchingGroups[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return groupWithMostPeers, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SaveGroup object of the peers
|
// SaveGroup object of the peers
|
||||||
|
@ -1092,3 +1092,17 @@ func (s *SqlStore) GetAccountDomainAndCategory(ctx context.Context, lockStrength
|
|||||||
|
|
||||||
return account.Domain, account.DomainCategory, nil
|
return account.Domain, account.DomainCategory, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetGroupByName retrieves a group by name and account ID.
|
||||||
|
func (s *SqlStore) GetGroupByName(ctx context.Context, lockStrength LockingStrength, groupName, accountID string) (*nbgroup.Group, error) {
|
||||||
|
var group nbgroup.Group
|
||||||
|
result := s.db.WithContext(ctx).Clauses(clause.Locking{Strength: string(lockStrength)}).Model(&nbgroup.Group{}).
|
||||||
|
Where("name = ? and account_id = ?", groupName, accountID).Order("json_array_length(peers) DESC").First(&group)
|
||||||
|
if err := result.Error; err != nil {
|
||||||
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||||
|
return nil, status.Errorf(status.NotFound, "group not found")
|
||||||
|
}
|
||||||
|
return nil, status.Errorf(status.Internal, "failed to retrieve group fields")
|
||||||
|
}
|
||||||
|
return &group, nil
|
||||||
|
}
|
||||||
|
@ -64,6 +64,7 @@ type Store interface {
|
|||||||
DeleteTokenID2UserIDIndex(tokenID string) error
|
DeleteTokenID2UserIDIndex(tokenID string) error
|
||||||
|
|
||||||
GetAccountGroups(ctx context.Context, accountID string) ([]*nbgroup.Group, error)
|
GetAccountGroups(ctx context.Context, accountID string) ([]*nbgroup.Group, error)
|
||||||
|
GetGroupByName(ctx context.Context, lockStrength LockingStrength, groupName, accountID string) (*nbgroup.Group, error)
|
||||||
SaveGroups(accountID string, groups map[string]*nbgroup.Group) error
|
SaveGroups(accountID string, groups map[string]*nbgroup.Group) error
|
||||||
|
|
||||||
GetPostureCheckByChecksDefinition(accountID string, checks *posture.ChecksDefinition) (*posture.Checks, error)
|
GetPostureCheckByChecksDefinition(accountID string, checks *posture.ChecksDefinition) (*posture.Checks, error)
|
||||||
|
Loading…
Reference in New Issue
Block a user