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, } }