04d8eaf52c
Client Entity * repolevel * servicefunctions * openapiclientget * openapiupdate * client * vendor
64 lines
981 B
Go
64 lines
981 B
Go
package client
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"queryorchestration/internal/database"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type Client struct {
|
|
ID uuid.UUID
|
|
Name string
|
|
CanSync bool
|
|
}
|
|
|
|
func (c *Client) getCanSyncUpdate(n *bool) bool {
|
|
if n == nil {
|
|
return c.CanSync
|
|
}
|
|
|
|
return *n
|
|
}
|
|
|
|
func (c *Client) getNameUpdate(n *string) (string, error) {
|
|
if n == nil {
|
|
return c.Name, nil
|
|
}
|
|
|
|
return normalizeName(*n)
|
|
}
|
|
|
|
func normalizeName(name string) (string, error) {
|
|
name = strings.TrimSpace(name)
|
|
|
|
if name == "" {
|
|
return "", errors.New("name required")
|
|
}
|
|
|
|
spacere := regexp.MustCompile(`\s+`)
|
|
name = spacere.ReplaceAllString(name, " ")
|
|
|
|
reg := `^[a-zA-Z0-9\_\- ]+$`
|
|
|
|
alphanumeric := regexp.MustCompile(reg)
|
|
if !alphanumeric.MatchString(name) {
|
|
return "", fmt.Errorf("name must have regex: %s", reg)
|
|
}
|
|
|
|
return name, nil
|
|
}
|
|
|
|
type Service struct {
|
|
db *database.Connection
|
|
}
|
|
|
|
func New(db *database.Connection) *Service {
|
|
return &Service{
|
|
db,
|
|
}
|
|
}
|