Skip to content

Commit b17f983

Browse files
committed
refactor(api): update Namespace interface to use entity objects
- Change NamespaceUpdate to accept *models.Namespace instead of tenant/changes parameters - Change NamespaceDelete to accept *models.Namespace instead of tenantID - Update service layer to resolve namespaces before update/delete operations - Refactor EditNamespace to modify and persist full Namespace entity - Refactor EditSessionRecordStatus to update Namespace entity directly - Update mocks to use new NamespaceUpdate/NamespaceDelete signatures - Update mongo store implementation with new NamespaceUpdate and NamespaceDelete behavior - Update CLI service and tests to use entity-based operations - Add tests for new EditSessionRecordStatus flow - Remove models.NamespaceChanges usage in favor of direct entity updates BREAKING CHANGE: NamespaceUpdate and NamespaceDelete method signatures changed to accept *models.Namespace
1 parent ebf155f commit b17f983

File tree

11 files changed

+393
-194
lines changed

11 files changed

+393
-194
lines changed

api/services/namespace.go

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (s *service) GetNamespace(ctx context.Context, tenantID string) (*models.Na
132132
// When cloud and billing is enabled, it will try to delete the namespace's billing information from the billing
133133
// service if it exists.
134134
func (s *service) DeleteNamespace(ctx context.Context, tenantID string) error {
135-
ns, err := s.store.NamespaceResolve(ctx, store.NamespaceTenantIDResolver, tenantID)
135+
n, err := s.store.NamespaceResolve(ctx, store.NamespaceTenantIDResolver, tenantID)
136136
if err != nil {
137137
return NewErrNamespaceNotFound(tenantID, err)
138138
}
@@ -141,29 +141,35 @@ func (s *service) DeleteNamespace(ctx context.Context, tenantID string) error {
141141
return !ns.Billing.IsNil() && ns.Billing.HasCutomer() && ns.Billing.HasSubscription()
142142
}
143143

144-
if envs.IsCloud() && ableToReportDeleteNamespace(ns) {
144+
if envs.IsCloud() && ableToReportDeleteNamespace(n) {
145145
if err := s.BillingReport(ctx, s.client, tenantID, ReportNamespaceDelete); err != nil {
146146
return NewErrBillingReportNamespaceDelete(err)
147147
}
148148
}
149149

150-
return s.store.NamespaceDelete(ctx, tenantID)
150+
return s.store.NamespaceDelete(ctx, n)
151151
}
152152

153153
func (s *service) EditNamespace(ctx context.Context, req *requests.NamespaceEdit) (*models.Namespace, error) {
154-
changes := &models.NamespaceChanges{
155-
Name: strings.ToLower(req.Name),
156-
SessionRecord: req.Settings.SessionRecord,
157-
ConnectionAnnouncement: req.Settings.ConnectionAnnouncement,
154+
namespace, err := s.store.NamespaceResolve(ctx, store.NamespaceTenantIDResolver, req.Tenant)
155+
if err != nil {
156+
return nil, NewErrNamespaceNotFound(req.Tenant, err)
158157
}
159158

160-
if err := s.store.NamespaceUpdate(ctx, req.Tenant, changes); err != nil {
161-
switch {
162-
case errors.Is(err, store.ErrNoDocuments):
163-
return nil, NewErrNamespaceNotFound(req.Tenant, err)
164-
default:
165-
return nil, err
166-
}
159+
if req.Name != "" && !strings.EqualFold(req.Name, namespace.Name) {
160+
namespace.Name = strings.ToLower(req.Name)
161+
}
162+
163+
if req.Settings.SessionRecord != nil {
164+
namespace.Settings.SessionRecord = *req.Settings.SessionRecord
165+
}
166+
167+
if req.Settings.ConnectionAnnouncement != nil {
168+
namespace.Settings.ConnectionAnnouncement = *req.Settings.ConnectionAnnouncement
169+
}
170+
171+
if err := s.store.NamespaceUpdate(ctx, namespace); err != nil {
172+
return nil, err
167173
}
168174

169175
return s.store.NamespaceResolve(ctx, store.NamespaceTenantIDResolver, req.Tenant)
@@ -176,7 +182,8 @@ func (s *service) EditNamespace(ctx context.Context, req *requests.NamespaceEdit
176182
//
177183
// This method is deprecated, use [NamespaceService#EditNamespace] instead.
178184
func (s *service) EditSessionRecordStatus(ctx context.Context, sessionRecord bool, tenantID string) error {
179-
if err := s.store.NamespaceUpdate(ctx, tenantID, &models.NamespaceChanges{SessionRecord: &sessionRecord}); err != nil {
185+
n, err := s.store.NamespaceResolve(ctx, store.NamespaceTenantIDResolver, tenantID)
186+
if err != nil {
180187
switch {
181188
case errors.Is(err, store.ErrNoDocuments):
182189
return NewErrNamespaceNotFound(tenantID, err)
@@ -185,6 +192,11 @@ func (s *service) EditSessionRecordStatus(ctx context.Context, sessionRecord boo
185192
}
186193
}
187194

195+
n.Settings.SessionRecord = sessionRecord
196+
if err := s.store.NamespaceUpdate(ctx, n); err != nil { // nolint:revive
197+
return err
198+
}
199+
188200
return nil
189201
}
190202

0 commit comments

Comments
 (0)