package model

import (
	"time"

	"gorm.io/gorm"
)

type LicenseCode struct {
	gorm.Model
	Code        string    `gorm:"uniqueIndex" json:"code"`       // 授权码
	LicenseType string    `gorm:"size:20" json:"license_type"`   // 授权类型：time/count/permanent
	Duration    int       `json:"duration"`                      // 授权时长(分钟)，仅当类型为time时有效
	MaxUses     int       `json:"max_uses"`                      // 最大使用次数，仅当类型为count时有效
	UsedCount   int       `gorm:"default:0" json:"used_count"`   // 已使用次数
	Status      string    `gorm:"size:20" json:"status"`         // 状态：unused/used/expired/revoked
	UsedBy      string    `gorm:"index" json:"used_by"`          // 使用此授权码的设备UID
	UsedAt      time.Time `json:"used_at"`                       // 使用时间
	CreatedBy   uint      `gorm:"index" json:"created_by"`       // 创建者ID
	BatchNo     string    `gorm:"size:50;index" json:"batch_no"` // 批次号
	Remark      string    `gorm:"size:500" json:"remark"`        // 备注
	BindCount   int       `gorm:"default:-1" json:"bind_count"`  // 可绑定次数，-1表示无限制，0表示不能绑定
}

type LicenseLog struct {
	gorm.Model
	LicenseID uint   `gorm:"index" json:"license_id"` // 关联的授权码ID
	DeviceUID string `gorm:"index" json:"device_uid"` // 设备UID
	Action    string `gorm:"size:20" json:"action"`   // 操作类型：create/use/verify
	IP        string `gorm:"size:50" json:"ip"`       // 操作IP
	Status    string `gorm:"size:20" json:"status"`   // 状态：success/failed
	Message   string `gorm:"size:500" json:"message"` // 详细信息
}
