package config

import (
	"time"
)

// Provider 供应商模型
type Provider struct {
	ID        string    `gorm:"primaryKey" json:"id"`
	Name      string    `gorm:"not null" json:"name"`
	APIKey    string    `gorm:"not null" json:"api_key"`
	BaseURL   string    `gorm:"not null" json:"base_url"`
	Protocol  string    `gorm:"column:protocol;default:'openai'" json:"protocol"`
	Enabled   bool      `gorm:"default:true" json:"enabled"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	Models    []Model   `gorm:"foreignKey:ProviderID;constraint:OnDelete:CASCADE" json:"models,omitempty"`
}

// Model 模型配置（id 为 UUID 自动生成，UNIQUE(provider_id, model_name)）
type Model struct {
	ID         string    `gorm:"primaryKey" json:"id"`
	ProviderID string    `gorm:"not null;index;uniqueIndex:idx_provider_model" json:"provider_id"`
	ModelName  string    `gorm:"not null;index;uniqueIndex:idx_provider_model" json:"model_name"`
	Enabled    bool      `gorm:"default:true" json:"enabled"`
	CreatedAt  time.Time `json:"created_at"`
}

// UsageStats 用量统计
type UsageStats struct {
	ID           uint      `gorm:"primaryKey;autoIncrement" json:"id"`
	ProviderID   string    `gorm:"not null;index;uniqueIndex:idx_provider_model_date" json:"provider_id"`
	ModelName    string    `gorm:"not null;index;uniqueIndex:idx_provider_model_date" json:"model_name"`
	RequestCount int       `gorm:"default:0" json:"request_count"`
	Date         time.Time `gorm:"type:date;not null;uniqueIndex:idx_provider_model_date" json:"date"`
}

// TableName 指定表名
func (Provider) TableName() string {
	return "providers"
}

func (Model) TableName() string {
	return "models"
}

func (UsageStats) TableName() string {
	return "usage_stats"
}
