Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
47
pkg/common/subscription_feature.go
Normal file
47
pkg/common/subscription_feature.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"fiskerinc.com/modules/common/dbbasemodel"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type SubscriptionFeature struct {
|
||||
ID uuid.UUID `json:"id" pg:"type:uuid,default:uuid_generate_v4()"`
|
||||
Name string `json:"name" validate:"required,max=256"`
|
||||
Description string `json:"description" validate:"required,max=5120"`
|
||||
Configurations []SubscriptionConfiguration `json:"configurations,omitempty" pg:"rel:has-many"`
|
||||
dbbasemodel.DBModelBase
|
||||
}
|
||||
|
||||
func (sf *SubscriptionFeature) HasConfig(config *SubscriptionConfiguration) bool {
|
||||
for _, item := range sf.Configurations {
|
||||
if item.ECU == config.ECU {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (sf *SubscriptionFeature) AddConfig(config *SubscriptionConfiguration) {
|
||||
if !sf.HasConfig(config) {
|
||||
sf.Configurations = append(sf.Configurations, *config)
|
||||
}
|
||||
}
|
||||
|
||||
func (sf *SubscriptionFeature) RemoveConfig(config *SubscriptionConfiguration) {
|
||||
if sf.HasConfig(config) {
|
||||
configs := make([]SubscriptionConfiguration, len(sf.Configurations)-1)
|
||||
for _, item := range sf.Configurations {
|
||||
if config.SubscriptionFeatureID != item.SubscriptionFeatureID && config.ECU != item.ECU {
|
||||
configs[len(configs)] = item
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (sf *SubscriptionFeature) String() string {
|
||||
return fmt.Sprintf("SubscriptionFeature<%v>", sf.ID)
|
||||
}
|
||||
Reference in New Issue
Block a user