53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
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"`
|
|
}
|