package model

import (
	"time"

	"gorm.io/gorm"
)

type ApiKey struct {
	ID        int64          `gorm:"primaryKey" json:"id"`
	UserID    int64          `gorm:"index;not null" json:"user_id"`
	Key       string         `gorm:"uniqueIndex;size:128;not null" json:"key"` // sk-xxx
	Name      string         `gorm:"size:100;not null" json:"name"`
	GroupID   *int64         `gorm:"index" json:"group_id"`
	Status    string         `gorm:"size:20;default:active;not null" json:"status"` // active/disabled
	CreatedAt time.Time      `gorm:"not null" json:"created_at"`
	UpdatedAt time.Time      `gorm:"not null" json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`

	// 关联
	User  *User  `gorm:"foreignKey:UserID" json:"user,omitempty"`
	Group *Group `gorm:"foreignKey:GroupID" json:"group,omitempty"`
}

func (ApiKey) TableName() string {
	return "api_keys"
}

// IsActive 检查是否激活
func (k *ApiKey) IsActive() bool {
	return k.Status == "active"
}
