package dto // DiscoverCandidate یک پروفایل پیشنهادی توی صفحه‌ی دوستیابی type DiscoverCandidate struct { ID uint `json:"id"` FirstName string `json:"first_name"` Age int `json:"age"` Bio string `json:"bio,omitempty"` Photos []string `json:"photos"` DistanceKM *float64 `json:"distance_km,omitempty"` Interests []string `json:"interests,omitempty"` } // SwipeRequest بدنه‌ی درخواست ثبت لایک/ردّ type SwipeRequest struct { Action string `json:"action" binding:"required,oneof=like pass superlike"` } // SwipeResponse نتیجه‌ی یک سواپ؛ اگه Matched=true باشه یعنی مچ تازه (یا از قبل) ساخته شده type SwipeResponse struct { Matched bool `json:"matched"` Match *MatchView `json:"match,omitempty"` } // MatchView خلاصه‌ی یک مچ برای نمایش در لیست مچ‌ها/گفتگوها type MatchView struct { ID uint `json:"id"` UserID uint `json:"user_id"` FirstName string `json:"first_name"` Photos []string `json:"photos"` CreatedAt string `json:"created_at"` LastMessage *string `json:"last_message,omitempty"` LastAt *string `json:"last_at,omitempty"` } // MessageView یک پیام در یک گفتگو type MessageView struct { ID uint `json:"id"` MatchID uint `json:"match_id"` SenderID uint `json:"sender_id"` Text string `json:"text"` CreatedAt string `json:"created_at"` IsMine bool `json:"is_mine"` } // SendMessageRequest بدنه‌ی درخواست ارسال پیام type SendMessageRequest struct { Text string `json:"text" binding:"required,min=1,max=2000"` } // CandidateAnswer پاسخ یک سوال پروفایل، برای نمایش عمومی type CandidateAnswer struct { Question string `json:"question"` Answer string `json:"answer"` } // CandidateDetail پروفایل کامل یک کاربر دیگه (برای نمایش صفحه‌ی جزئیات پروفایل) type CandidateDetail struct { ID uint `json:"id"` FirstName string `json:"first_name"` Age int `json:"age"` Bio string `json:"bio,omitempty"` Photos []string `json:"photos"` DistanceKM *float64 `json:"distance_km,omitempty"` HeightCM *int `json:"height_cm,omitempty"` WeightKG *int `json:"weight_kg,omitempty"` Education string `json:"education,omitempty"` FieldOfStudy string `json:"field_of_study,omitempty"` Occupations []string `json:"occupations,omitempty"` Interests []string `json:"interests,omitempty"` ImportantInRelationship []string `json:"important_in_relationship,omitempty"` LookingFor string `json:"looking_for,omitempty"` Answers []CandidateAnswer `json:"profile_answers,omitempty"` }