api-qobiltu-dev / models /request_model.go
lifedebugger's picture
Deploy files from GitHub repository
5a84566
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:"-"`
}
)