[go: nahoru, domu]

Skip to content

Commit

Permalink
api: rename var namepace for tenantID on namespace services and store
Browse files Browse the repository at this point in the history
this fix avoids confusion between the namespace struct model
and his identifier on search operations
  • Loading branch information
eduardoveiga authored and gustavosbarreto committed May 31, 2021
1 parent 70c3400 commit e363e2b
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 62 deletions.
42 changes: 21 additions & 21 deletions api/nsadm/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ var (
type Service interface {
ListNamespaces(ctx context.Context, pagination paginator.Query, filterB64 string, export bool) ([]models.Namespace, int, error)
CreateNamespace(ctx context.Context, namespace *models.Namespace, ownerUsername string) (*models.Namespace, error)
GetNamespace(ctx context.Context, namespace string) (*models.Namespace, error)
DeleteNamespace(ctx context.Context, namespace, ownerUsername string) error
EditNamespace(ctx context.Context, namespace, name, ownerUsername string) (*models.Namespace, error)
AddNamespaceUser(ctx context.Context, namespace, username, ownerUsername string) (*models.Namespace, error)
RemoveNamespaceUser(ctx context.Context, namespace, username, ownerUsername string) (*models.Namespace, error)
ListMembers(ctx context.Context, namespace string) ([]models.Member, error)
GetNamespace(ctx context.Context, tenantID string) (*models.Namespace, error)
DeleteNamespace(ctx context.Context, tenantID, ownerUsername string) error
EditNamespace(ctx context.Context, tenantID, name, ownerUsername string) (*models.Namespace, error)
AddNamespaceUser(ctx context.Context, tenantID, username, ownerUsername string) (*models.Namespace, error)
RemoveNamespaceUser(ctx context.Context, tenantID, username, ownerUsername string) (*models.Namespace, error)
ListMembers(ctx context.Context, tenantID string) ([]models.Member, error)
UpdateDataUserSecurity(ctx context.Context, status bool, tenant string) error
GetDataUserSecurity(ctx context.Context, tenant string) (bool, error)
}
Expand Down Expand Up @@ -99,12 +99,12 @@ func (s *service) CreateNamespace(ctx context.Context, namespace *models.Namespa
return s.store.NamespaceCreate(ctx, ns)
}

func (s *service) GetNamespace(ctx context.Context, namespace string) (*models.Namespace, error) {
return s.store.NamespaceGet(ctx, namespace)
func (s *service) GetNamespace(ctx context.Context, tenantID string) (*models.Namespace, error) {
return s.store.NamespaceGet(ctx, tenantID)
}

func (s *service) DeleteNamespace(ctx context.Context, namespace, ownerId string) error {
ns, err := s.store.NamespaceGet(ctx, namespace)
func (s *service) DeleteNamespace(ctx context.Context, tenantID, ownerId string) error {
ns, err := s.store.NamespaceGet(ctx, tenantID)
if err == store.ErrNoDocuments {
return ErrNamespaceNotFound
}
Expand All @@ -126,11 +126,11 @@ func (s *service) DeleteNamespace(ctx context.Context, namespace, ownerId string
return ErrUnauthorized
}

return s.store.NamespaceDelete(ctx, namespace)
return s.store.NamespaceDelete(ctx, tenantID)
}

func (s *service) ListMembers(ctx context.Context, namespace string) ([]models.Member, error) {
ns, err := s.store.NamespaceGet(ctx, namespace)
func (s *service) ListMembers(ctx context.Context, tenantID string) ([]models.Member, error) {
ns, err := s.store.NamespaceGet(ctx, tenantID)
if err == store.ErrNoDocuments {
return nil, ErrNamespaceNotFound
}
Expand All @@ -156,8 +156,8 @@ func (s *service) ListMembers(ctx context.Context, namespace string) ([]models.M
return members, nil
}

func (s *service) EditNamespace(ctx context.Context, namespace, name, owner string) (*models.Namespace, error) {
ns, err := s.store.NamespaceGet(ctx, namespace)
func (s *service) EditNamespace(ctx context.Context, tenantID, name, owner string) (*models.Namespace, error) {
ns, err := s.store.NamespaceGet(ctx, tenantID)
if err == store.ErrNoDocuments {
return nil, ErrNamespaceNotFound
}
Expand Down Expand Up @@ -188,8 +188,8 @@ func (s *service) EditNamespace(ctx context.Context, namespace, name, owner stri
return s.store.NamespaceRename(ctx, ns.TenantID, lowerName)
}

func (s *service) AddNamespaceUser(ctx context.Context, namespace, username, ownerID string) (*models.Namespace, error) {
ns, err := s.store.NamespaceGet(ctx, namespace)
func (s *service) AddNamespaceUser(ctx context.Context, tenantID, username, ownerID string) (*models.Namespace, error) {
ns, err := s.store.NamespaceGet(ctx, tenantID)
if err == store.ErrNoDocuments {
return nil, ErrNamespaceNotFound
}
Expand Down Expand Up @@ -220,10 +220,10 @@ func (s *service) AddNamespaceUser(ctx context.Context, namespace, username, own
return nil, err
}

return s.store.NamespaceAddMember(ctx, namespace, user.ID)
return s.store.NamespaceAddMember(ctx, tenantID, user.ID)
}
func (s *service) RemoveNamespaceUser(ctx context.Context, namespace, username, ownerID string) (*models.Namespace, error) {
if _, err := s.store.NamespaceGet(ctx, namespace); err != nil {
func (s *service) RemoveNamespaceUser(ctx context.Context, tenantID, username, ownerID string) (*models.Namespace, error) {
if _, err := s.store.NamespaceGet(ctx, tenantID); err != nil {
if err == store.ErrNoDocuments {
return nil, ErrNamespaceNotFound
}
Expand All @@ -248,7 +248,7 @@ func (s *service) RemoveNamespaceUser(ctx context.Context, namespace, username,
return nil, err
}

return s.store.NamespaceRemoveMember(ctx, namespace, user.ID)
return s.store.NamespaceRemoveMember(ctx, tenantID, user.ID)
}

func (s *service) UpdateDataUserSecurity(ctx context.Context, sessionRecord bool, tenant string) error {
Expand Down
62 changes: 31 additions & 31 deletions api/store/mongo/namespace_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,27 +106,27 @@ func (s *Store) NamespaceList(ctx context.Context, pagination paginator.Query, f
return namespaces, count, err
}

func (s *Store) NamespaceGet(ctx context.Context, namespace string) (*models.Namespace, error) {
func (s *Store) NamespaceGet(ctx context.Context, tenantID string) (*models.Namespace, error) {
var ns *models.Namespace

if err := s.cache.Get(ctx, strings.Join([]string{"namespace", namespace}, "/"), &ns); err != nil {
if err := s.cache.Get(ctx, strings.Join([]string{"namespace", tenantID}, "/"), &ns); err != nil {
logrus.Error(err)
}

if ns != nil {
goto count
}

if err := s.db.Collection("namespaces").FindOne(ctx, bson.M{"tenant_id": namespace}).Decode(&ns); err != nil {
if err := s.db.Collection("namespaces").FindOne(ctx, bson.M{"tenant_id": tenantID}).Decode(&ns); err != nil {
return ns, fromMongoError(err)
}

if err := s.cache.Set(ctx, strings.Join([]string{"namespace", namespace}, "/"), ns, time.Minute); err != nil {
if err := s.cache.Set(ctx, strings.Join([]string{"namespace", tenantID}, "/"), ns, time.Minute); err != nil {
logrus.Error(err)
}

count:
countDevice, err := s.db.Collection("devices").CountDocuments(ctx, bson.M{"tenant_id": namespace, "status": "accepted"})
countDevice, err := s.db.Collection("devices").CountDocuments(ctx, bson.M{"tenant_id": tenantID, "status": "accepted"})
if err != nil {
return nil, fromMongoError(err)
}
Expand All @@ -136,18 +136,18 @@ count:
return ns, nil
}

func (s *Store) NamespaceGetByName(ctx context.Context, namespace string) (*models.Namespace, error) {
func (s *Store) NamespaceGetByName(ctx context.Context, name string) (*models.Namespace, error) {
var ns *models.Namespace

if err := s.cache.Get(ctx, strings.Join([]string{"namespace", namespace}, "/"), &ns); err != nil {
if err := s.cache.Get(ctx, strings.Join([]string{"namespace", name}, "/"), &ns); err != nil {
logrus.Error(err)
}

if ns != nil {
return ns, nil
}

if err := s.db.Collection("namespaces").FindOne(ctx, bson.M{"name": namespace}).Decode(&ns); err != nil {
if err := s.db.Collection("namespaces").FindOne(ctx, bson.M{"name": name}).Decode(&ns); err != nil {
return nil, fromMongoError(err)
}

Expand All @@ -159,79 +159,79 @@ func (s *Store) NamespaceCreate(ctx context.Context, namespace *models.Namespace
return namespace, err
}

func (s *Store) NamespaceDelete(ctx context.Context, namespace string) error {
if _, err := s.db.Collection("namespaces").DeleteOne(ctx, bson.M{"tenant_id": namespace}); err != nil {
func (s *Store) NamespaceDelete(ctx context.Context, tenantID string) error {
if _, err := s.db.Collection("namespaces").DeleteOne(ctx, bson.M{"tenant_id": tenantID}); err != nil {
return fromMongoError(err)
}

if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", namespace}, "/")); err != nil {
if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", tenantID}, "/")); err != nil {
logrus.Error(err)
}

collections := []string{"devices", "sessions", "connected_devices", "firewall_rules", "public_keys", "recorded_sessions"}

for _, collection := range collections {
if _, err := s.db.Collection(collection).DeleteMany(ctx, bson.M{"tenant_id": namespace}); err != nil {
if _, err := s.db.Collection(collection).DeleteMany(ctx, bson.M{"tenant_id": tenantID}); err != nil {
return fromMongoError(err)
}
}
return nil
}

func (s *Store) NamespaceRename(ctx context.Context, namespace, name string) (*models.Namespace, error) {
if _, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": namespace}, bson.M{"$set": bson.M{"name": name}}); err != nil {
func (s *Store) NamespaceRename(ctx context.Context, tenantID, name string) (*models.Namespace, error) {
if _, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenantID}, bson.M{"$set": bson.M{"name": name}}); err != nil {
return nil, fromMongoError(err)
}

if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", namespace}, "/")); err != nil {
if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", tenantID}, "/")); err != nil {
logrus.Error(err)
}

return s.NamespaceGet(ctx, namespace)
return s.NamespaceGet(ctx, tenantID)
}

func (s *Store) NamespaceUpdate(ctx context.Context, tenant string, namespace *models.Namespace) error {
if _, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenant}, bson.M{"$set": bson.M{"name": namespace.Name, "max_devices": namespace.MaxDevices, "settings.session_record": namespace.Settings.SessionRecord}}); err != nil {
func (s *Store) NamespaceUpdate(ctx context.Context, tenantID string, namespace *models.Namespace) error {
if _, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenantID}, bson.M{"$set": bson.M{"name": namespace.Name, "max_devices": namespace.MaxDevices, "settings.session_record": namespace.Settings.SessionRecord}}); err != nil {
return fromMongoError(err)
}

if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", tenant}, "/")); err != nil {
if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", tenantID}, "/")); err != nil {
logrus.Error(err)
}

return nil
}

func (s *Store) NamespaceAddMember(ctx context.Context, namespace, ID string) (*models.Namespace, error) {
result, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": namespace}, bson.M{"$addToSet": bson.M{"members": ID}})
func (s *Store) NamespaceAddMember(ctx context.Context, tenantID, ID string) (*models.Namespace, error) {
result, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenantID}, bson.M{"$addToSet": bson.M{"members": ID}})
if err != nil {
return nil, fromMongoError(err)
}
if result.ModifiedCount == 0 {
return nil, ErrDuplicateID
}

if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", namespace}, "/")); err != nil {
if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", tenantID}, "/")); err != nil {
logrus.Error(err)
}

return s.NamespaceGet(ctx, namespace)
return s.NamespaceGet(ctx, tenantID)
}

func (s *Store) NamespaceRemoveMember(ctx context.Context, namespace, ID string) (*models.Namespace, error) {
result, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": namespace}, bson.M{"$pull": bson.M{"members": ID}})
func (s *Store) NamespaceRemoveMember(ctx context.Context, tenantID, ID string) (*models.Namespace, error) {
result, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenantID}, bson.M{"$pull": bson.M{"members": ID}})
if err != nil {
return nil, fromMongoError(err)
}
if result.ModifiedCount == 0 {
return nil, ErrUserNotFound
}

if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", namespace}, "/")); err != nil {
if err := s.cache.Delete(ctx, strings.Join([]string{"namespace", tenantID}, "/")); err != nil {
logrus.Error(err)
}

return s.NamespaceGet(ctx, namespace)
return s.NamespaceGet(ctx, tenantID)
}

func (s *Store) NamespaceGetFirst(ctx context.Context, ID string) (*models.Namespace, error) {
Expand All @@ -244,21 +244,21 @@ func (s *Store) NamespaceGetFirst(ctx context.Context, ID string) (*models.Names
return ns, nil
}

func (s *Store) NamespaceSetSessionRecord(ctx context.Context, sessionRecord bool, tenant string) error {
if _, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenant}, bson.M{"$set": bson.M{"settings.session_record": sessionRecord}}); err != nil {
func (s *Store) NamespaceSetSessionRecord(ctx context.Context, sessionRecord bool, tenantID string) error {
if _, err := s.db.Collection("namespaces").UpdateOne(ctx, bson.M{"tenant_id": tenantID}, bson.M{"$set": bson.M{"settings.session_record": sessionRecord}}); err != nil {

return fromMongoError(err)
}

return nil
}

func (s *Store) NamespaceGetSessionRecord(ctx context.Context, tenant string) (bool, error) {
func (s *Store) NamespaceGetSessionRecord(ctx context.Context, tenantID string) (bool, error) {
var settings struct {
Settings *models.NamespaceSettings `json:"settings" bson:"settings"`
}

if err := s.db.Collection("namespaces").FindOne(ctx, bson.M{"tenant_id": tenant}).Decode(&settings); err != nil {
if err := s.db.Collection("namespaces").FindOne(ctx, bson.M{"tenant_id": tenantID}).Decode(&settings); err != nil {
return false, fromMongoError(err)
}
return settings.Settings.SessionRecord, nil
Expand Down
20 changes: 10 additions & 10 deletions api/store/namespace_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ import (

type NamespaceStore interface {
NamespaceList(ctx context.Context, pagination paginator.Query, filters []models.Filter, export bool) ([]models.Namespace, int, error)
NamespaceGet(ctx context.Context, namespace string) (*models.Namespace, error)
NamespaceGetByName(ctx context.Context, namespace string) (*models.Namespace, error)
NamespaceCreate(ctx context.Context, namespace *models.Namespace) (*models.Namespace, error)
NamespaceRename(ctx context.Context, namespace, name string) (*models.Namespace, error)
NamespaceUpdate(ctx context.Context, tenant string, namespace *models.Namespace) error
NamespaceDelete(ctx context.Context, namespace string) error
NamespaceAddMember(ctx context.Context, namespace, ID string) (*models.Namespace, error)
NamespaceRemoveMember(ctx context.Context, namespace, ID string) (*models.Namespace, error)
NamespaceGet(ctx context.Context, tenantID string) (*models.Namespace, error)
NamespaceGetByName(ctx context.Context, tenantID string) (*models.Namespace, error)
NamespaceCreate(ctx context.Context, tenantID *models.Namespace) (*models.Namespace, error)
NamespaceRename(ctx context.Context, tenantID, name string) (*models.Namespace, error)
NamespaceUpdate(ctx context.Context, tenantID string, namespace *models.Namespace) error
NamespaceDelete(ctx context.Context, tenantID string) error
NamespaceAddMember(ctx context.Context, tenantID, ID string) (*models.Namespace, error)
NamespaceRemoveMember(ctx context.Context, tenantID, ID string) (*models.Namespace, error)
NamespaceGetFirst(ctx context.Context, ID string) (*models.Namespace, error)
NamespaceSetSessionRecord(ctx context.Context, sessionRecord bool, tenant string) error
NamespaceGetSessionRecord(ctx context.Context, tenant string) (bool, error)
NamespaceSetSessionRecord(ctx context.Context, sessionRecord bool, tenantID string) error
NamespaceGetSessionRecord(ctx context.Context, tenantID string) (bool, error)
}

0 comments on commit e363e2b

Please sign in to comment.