Skip to content

Commit f44ae5d

Browse files
committed
fix: fix minor issues and add extra checks
1 parent 538e2e5 commit f44ae5d

7 files changed

Lines changed: 24 additions & 6 deletions

File tree

api/v3/handlers/subscriptions/subscriptionaddons/convert.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package subscriptionaddons
22

33
import (
44
"errors"
5+
"fmt"
6+
"time"
57

68
"github.com/samber/lo"
79

@@ -15,8 +17,10 @@ import (
1517
func toAPISubscriptionAddon(addon subscriptionaddon.SubscriptionAddon) (apiv3.SubscriptionAddon, error) {
1618
now := clock.Now()
1719

18-
// If no instance is active at `now`, quantity stays 0.
19-
inst, _ := addon.GetInstanceAt(now)
20+
inst, found := addon.GetInstanceAt(now)
21+
if !found {
22+
return apiv3.SubscriptionAddon{}, fmt.Errorf("no instance is active at %s", now.Format(time.RFC3339))
23+
}
2024

2125
pers := lo.Map(addon.GetInstances(), func(i subscriptionaddon.SubscriptionAddonInstance, _ int) timeutil.OpenPeriod {
2226
return i.AsPeriod()

api/v3/handlers/subscriptions/subscriptionaddons/get.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type (
2121
GetSubscriptionAddonHandler httptransport.HandlerWithArgs[GetSubscriptionAddonRequest, GetSubscriptionAddonResponse, GetSubscriptionAddonParams]
2222
)
2323

24-
func (h *handler) GetSubscriptionAddons() GetSubscriptionAddonHandler {
24+
func (h *handler) GetSubscriptionAddon() GetSubscriptionAddonHandler {
2525
return httptransport.NewHandlerWithArgs(
2626
func(ctx context.Context, r *http.Request, params GetSubscriptionAddonParams) (GetSubscriptionAddonRequest, error) {
2727
ns, err := h.resolveNamespace(ctx)

api/v3/handlers/subscriptions/subscriptionaddons/handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
type Handler interface {
1111
ListSubscriptionAddons() ListSubscriptionAddonsHandler
12-
GetSubscriptionAddons() GetSubscriptionAddonHandler
12+
GetSubscriptionAddon() GetSubscriptionAddonHandler
1313
}
1414

1515
type handler struct {

api/v3/server/routes.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func (s *Server) ListSubscriptionAddons(w http.ResponseWriter, r *http.Request,
118118
}
119119

120120
func (s *Server) GetSubscriptionAddon(w http.ResponseWriter, r *http.Request, subscriptionId api.ULID, subscriptionAddonId api.ULID) {
121-
s.subscriptionAddonsHandler.GetSubscriptionAddons().With(subscriptionaddonshandler.GetSubscriptionAddonParams{
121+
s.subscriptionAddonsHandler.GetSubscriptionAddon().With(subscriptionaddonshandler.GetSubscriptionAddonParams{
122122
SubscriptionID: subscriptionId,
123123
SubscriptionAddonID: subscriptionAddonId,
124124
}).ServeHTTP(w, r)

openmeter/subscription/addon/repo/subscriptionaddon.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ func (r *subscriptionAddonRepo) Get(ctx context.Context, params subscriptionaddo
6161
dbsubscriptionaddon.ID(params.ID),
6262
dbsubscriptionaddon.Namespace(params.Namespace),
6363
)
64+
if params.SubscriptionID != "" {
65+
query = query.Where(dbsubscriptionaddon.SubscriptionID(params.SubscriptionID))
66+
}
6467
} else {
6568
query = query.Where(
6669
dbsubscriptionaddon.Namespace(params.Namespace),

openmeter/subscription/addon/service.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"fmt"
77
"slices"
88

9+
"github.com/oklog/ulid/v2"
10+
911
"github.com/openmeterio/openmeter/pkg/models"
1012
"github.com/openmeterio/openmeter/pkg/pagination"
1113
"github.com/openmeterio/openmeter/pkg/sortx"
@@ -74,7 +76,7 @@ type GetSubscriptionAddonInput struct {
7476
models.NamespacedID
7577

7678
// SubscriptionID
77-
SubscriptionID string `json:"subscriptionIdOrKey"`
79+
SubscriptionID string `json:"subscriptionId"`
7880

7981
// AddonIDOrKey
8082
AddonIDOrKey string `json:"addonIdOrKey"`
@@ -90,11 +92,17 @@ func (i GetSubscriptionAddonInput) Validate() error {
9092
if i.ID == "" {
9193
if i.SubscriptionID == "" {
9294
errs = append(errs, errors.New("subscription id or key must be provided if assignment id is not provided"))
95+
} else if _, err := ulid.Parse(i.SubscriptionID); err != nil {
96+
errs = append(errs, errors.New("subscription id is not a valid ULID"))
9397
}
9498

9599
if i.AddonIDOrKey == "" {
96100
errs = append(errs, errors.New("add-on id or key must be provided if assignment id is not provided"))
97101
}
102+
} else {
103+
if _, err := ulid.Parse(i.ID); err != nil {
104+
errs = append(errs, errors.New("assignment id is not a valid ULID"))
105+
}
98106
}
99107

100108
return errors.Join(errs...)

openmeter/subscription/addon/service/service.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ func (s *service) Create(ctx context.Context, ns string, input subscriptionaddon
201201

202202
// Get gets a subscription add-on
203203
func (s *service) Get(ctx context.Context, params subscriptionaddon.GetSubscriptionAddonInput) (*subscriptionaddon.SubscriptionAddon, error) {
204+
if err := params.Validate(); err != nil {
205+
return nil, models.NewGenericValidationError(err)
206+
}
204207
return s.cfg.SubAddRepo.Get(ctx, params)
205208
}
206209

0 commit comments

Comments
 (0)