Skip to content

Commit 0aa596d

Browse files
authored
refactor: validate database inside the actual handler logic (#3664)
1 parent 6fc15d9 commit 0aa596d

File tree

1 file changed

+34
-20
lines changed

1 file changed

+34
-20
lines changed

openmeter/customer/httpdriver/customer.go

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ func (h *handler) CreateCustomer() CreateCustomerHandler {
175175
}
176176

177177
type (
178-
UpdateCustomerRequest = customer.UpdateCustomerInput
178+
UpdateCustomerRequest struct {
179+
Namespace string
180+
CustomerIDOrKey string
181+
CustomerMutate customer.CustomerMutate
182+
}
179183
UpdateCustomerResponse = api.Customer
180184
UpdateCustomerHandler httptransport.HandlerWithArgs[UpdateCustomerRequest, UpdateCustomerResponse, string]
181185
)
@@ -194,34 +198,38 @@ func (h *handler) UpdateCustomer() UpdateCustomerHandler {
194198
return UpdateCustomerRequest{}, err
195199
}
196200

201+
req := UpdateCustomerRequest{
202+
Namespace: ns,
203+
CustomerIDOrKey: customerIDOrKey,
204+
CustomerMutate: MapCustomerReplaceUpdate(body),
205+
}
206+
207+
return req, nil
208+
},
209+
func(ctx context.Context, request UpdateCustomerRequest) (UpdateCustomerResponse, error) {
197210
// TODO: we should not allow key identifier for mutable operations
198211
// Get the customer
199212
cus, err := h.service.GetCustomer(ctx, customer.GetCustomerInput{
200213
CustomerIDOrKey: &customer.CustomerIDOrKey{
201-
IDOrKey: customerIDOrKey,
202-
Namespace: ns,
214+
IDOrKey: request.CustomerIDOrKey,
215+
Namespace: request.Namespace,
203216
},
204217
})
205218
if err != nil {
206-
return UpdateCustomerRequest{}, err
219+
return UpdateCustomerResponse{}, err
207220
}
208221

209222
if cus != nil && cus.IsDeleted() {
210-
return UpdateCustomerRequest{},
223+
return UpdateCustomerResponse{},
211224
models.NewGenericPreConditionFailedError(
212225
fmt.Errorf("customer is deleted [namespace=%s customer.id=%s]", cus.Namespace, cus.ID),
213226
)
214227
}
215228

216-
req := UpdateCustomerRequest{
229+
customer, err := h.service.UpdateCustomer(ctx, customer.UpdateCustomerInput{
217230
CustomerID: cus.GetID(),
218-
CustomerMutate: MapCustomerReplaceUpdate(body),
219-
}
220-
221-
return req, nil
222-
},
223-
func(ctx context.Context, request UpdateCustomerRequest) (UpdateCustomerResponse, error) {
224-
customer, err := h.service.UpdateCustomer(ctx, request)
231+
CustomerMutate: request.CustomerMutate,
232+
})
225233
if err != nil {
226234
return UpdateCustomerResponse{}, err
227235
}
@@ -241,7 +249,10 @@ func (h *handler) UpdateCustomer() UpdateCustomerHandler {
241249
}
242250

243251
type (
244-
DeleteCustomerRequest = customer.DeleteCustomerInput
252+
DeleteCustomerRequest struct {
253+
Namespace string
254+
CustomerIDOrKey string
255+
}
245256
DeleteCustomerResponse = interface{}
246257
DeleteCustomerHandler httptransport.HandlerWithArgs[DeleteCustomerRequest, DeleteCustomerResponse, string]
247258
)
@@ -255,12 +266,18 @@ func (h *handler) DeleteCustomer() DeleteCustomerHandler {
255266
return DeleteCustomerRequest{}, err
256267
}
257268

269+
return DeleteCustomerRequest{
270+
Namespace: ns,
271+
CustomerIDOrKey: customerIDOrKey,
272+
}, nil
273+
},
274+
func(ctx context.Context, request DeleteCustomerRequest) (DeleteCustomerResponse, error) {
258275
// TODO: we should not allow key identifier for mutable operations
259276
// Get the customer
260277
cus, err := h.service.GetCustomer(ctx, customer.GetCustomerInput{
261278
CustomerIDOrKey: &customer.CustomerIDOrKey{
262-
IDOrKey: customerIDOrKey,
263-
Namespace: ns,
279+
IDOrKey: request.CustomerIDOrKey,
280+
Namespace: request.Namespace,
264281
},
265282
})
266283
if err != nil {
@@ -274,10 +291,7 @@ func (h *handler) DeleteCustomer() DeleteCustomerHandler {
274291
)
275292
}
276293

277-
return cus.GetID(), nil
278-
},
279-
func(ctx context.Context, request DeleteCustomerRequest) (DeleteCustomerResponse, error) {
280-
err := h.service.DeleteCustomer(ctx, request)
294+
err = h.service.DeleteCustomer(ctx, cus.GetID())
281295
if err != nil {
282296
return nil, err
283297
}

0 commit comments

Comments
 (0)