7ce7c9df4d
Feature/ecr * nosave * repo * awscli * unzip * ignore * moreram * 14k * ref * deployment * 12k * uselocal * go * dockercomd * reorder * iamgename * installs * tart * cli * clideps * y * dockerce * nodock * multi * rmecr * dev
74 lines
1.2 KiB
Go
74 lines
1.2 KiB
Go
package client
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"queryorchestration/internal/serviceconfig"
|
|
)
|
|
|
|
type Client struct {
|
|
ID string
|
|
Name string
|
|
CanSync bool
|
|
}
|
|
|
|
func (c *Client) NormalizeCanSyncUpdate(canSync **bool) {
|
|
if canSync == nil || *canSync == nil {
|
|
return
|
|
}
|
|
|
|
if c.CanSync == **canSync {
|
|
*canSync = nil
|
|
}
|
|
}
|
|
|
|
func (c *Client) NormalizeNameUpdate(name **string) error {
|
|
if name == nil || *name == nil {
|
|
return nil
|
|
}
|
|
|
|
err := normalizeName(*name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if c.Name == **name {
|
|
*name = nil
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func normalizeName(name *string) error {
|
|
if name == nil {
|
|
return nil
|
|
}
|
|
|
|
normalizedName := strings.TrimSpace(*name)
|
|
spaceRegex := regexp.MustCompile(`\s+`)
|
|
normalizedName = spaceRegex.ReplaceAllString(normalizedName, " ")
|
|
|
|
validNameRegex := `^[a-zA-Z0-9\_\- \(\)\.\,]+$`
|
|
|
|
alphanumeric := regexp.MustCompile(validNameRegex)
|
|
if !alphanumeric.MatchString(normalizedName) {
|
|
return fmt.Errorf(`"%s" must have regex: %s`, normalizedName, validNameRegex)
|
|
}
|
|
|
|
*name = normalizedName
|
|
|
|
return nil
|
|
}
|
|
|
|
type Service struct {
|
|
cfg serviceconfig.ConfigProvider
|
|
}
|
|
|
|
func New(cfg serviceconfig.ConfigProvider) *Service {
|
|
return &Service{
|
|
cfg,
|
|
}
|
|
}
|