package models

import "time"

type UserSession struct {
	ID uint `gorm:"primaryKey;autoIncrement" json:"id"`

	UserID uint `gorm:"column:user_id;not null;index" json:"user_id"`

	DeviceType string `gorm:"column:device_type;size:50" json:"device_type"`
	DeviceID   string `gorm:"column:device_id;size:255" json:"device_id"`
	DeviceName string `gorm:"column:device_name;size:255" json:"device_name"`

	FCMToken string `gorm:"column:fcm_token;size:255" json:"fcm_token"`

	IPAddress string `gorm:"column:ip_address;size:100" json:"ip_address"`

	LoginAt  *time.Time `gorm:"column:login_at" json:"login_at,omitempty"`
	LogoutAt *time.Time `gorm:"column:logout_at" json:"logout_at,omitempty"`

	IsActive bool `gorm:"column:is_active;default:true" json:"is_active"`

	CreatedAt *time.Time `gorm:"column:created_at" json:"created_at,omitempty"`
	UpdatedAt *time.Time `gorm:"column:updated_at" json:"updated_at,omitempty"`

	// Relation
	User User `gorm:"foreignKey:UserID;references:ID" json:"user,omitempty"`
}

func (UserSession) TableName() string {
	return "user_sessions"
}