package cmd import ( "fmt" "regexp" "strings" "git.maurice.fr/thomas/mailout/pkg/models" "github.com/google/uuid" ) var ( uuidRegex = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") ) func splitUser(user string) (string, string, error) { splt := strings.Split(user, "@") if len(splt) != 2 { return "", "", fmt.Errorf("invalid username: %s", user) } if len(splt[0]) == 0 || len(splt[1]) == 0 { return "", "", fmt.Errorf("invalid username: %s", user) } return splt[0], splt[1], nil } func buildUserQuery(arg string) (*models.User, error) { var userQuery models.User if uuidRegex.Match([]byte(arg)) { id, err := uuid.Parse(arg) if err != nil { return nil, err } userQuery.ID = id } else { username, domain, err := splitUser(arg) if err != nil { return nil, err } userQuery = models.User{Domain: domain, Username: username} } return &userQuery, nil }