Files
sxchnge/backend/pkg/person/name.go
T

39 lines
845 B
Go

package person
import "strings"
// Name represents a person's first and last name as a reusable value object.
type Name struct {
FirstName string `bson:"firstName,omitempty" json:"first_name,omitempty"`
LastName string `bson:"lastName,omitempty" json:"last_name,omitempty"`
}
func (n Name) Trim() Name {
return Name{
FirstName: strings.TrimSpace(n.FirstName),
LastName: strings.TrimSpace(n.LastName),
}
}
func (n Name) WithFallback(fallback Name) Name {
n = n.Trim()
fallback = fallback.Trim()
if n.FirstName == "" {
n.FirstName = fallback.FirstName
}
if n.LastName == "" {
n.LastName = fallback.LastName
}
return n
}
func (n Name) FullName() string {
n = n.Trim()
return strings.TrimSpace(n.FirstName + " " + n.LastName)
}
func (n Name) IsZero() bool {
n = n.Trim()
return n.FirstName == "" && n.LastName == ""
}