package models import ( "mime/multipart" "time" "github.com/lib/pq" ) type LoginRequest struct { Email string `json:"email" binding:"required"` Password string `json:"password" binding:"required"` } type RegisterRequest struct { Name string `json:"name"` Email string `json:"email" binding:"required,email"` Phone int `json:"phone"` Password string `json:"password" binding:"required"` } type ChangePasswordRequest struct { OldPassword string `json:"old_password" binding:"required" ` NewPassword string `json:"new_password" binding:"required" ` } type CreateVerifyEmailRequest struct { Token uint `json:"token" binding:"required"` } type ( CreateAcademyRequest struct { AccountID int64 `json:"account_id"` Title string `json:"title" validate:"required"` Description string `json:"description"` Order *uint `json:"order"` } UpdateAcademyRequest struct { ID int64 `json:"id"` Title *string `json:"title"` Description *string `json:"description"` Order *uint `json:"order"` } AcademyResponse struct { Academy TotalMaterial int64 `gorm:"total_material" json:"total_material"` } UserAcademyResponse struct { Academy TotalMaterial int64 `gorm:"total_material" json:"total_material"` TotalReadMaterial int64 `gorm:"total_read_material" json:"total_read_material"` PercentageReadMaterial float64 `gorm:"percentage_read_material" json:"percentage_read_material"` } UserAcademyMaterialResponse struct { ID int64 `gorm:"column:id" json:"id"` AcademyID int64 `gorm:"column:academy_id" json:"academy_id"` Title string `gorm:"column:title" json:"title"` Slug string `gorm:"column:slug" json:"slug"` Order uint `gorm:"column:order" json:"order"` CreatedAt *time.Time `gorm:"column:read_created_at" json:"created_at"` UpdatedAt *time.Time `gorm:"column:read_updated_at" json:"updated_at"` IsRead bool `gorm:"is_read" json:"is_read"` } UserAcademyMaterialDetailResponse struct { ID int64 `gorm:"column:id" json:"id"` AcademyID int64 `gorm:"column:academy_id" json:"academy_id"` Title string `gorm:"column:title" json:"title"` Slug string `gorm:"column:slug" json:"slug"` Content string `gorm:"column:content" json:"content"` Order uint `gorm:"column:order" json:"order"` CreatedAt *time.Time `gorm:"column:read_created_at" json:"created_at"` UpdatedAt *time.Time `gorm:"column:read_updated_at" json:"updated_at"` IsRead bool `gorm:"is_read" json:"is_read"` } CreateAcademyMaterialRequest struct { AcademyID int64 `json:"academy_id" validate:"required"` Title string `json:"title" validate:"required"` Content string `json:"content"` Order *uint `json:"order"` } UpdateAcademyMaterialRequest struct { ID int64 `json:"id"` Title *string `json:"title"` Content *string `json:"content"` Order *uint `json:"order"` } ListAcademyRequest struct { AccountID int64 Filter } ListAcademyMaterialRequest struct { AccountID int64 AcademyID int64 Slug string Filter } ListAcademyContentRequest struct { AccountID int64 AcademyID int64 AcademyMaterialID int64 Filter } ReorderRequest struct { ID int64 `json:"id"` Order int64 `json:"order"` } ReorderAcademyRequest struct { Reorder []ReorderRequest `json:"reorder"` } ReorderAcademyMaterialRequest struct { AcademyID int64 `json:"academy_id"` Reorder []ReorderRequest `json:"reorder"` } ToggleAcademyMaterialProgressRequest struct { AccountID int64 `json:"-"` MaterialSlug string `json:"-"` AcademySlug string `json:"-"` IsRead bool `json:"is_read"` } ) func NewListAcademyRequest() ListAcademyRequest { return ListAcademyRequest{ Filter: NewFilter(), } } func NewListAcademyMaterialRequest() ListAcademyMaterialRequest { return ListAcademyMaterialRequest{ Filter: NewFilter(), } } func NewListAcademyContentRequest() ListAcademyContentRequest { return ListAcademyContentRequest{ Filter: NewFilter(), } } type ( // GET QUIZ UserGetQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` } UserGetQuizResponse struct { Quiz TotalQuestions int64 `json:"total_questions"` UserAttempts int64 `json:"user_attempts"` HasActiveAttempt bool `json:"has_active_attempt"` } // ATTEMP QUIZ UserAttemptQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` } UserAttemptQuizQuestionsResponse struct { ID int64 `json:"id"` IsDoubt bool `json:"is_doubt"` IsAnswered bool `json:"is_answered"` } UserAttemptQuizResponse struct { ID int64 `json:"id"` AccountID int64 `json:"account_id"` QuizID int64 `json:"quiz_id"` StartedAt time.Time `json:"started_at"` DueAt time.Time `json:"due_at"` FinishedAt *time.Time `json:"finished_at"` Score float64 `json:"score"` Questions []UserAttemptQuizQuestionsResponse `json:"questions"` } // GET QUESTION GetQuestionQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` AttemptID int64 `json:"attempt_id" validate:"required"` QuestionID int64 `json:"question_id" validate:"required"` } GetQuestionQuizResponse struct { Question struct { ID int64 `json:"id"` QuizID int64 `json:"quiz_id"` Content string `json:"content"` } `json:"question"` AnswerOptions []struct { ID int64 `json:"id"` Content string `json:"content"` } `json:"answer_options"` AnswerID *int64 `json:"answer_id"` IsDoubt bool `json:"is_doubt"` IsAnswered bool `json:"is_answered"` } // ANSWER QUESTION AnswerQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` AttemptID int64 `json:"attempt_id" validate:"required"` QuestionID int64 `json:"question_id" validate:"required"` AnswerID *int64 `json:"answer_id"` IsDoubt bool `json:"is_doubt"` } // SUBMIT QUIZ SubmitQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` AttemptID int64 `json:"attempt_id" validate:"required"` } SubmitQuizResponse struct { QuizAttempt RemainingAttempts int64 `json:"remaining_attempts" validate:"required"` } // RESULT QUIZ ResultQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` } ResultQuizResponse struct { QuizAttempt RemainingAttempts int64 `json:"remaining_attempts" validate:"required"` } // REVIEW QUIZ ReviewQuizRequest struct { AccountID int64 `json:"account_id" validate:"required"` AcademyID int64 `json:"academy_id" validate:"required"` } ReviewQuizQuestion struct { ID int64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"` QuizID int64 `gorm:"column:quiz_id;not null" json:"quiz_id"` Content string `gorm:"column:content" json:"content"` Review string `gorm:"column:review" json:"review"` } ReviewQuiz struct { Question ReviewQuizQuestion `json:"question"` AnswerOptions []struct { ID int64 `json:"id"` Content string `json:"content"` IsCorrect bool `json:"is_correct"` } `json:"answer_options"` AnswerID *int64 `json:"answer_id"` } ReviewQuizResponse struct { Reviews []ReviewQuiz } ) type ( MultipleOptionsRequest struct { OptionName string `json:"option_name" validate:"required"` OptionValue []string `json:"option_values" validate:"required"` } CreateOptionsRequest struct { Options []MultipleOptionsRequest `json:"options" validate:"required"` } CreateOptionsResponse struct { Options []Options `json:"options"` } ListOptionsResponse struct { Options []Options `json:"options"` } ListOptionsBySlugRequest struct { Slug string `json:"slug"` } ListOptionsBySlugResponse struct { OptionCategory *OptionCategory `json:"option_category"` OptionValues []OptionValues `json:"option_values"` } ) type ExternalAuthRequest struct { OauthID string `json:"oauth_id" binding:"required"` OauthProvider string `json:"oauth_provider" binding:"required"` IsAgreeTerms bool `json:"is_agree_terms"` IsSexualDisease bool `json:"is_sexual_disease"` } type ForgotPasswordRequest struct { Email string `json:"email" binding:"required,email"` } type ValidateForgotPasswordRequest struct { Token uint `json:"token" binding:"required"` NewPassword string `json:"new_password"` } type QuestionQuizRequest struct { QuestionNo int `json:"question_no" binding:"required"` } type ( ListCitiesByProvinceIdRequest struct { ProvinceID int64 `json:"province_id" binding:"required"` } ) type ( CreateEmailVerificationRequest struct { AccountID int64 `json:"-"` } ValidateEmailVerificationRequest struct { AccountID int64 `json:"-"` Token int64 `json:"token" validate:"required"` } ) type ( SavePersonalityAndPreferenceRequest struct { AccountID int64 `json:"-"` PositiveTraits *string `json:"positive_traits"` // sifat positif NegativeTraits *string `json:"negative_traits"` // sifat negatif Hobbies *string `json:"hobbies"` // hobi LifeGoals *string `json:"life_goals"` // target hidup DailyActivities *string `json:"daily_activities"` // kegiatan sehari-hari LeisureActivities *string `json:"leisure_activities"` // kegiatan waktu luang Likes *string `json:"likes"` // hal yang disukai Dislikes *string `json:"dislikes"` // hal yang tidak disukai StressHandling *string `json:"stress_handling"` // cara mengatasi stres AngerTriggers *string `json:"anger_triggers"` // pemicu amarah FavoriteFoodAndDrinks *string `json:"favorite_food_and_drinks"` // makanan dan minuman favorit CanCook *bool `json:"can_cook"` // bisa memasak TypesOfDishesCooked *string `json:"types_of_dishes_cooked"` // jenis masakan yang bisa dimasak MonthlyExpenses *string `json:"monthly_expenses" validate:"monthly-expenses"` // pengeluaran per bulan } GetPersonalityAndPreferenceRequest struct { AccountID int64 `json:"-"` } CreateFamilyMemberRequest struct { AccountID int64 `json:"-"` Role *string `json:"role" validate:"family-role"` // Peran dalam keluarga Status *string `json:"status" validate:"life-status"` // Status (Hidup, Wafat) Religion *string `json:"religion" validate:"religion"` // Agama Job *string `json:"job"` // Pekerjaan LastEducation *string `json:"last_education" validate:"last-education"` // Pendidikan terakhir Age *int `json:"age"` // Usia } UpdateFamilyMemberRequest struct { ID int64 `json:"-"` AccountID int64 `json:"-"` Role *string `json:"role" validate:"family-role"` // Peran dalam keluarga Status *string `json:"status" validate:"life-status"` // Status (Hidup, Wafat) Religion *string `json:"religion" validate:"religion"` // Agama Job *string `json:"job"` // Pekerjaan LastEducation *string `json:"last_education" validate:"last-education"` // Pendidikan terakhir Age *int `json:"age"` // Usia } ListFamilyMemberRequest struct { AccountID int64 `json:"-"` } GetFamilyMemberRequest struct { ID int64 `json:"-"` } DeleteFamilyMemberRequest struct { ID int64 `json:"-"` } SavePhysicalAndHealthRequest struct { AccountID int64 `json:"-"` HeightInCm *int `json:"height_cm"` // Tinggi badan dalam satuan sentimeter WeightInKg *int `json:"weight_kg"` // Berat badan dalam satuan kilogram BodyShape *string `json:"body_shape" validate:"body-shape"` // Bentuk tubuh SkinColor *string `json:"skin_color" validate:"skin-color"` // Warna kulit HairType *string `json:"hair_type" validate:"hair-type"` // Tipe rambut MedicalHistory *pq.StringArray `json:"medical_history"` // Riwayat penyakit PhysicalDisorder *string `json:"physical_disorder"` // Cacat fisik PhysicalTraits *string `json:"physical_traits"` // Ciri khas fisik } GetPhysicalAndHealthRequest struct { AccountID int64 `json:"-"` } SaveAccountDetailsRequest struct { AccountID int64 `json:"-"` FullName *string `json:"full_name"` Gender *string `json:"gender" validate:"gender"` DateOfBirth *time.Time `json:"date_of_birth"` PlaceOfBirth *string `json:"place_of_birth"` Domicile *string `json:"domicile"` MaritalStatus *string `json:"marital_status" validate:"marital-status"` LastEducation *string `json:"last_education" validate:"last-education"` LastJob *string `json:"last_job"` PhoneNumber *string `json:"phone_number" validate:"phone-number"` } GetAccountDetailsRequest struct { AccountID int64 `json:"account_id"` } SaveWorshipAndReligiousUnderstandingRequest struct { AccountID int64 `json:"-"` ObligatoryPrayer *string `json:"obligatory_prayer"` // sholat_wajib_5_waktu CongregationalPrayer *string `json:"congregational_prayer"` // sholat_berjamaah_di_masjid TahajjudPrayer *string `json:"tahajjud_prayer"` // sholat_tahajud DhuhaPrayer *string `json:"dhuha_prayer"` // sholat_dhuha QuranMemorization *string `json:"quran_memorization"` // hafalan_alquran QuranReadingAbility *string `json:"quran_reading_ability" validate:"quran-reading-ability"` // kemampuan_baca_alquran WeeklyReligiousStudyFrequency *string `json:"weekly_religious_study_frequency" validate:"weekly-religious-study-frequency"` // kajian_yang_diikuti_dalam_sepekan DaudFasting *string `json:"daud_fasting"` // puasa_daud AyyamulBidhFasting *string `json:"ayyamul_bidh_fasting"` // puasa_ayyamul_bidh HajjOrUmrah *pq.StringArray `json:"hajj_or_umrah"` // ibadah_haji_umroh ListeningToMusic *bool `json:"listening_to_music"` // mendengarkan_musik OpinionOnIkhtilat *string `json:"opinion_on_ikhtilat"` // pendapat_ikhtilat OpinionOnTouchingNonMahram *string `json:"opinion_on_touching_non_mahram"` // pendapat_menyentuh_non_mahram OpinionOnVeil *string `json:"opinion_on_veil"` // pendapat_tentang_cadar OpinionOnBeard *string `json:"opinion_on_beard"` // pendapat_tentang_jenggot_pada_laki_laki OpinionOnPantsAboveAnkle *string `json:"opinion_on_pants_above_ankle"` // pendapat_tentang_celana_di_atas_mata_kaki WeeklyReligiousStudies *string `json:"weekly_religious_studies"` // kajian_yang_diikuti_dalam_sepekan FollowedUstadz *string `json:"followed_ustadz"` // ustadz_yang_diikuti } GetWorshipAndReligiousUnderstandingRequest struct { AccountID int64 `json:"-"` } CreateEducationRequest struct { AccountID int64 `json:"-"` LastEducation *string `json:"last_education" validate:"last-education"` // pendidikan terakhir EducationInstitute *string `json:"education_institute"` // institusi pendidikan EducationMajor *string `json:"education_major"` // jurusan pendidikan YearStart *int `json:"year_start"` // tahun masuk YearGraduate *int `json:"year_graduate"` // tahun lulus } UpdateEducationRequest struct { ID int64 `json:"-"` AccountID int64 `json:"-"` LastEducation *string `json:"last_education" validate:"last-education"` // pendidikan terakhir EducationInstitute *string `json:"education_institute"` // institusi pendidikan EducationMajor *string `json:"education_major"` // jurusan pendidikan YearStart *int `json:"year_start"` // tahun masuk YearGraduate *int `json:"year_graduate"` // tahun lulus } ListEducationRequest struct { AccountID int64 `json:"-"` } GetEducationRequest struct { ID int64 `json:"-"` } DeleteEducationRequest struct { ID int64 `json:"-"` } CreateJobRequest struct { AccountID int64 `json:"account_id"` InstitutionName *string `json:"institution_name"` // nama instansi CurrentJob *string `json:"current_job"` // pekerjaan saat ini YearStartedWorking *int `json:"year_started_working"` // tahun mulai bekerja MonthlyIncome *string `json:"monthly_income" validate:"monthly-income"` // penghasilan per bulan IncomeSources *pq.StringArray `json:"income_sources"` // sumber penghasilan } UpdateJobRequest struct { ID int64 `json:"-"` AccountID int64 `json:"-"` InstitutionName *string `json:"institution_name"` // nama instansi CurrentJob *string `json:"current_job"` // pekerjaan saat ini YearStartedWorking *int `json:"year_started_working"` // tahun mulai bekerja MonthlyIncome *string `json:"monthly_income" validate:"monthly-income"` // penghasilan per bulan IncomeSources *pq.StringArray `json:"income_sources"` // sumber penghasilan } ListJobRequest struct { AccountID int64 `json:"-"` } GetJobRequest struct { ID int64 `json:"-"` } DeleteJobRequest struct { ID int64 `json:"-"` } CreateAchievementRequest struct { AccountID int64 `json:"account_id"` AchievementOrAward *string `json:"achievement_or_award"` // prestasi atau penghargaan } UpdateAchievementRequest struct { ID int64 `json:"-"` AccountID int64 `json:"-"` AchievementOrAward *string `json:"achievement_or_award"` // prestasi atau penghargaan } ListAchievementRequest struct { AccountID int64 `json:"-"` } GetAchievementRequest struct { ID int64 `json:"-"` } DeleteAchievementRequest struct { ID int64 `json:"-"` } UploadProfileImageRequest struct { AccountID int64 File *multipart.FileHeader } UploadProfileImageResponse struct { URL string `json:"url"` } GetProgressCVRequest struct { AccountID int64 `json:"-"` } GetProgressCVResponse struct { AccountDetailsProgress float64 `json:"account_details_progress"` PersonalityAndPreferenceCVProgress float64 `json:"personality_and_preference_cv_progress"` FamilyMemberCVProgress float64 `json:"family_member_cv_progress"` PhysicalAndHealthCVProgress float64 `json:"physical_and_health_cv_progress"` WorshipCVProgress float64 `json:"worship_cv_progress"` ReligiousUnderstandingCVProgress float64 `json:"religious_understanding_cv_progress"` EducationCVProgress float64 `json:"education_cv_progress"` JobCVProgress float64 `json:"job_cv_progress"` AchievementCVProgress float64 `json:"achievement_cv_progress"` TotalProgress float64 `json:"total_progress"` } ) type ( SaveMarriageReadinessProfileRequest struct { AccountID int64 `json:"account_id"` // Visi Misi Rumah Tangga MarriageVision *string `gorm:"column:marriage_vision" json:"marriage_vision"` // Apa visi dan tujuan utama kamu dalam membangun rumah tangga? LivingPlan *string `gorm:"column:living_plan" json:"living_plan"` // Setelah menikah, kamu berencana tinggal di mana? SpouseRoles *string `gorm:"column:spouse_roles" json:"spouse_roles"` // Menurutmu, apa peran utama suami dan istri dalam rumah tangga? SpouseRights *string `gorm:"column:spouse_rights" json:"spouse_rights"` // Apa saja hak suami dan istri menurutmu? ConflictResolution *string `gorm:"column:conflict_resolution" json:"conflict_resolution"` // Jika terjadi konflik, bagaimana kamu menyikapinya? ParentingStyle *string `gorm:"column:parenting_style" json:"parenting_style"` // Setelah punya anak, pola pengasuhan seperti apa yang kamu inginkan? // Konsep Acara Pernikahan ReadyToMarryDuration *string `gorm:"column:ready_to_marry_duration" json:"ready_to_marry_duration"` // Setelah taaruf dimulai, berapa lama kamu butuh untuk siap menikah? WeddingConcept *string `gorm:"column:wedding_concept" json:"wedding_concept"` // Seperti apa konsep pernikahan yang kamu harapkan? WeddingFunding *string `gorm:"column:wedding_funding" json:"wedding_funding"` // Apakah kamu sudah mempersiapkan dana pernikahan? Dari mana sumbernya? // Karir Kedepannya CareerAfterMarriage *string `gorm:"column:career_after_marriage" json:"career_after_marriage"` // Apakah kamu ingin tetap bekerja setelah menikah? TimeManagement *string `gorm:"column:time_management" json:"time_management"` // Bagaimana kamu membagi waktu antara keluarga, ibadah, dan pekerjaan? CareerGoals *string `gorm:"column:career_goals" json:"career_goals"` // Apa impian karier atau cita-cita kamu dalam 5 sampai 10 tahun ke depan? SelfDevelopment *string `gorm:"column:self_development" json:"self_development"` // Apa usaha kamu untuk terus mengembangkan diri dan skill? // Pendidikan Keluarga DelayChildren *string `gorm:"column:delay_children" json:"delay_children"` // Apakah kamu berencana menunda memiliki anak? ChildEducationPlan *string `gorm:"column:child_education_plan" json:"child_education_plan"` // Apakah kamu sudah punya rencana pendidikan anak? ReligiousEmotionalBond *string `gorm:"column:religious_emotional_bond" json:"religious_emotional_bond"` // Bagaimana cara menjaga nilai agama & kedekatan emosional dengan anak? ParentingChallenges *string `gorm:"column:parenting_challenges" json:"parenting_challenges"` // Saat menghadapi tantangan pengasuhan, bagaimana kamu menyikapinya? // Finansial Keluarga MonthlyFinance *string `gorm:"column:monthly_finance" json:"monthly_finance"` // Bagaimana kamu mengelola keuangan bulanan? FamilyResponsibility *string `gorm:"column:family_responsibility" json:"family_responsibility"` // Apakah kamu masih punya tanggungan keluarga setelah menikah? DebtStatus *string `gorm:"column:debt_status" json:"debt_status"` // Apakah kamu punya cicilan/utang setelah menikah? FinanceSharing *string `gorm:"column:finance_sharing" json:"finance_sharing"` // Setelah menikah, bagaimana pembagian tanggung jawab keuangan? IncomeGapView *string `gorm:"column:income_gap_view" json:"income_gap_view"` // Pandangan kamu jika istri berpenghasilan lebih besar dari suami? // Keputusan dan Komunikasi DecisionMaking *string `gorm:"column:decision_making" json:"decision_making"` // Dalam mengambil keputusan, kamu lebih mempertimbangkan pasangan atau sendiri? GrowthTogether *string `gorm:"column:growth_together" json:"growth_together"` // Apakah kamu siap berjuang bersama pasangan? Apa saja yang ingin diperjuangkan? ParentIntervention *string `gorm:"column:parent_intervention" json:"parent_intervention"` // Sejauh mana orang tua/mertua boleh ikut campur dalam rumah tangga? HabitResponse *string `gorm:"column:habit_response" json:"habit_response"` // Bagaimana kamu menyikapi kebiasaan pasangan yang kurang kamu sukai? } GetMarriageReadinessProfileRequest struct { AccountID int64 `json:"-"` } ) type ( SavePartnerCriteriaRequest struct { AccountID int64 `json:"account_id"` ExpecteMinAgeLimit *int `gorm:"column:expected_min_age_limit" json:"expected_min_age_limit"` // batas usia pasangan yang diharapkan ExpecteMaxAgeLimit *int `gorm:"column:expected_max_age_limit" json:"expected_max_age_limit"` // batas usia pasangan yang diharapkan ExpectedDomicile *string `gorm:"column:expected_domicile" json:"expected_domicile"` // domisili pasangan yang diharapkan AcceptedMaritalStatus *pq.StringArray `gorm:"column:accepted_marital_status;type:varchar(255)[]" json:"accepted_marital_status"` // status pernikahan yang diterima PartnerFamilyReligion *string `gorm:"column:partner_family_religion" json:"partner_family_religion"` // agama yang dianut keluarga pasangan PartnerWeeklyReligiousStudyFrequency *string `gorm:"column:partner_weekly_religious_study_frequency" json:"partner_weekly_religious_study_frequency"` // rata-rata jumlah kajian yang diikuti pasangan per pekan PartnerMonthlySpendingEstimate *string `gorm:"column:partner_monthly_spending_estimate" json:"partner_monthly_spending_estimate"` // estimasi pengeluaran pasangan per bulan PartnerCanCook *string `gorm:"column:partner_can_cook" json:"partner_can_cook"` // apakah pasangan diharapkan bisa memasak // Kriteria Fisik ExpectedBodyShapes *pq.StringArray `gorm:"column:expected_body_shapes;type:varchar(255)[]" json:"expected_body_shapes"` // bentuk tubuh yang diharapkan ExpectedSkinColors *pq.StringArray `gorm:"column:expected_skin_colors;type:varchar(255)[]" json:"expected_skin_colors"` // warna kulit yang diharapkan ExpectedHairTypes *pq.StringArray `gorm:"column:expected_hair_types;type:varchar(255)[]" json:"expected_hair_types"` // tipe rambut yang diharapkan ExpectedHairThickness *pq.StringArray `gorm:"column:expected_hair_thickness;type:varchar(255)[]" json:"expected_hair_thickness"` // jenis rambut yang diharapkan ExpectedMinHeightLimit *int `gorm:"column:expected_min_height_limit" json:"expected_min_height_limit"` // tinggi badan yang diharapkan ExpectedMaxHeightLimit *int `gorm:"column:expected_max_height_limit" json:"expected_max_height_limit"` // tinggi badan yang diharapkan // Pendidikan & Pekerjaan ExpectedPartnerIncome *string `gorm:"column:expected_partner_income" json:"expected_partner_income"` // penghasilan pasangan per bulan yang diharapkan ExpectedLastEducation *pq.StringArray `gorm:"column:expected_last_education;type:varchar(255)[]" json:"expected_last_education"` // pendidikan terakhir yang diharapkan // NOT USED // ExpectedIncomeSources *pq.StringArray `gorm:"column:expected_income_sources;type:varchar(255)[]" json:"expected_income_sources"` // sumber penghasilan pasangan // ExpectedJobType *string `gorm:"column:expected_job_type" json:"expected_job_type"` // jenis pekerjaan pasangan yang diharapkan } GetPartnerCriteriaRequest struct { AccountID int64 `json:"-"` } )