package customer import ( "github.com/google/uuid" ) // Gender represents user gender type Gender string const ( GenderMale Gender = "male" GenderFemale Gender = "female" GenderOther Gender = "other" ) // CustomerStatus represents customer account status type CustomerStatus string const ( CustomerStatusActive CustomerStatus = "active" CustomerStatusInactive CustomerStatus = "inactive" ) // DeviceType represents the type of device type DeviceType string const ( DeviceTypeAndroid DeviceType = "android" DeviceTypeIOS DeviceType = "ios" ) // DeviceToken represents a device token for push notifications type DeviceToken struct { Token string `bson:"token"` DeviceType DeviceType `bson:"device_type"` CreatedAt int64 `bson:"created_at"` // Unix timestamp UpdatedAt int64 `bson:"updated_at"` // Unix timestamp } // Customer represents a mobile app user (customer) type Customer struct { ID uuid.UUID `bson:"_id"` FullName string `bson:"full_name"` Username string `bson:"username"` Email string `bson:"email"` Mobile string `bson:"mobile"` Password string `bson:"password"` // Never serialize password NationalID *string `bson:"national_id,omitempty"` Gender *Gender `bson:"gender,omitempty"` Birthdate *int64 `bson:"birthdate,omitempty"` // Unix timestamp ProfileImage *string `bson:"profile_image,omitempty"` Status CustomerStatus `bson:"status"` CompanyID *uuid.UUID `bson:"company_id,omitempty"` IsVerified bool `bson:"is_verified"` DeviceTokens []DeviceToken `bson:"device_tokens"` // For push notifications LastLoginAt *int64 `bson:"last_login_at,omitempty"` // Unix timestamp CreatedAt int64 `bson:"created_at"` // Unix timestamp UpdatedAt int64 `bson:"updated_at"` // Unix timestamp }