package models

import (
	"time"

	"gorm.io/gorm"
)

// UserAccessLog 用户访问日志模型
type UserAccessLog struct {
	ID           uint   `json:"id" gorm:"primaryKey;column:id"`
	UserID       uint   `json:"user_id" gorm:"column:user_id;index"`           // 用户ID（未登录用户为0）
	UserIP       string `json:"user_ip" gorm:"column:user_ip;index"`           // 用户IP地址
	UserLocation string `json:"user_location" gorm:"column:user_location"`     // 用户归属地
	ArticleID    uint   `json:"article_id" gorm:"column:article_id;index"`     // 访问的文章ID
	VisitorKey   string `json:"visitor_key" gorm:"column:visitor_key;size:64"` // 匿名访客标识
	AccessTime   int64  `json:"access_time" gorm:"column:access_time"`         // 访问时间
	DeletedAt    int64  `json:"deleted_at" gorm:"column:deleted_at;default:0"`
}

// TableName 指定表名
func (UserAccessLog) TableName() string {
	return "user_access_logs"
}

// BeforeCreate 创建前钩子
func (u *UserAccessLog) BeforeCreate(tx *gorm.DB) error {
	if u.AccessTime == 0 {
		u.AccessTime = time.Now().Unix()
	}
	if u.DeletedAt == 0 {
		u.DeletedAt = 0
	}
	return nil
}
