package profile import ( "encoding/json" "time" "github.com/google/uuid" ) //go:generate stringer -type=Status type Status int const ( StatusPublished Status = iota StatusDisabled StatusPending StatusDeleted ) type Profile struct { ID uuid.UUID UserID uuid.UUID ProfileHandle string Status Status Settings Settings Skills []Skill SocialLinks []SocialLink Achievements []Achievement Experiences []Experience Educations []Education Certifications []Certification Awards []Award AvailabilityRules []AvailabilityRule AvailabilityExceptions []AvailabilityException BookingServices []BookingService // Note: These are typically loaded separately to avoid circular dependencies // Assets, AssetBookmarkGroups, SpecialistBookmarks, PurchasedAssets, BookedServices // are accessed through their respective repositories using ProfileID/UserID CreatedAt time.Time UpdatedAt time.Time } type Settings struct { Theme ThemeSettings `json:"theme"` Other json.RawMessage `json:"rest_of_fields"` } type ThemeSettings struct { BackgroundColor string `json:"background_color"` TextColor string `json:"text_color"` RestOfFields json.RawMessage `json:"rest_of_fields"` }