package model

import (
	"time"

	"gorm.io/gorm"
)

type AccessToken struct {
	gorm.Model
	Token      string    `gorm:"uniqueIndex" json:"token"`     // 访问令牌
	DeviceUID  string    `gorm:"index" json:"device_uid"`      // 关联的设备UID
	Type       string    `gorm:"size:20" json:"type"`          // 令牌类型：api/device
	Status     string    `gorm:"size:20" json:"status"`        // 状态：active/revoked
	ExpireTime time.Time `json:"expire_time"`                  // 过期时间
	LastUsed   time.Time `json:"last_used"`                    // 最后使用时间
	UsageCount int       `gorm:"default:0" json:"usage_count"` // 使用次数
	IPList     string    `gorm:"type:text" json:"ip_list"`     // 允许的IP列表，逗号分隔
	CreatedBy  uint      `gorm:"index" json:"created_by"`      // 创建者ID
}

// TableName 指定表名
func (AccessToken) TableName() string {
	return "access_tokens"
}

type TokenLog struct {
	gorm.Model
	TokenID   uint   `gorm:"index" json:"token_id"`      // 关联的令牌ID
	Action    string `gorm:"size:20" json:"action"`      // 操作类型：create/use/revoke
	IP        string `gorm:"size:50" json:"ip"`          // 操作IP
	UserAgent string `gorm:"size:255" json:"user_agent"` // User-Agent
	Status    string `gorm:"size:20" json:"status"`      // 状态：success/failed
	Message   string `gorm:"size:500" json:"message"`    // 详细信息
}

// TableName 指定表名
func (TokenLog) TableName() string {
	return "token_logs"
}
