package model

import (
	"time"

	"github.com/google/uuid"
	"gorm.io/gorm"
)

// Tool 工具
type Tool struct {
	ID              string    `json:"id" gorm:"primaryKey"`
	Name            string    `json:"name" gorm:"uniqueIndex;size:100;not null"`
	Description     string    `json:"description" gorm:"type:text"`      // 英文描述
	DescriptionCN   string    `json:"description_cn" gorm:"type:text"`   // 中文描述
	Category        string    `json:"category" gorm:"size:50;not null"`
	Provider        string    `json:"provider" gorm:"size:100"`
	SecurityLevel   string    `json:"security_level" gorm:"size:20;default:'safe'"`
	RequireApproval bool      `json:"require_approval" gorm:"default:false"`
	Parameters      string    `json:"parameters" gorm:"type:text"` // JSON格式存储
	// MCP 特有字段
	Transport string `json:"transport" gorm:"size:20;default:'stdio'"` // stdio, http, sse
	Command   string `json:"command" gorm:"size:500"`                  // 启动命令
	Args      string `json:"args" gorm:"type:text"`                   // 参数，JSON数组格式
	Env       string `json:"env" gorm:"type:text"`                   // 环境变量，JSON对象格式
	// 状态
	Status    string    `json:"status" gorm:"size:20;default:'active'"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

// BeforeCreate 创建前自动生成ID
func (t *Tool) BeforeCreate(tx *gorm.DB) error {
	if t.ID == "" {
		t.ID = uuid.New().String()
	}
	return nil
}
