package models

import "time"

type KundaliMatching struct {
	ID             uint      `gorm:"primaryKey;autoIncrement" json:"id"`
	BoyName        string    `gorm:"column:boyName;type:varchar(255);not null" json:"boyName"`
	BoyBirthDate   time.Time `gorm:"column:boyBirthDate;type:datetime;not null" json:"boyBirthDate"`
	BoyBirthTime   string    `gorm:"column:boyBirthTime;type:varchar(255);not null" json:"boyBirthTime"`
	BoyBirthPlace  string    `gorm:"column:boyBirthPlace;type:varchar(255);not null" json:"boyBirthPlace"`
	BoyLatitude    *float64  `gorm:"column:boyLatitude;type:double" json:"boyLatitude"`
	BoyLongitude   *float64  `gorm:"column:boyLongitude;type:double" json:"boyLongitude"`
	BoyTimezone    *string   `gorm:"column:boyTimezone;type:varchar(45)" json:"boyTimezone"`
	GirlName       string    `gorm:"column:girlName;type:varchar(255);not null" json:"girlName"`
	GirlBirthDate  time.Time `gorm:"column:girlBirthDate;type:datetime;not null" json:"girlBirthDate"`
	GirlBirthTime  string    `gorm:"column:girlBirthTime;type:varchar(255);not null" json:"girlBirthTime"`
	GirlBirthPlace string    `gorm:"column:girlBirthPlace;type:varchar(255);not null" json:"girlBirthPlace"`
	GirlLatitude   *float64  `gorm:"column:girlLatitude;type:double" json:"girlLatitude"`
	GirlLongitude  *float64  `gorm:"column:girlLongitude;type:double" json:"girlLongitude"`
	GirlTimezone   *string   `gorm:"column:girlTimezone;type:varchar(45)" json:"girlTimezone"`
	MatchType      string    `gorm:"column:match_type;type:varchar(45);not null;default:north" json:"match_type"`
	Lang           string    `gorm:"column:lang;type:varchar(10);not null;default:en" json:"lang"`
	AshtakootScore *string   `gorm:"column:ashtakoot_score;type:varchar(20)" json:"ashtakoot_score"`
	DashakootScore *string   `gorm:"column:dashakoot_score;type:varchar(20)" json:"dashakoot_score"`
	Conclusion     *string   `gorm:"column:conclusion;type:text" json:"conclusion"`
	// ResultJSON holds the aggregate-match payload so a paid match can be
	// re-opened without charging the user or calling Vedic again.
	ResultJSON *string    `gorm:"column:result_json;type:longtext" json:"result_json,omitempty"`
	PDFLink    *string    `gorm:"column:pdf_link;type:text" json:"pdf_link"`
	IsActive   bool       `gorm:"column:isActive;default:true" json:"isActive"`
	IsDelete   bool       `gorm:"column:isDelete;default:false" json:"isDelete"`
	CreatedAt  *time.Time `gorm:"column:created_at" json:"created_at,omitempty"`
	UpdatedAt  *time.Time `gorm:"column:updated_at" json:"updated_at,omitempty"`
	// CreatedBy is the owning user id, matching the kundalis convention.
	CreatedBy  int `gorm:"column:createdBy;not null" json:"createdBy"`
	ModifiedBy int `gorm:"column:modifiedBy;not null" json:"modifiedBy"`
}

func (KundaliMatching) TableName() string {
	return "kundali_matchings"
}
