module biz import base import freeflowuniverse.herolib.data.ourtime // ContactLabelType represents the type of label for contact information pub enum ContactLabelType { home work mobile other main personal business school custom // For user-defined labels } // SocialPlatformType represents the type of social media platform pub enum SocialPlatformType { facebook twitter linkedin instagram github youtube tiktok reddit pinterest snapchat whatsapp telegram discord mastodon other } // Contact represents a contact with all their information pub struct Contact { base.Base // Provides id u32, creation_time, mod_time, comments []u32 pub mut: name string // Display name of the contact first_name string last_name string nickname string email []ContactEmail // Multiple email addresses with labels phone []ContactPhone // Multiple phone numbers with labels address []ContactAddress // Multiple addresses with labels company string job_title string notes string birthday ourtime.OurTime website []string social_profiles []SocialProfile photo u32 // link to the attachment in the circle custom_fields []CustomField // User-defined fields } // ContactEmail represents an email address with a label pub struct ContactEmail { pub mut: email string label ContactLabelType // Type of email address primary bool } // ContactPhone represents a phone number with a label pub struct ContactPhone { pub mut: number string label ContactLabelType // Type of phone number primary bool } // ContactAddress represents a physical address with a label pub struct ContactAddress { pub mut: street string city string state string postal_code string country string label ContactLabelType // Type of address primary bool } // SocialProfile represents a social media profile pub struct SocialProfile { pub mut: platform SocialPlatformType // Type of social media platform username string url string } // CustomField represents a user-defined field pub struct CustomField { pub mut: label string value string } // ContactGroup represents a group of contacts pub struct ContactGroup { base.Base // Provides id u32, creation_time, mod_time, comments []u32 pub mut: name string description string contacts []u32 // IDs of contacts in this group owner_id u32 // User who owns this group shared_with []u32 // Users this group is shared with }