package entity

import "time"

type Country struct {
	ID        int64     `json:"id" db:"id"`
	Name      string    `json:"name" db:"name"`
	ISO2      string    `json:"iso2" db:"iso2"`
	ISO3      string    `json:"iso3" db:"iso3"`
	PhoneCode string    `json:"phone_code" db:"phonecode"`
	Currency  string    `json:"currency" db:"currency"`
	Emoji     string    `json:"emoji" db:"emoji"`
	EmojiU    string    `json:"emojiU" db:"emoji_u"`
	CreatedAt time.Time `json:"created_at" db:"created_at"`
	UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
}

type State struct {
	ID          int64   `json:"id" db:"id"`
	Name        string  `json:"name" db:"name"`
	CountryID   int64   `json:"country_id" db:"country_id"`
	CountryCode string  `json:"country_code" db:"country_code"`
	ISO2        string  `json:"iso2" db:"iso2"`
	Type        string  `json:"type" db:"type"` // State, Province, etc.
	Latitude    float64 `json:"latitude" db:"latitude"`
	Longitude   float64 `json:"longitude" db:"longitude"`
}

type City struct {
	ID        int64   `json:"id" db:"id"`
	Name      string  `json:"name" db:"name"`
	StateID   int64   `json:"state_id" db:"state_id"`
	CountryID int64   `json:"country_id" db:"country_id"`
	Latitude  float64 `json:"latitude" db:"latitude"`
	Longitude float64 `json:"longitude" db:"longitude"`
}

type LocationSearchResult struct {
	ID         int64  `json:"id"`
	Name       string `json:"name"`
	Type       string `json:"type"` // "state" or "city"
	CountryID  int64  `json:"country_id"`
	StateID    *int64 `json:"state_id,omitempty"`
	RegionName string `json:"region_name,omitempty"` // e.g. State name if city
}
