openmeter / app /input.go
Leon4gr45's picture
Upload folder using huggingface_hub
429334c verified
Raw
History Blame Contribute Delete
1.82 kB
package app
import (
"errors"
"fmt"
"github.com/openmeterio/openmeter/openmeter/customer"
"github.com/openmeterio/openmeter/pkg/models"
"github.com/openmeterio/openmeter/pkg/pagination"
)
type ListCustomerInput struct {
pagination.Page
AppID *AppID
CustomerID customer.CustomerID
Type *AppType
}
func (a ListCustomerInput) Validate() error {
var errs []error
if err := a.CustomerID.Validate(); err != nil {
errs = append(errs, err)
}
if a.AppID != nil {
if err := a.AppID.Validate(); err != nil {
errs = append(errs, err)
}
}
if a.Type != nil {
if *a.Type == "" {
errs = append(errs, models.NewGenericValidationError(
fmt.Errorf("app type cannot be empty"),
))
}
}
return errors.Join(errs...)
}
type EnsureCustomerInput struct {
AppID AppID
CustomerID customer.CustomerID
}
func (a EnsureCustomerInput) Validate() error {
if err := a.AppID.Validate(); err != nil {
return err
}
if err := a.CustomerID.Validate(); err != nil {
return err
}
if a.AppID.Namespace != a.CustomerID.Namespace {
return fmt.Errorf("app ID namespace %s does not match customer ID namespace %s", a.AppID.Namespace, a.CustomerID.Namespace)
}
return nil
}
type DeleteCustomerInput struct {
AppID *AppID
CustomerID *customer.CustomerID
}
func (a DeleteCustomerInput) Validate() error {
if a.AppID == nil && a.CustomerID == nil {
return fmt.Errorf("app ID and customer ID cannot be nil")
}
if a.AppID != nil {
if err := a.AppID.Validate(); err != nil {
return err
}
}
if a.CustomerID != nil {
if err := a.CustomerID.Validate(); err != nil {
return err
}
}
if a.AppID != nil && a.CustomerID != nil && a.AppID.Namespace != a.CustomerID.Namespace {
return errors.New("app and customer must be in the same namespace")
}
return nil
}