package model import ( "time" "gorm.io/gorm" ) // ProviderGroup represents a shared upstream definition. type ProviderGroup struct { gorm.Model Name string `gorm:"size:255;uniqueIndex;not null" json:"name"` Type string `gorm:"size:50;not null" json:"type"` // openai, anthropic, gemini BaseURL string `gorm:"size:512;not null" json:"base_url"` GoogleProject string `gorm:"size:128" json:"google_project,omitempty"` GoogleLocation string `gorm:"size:64" json:"google_location,omitempty"` Models string `json:"models"` // comma-separated list of supported models Status string `gorm:"size:50;default:'active'" json:"status"` } // APIKey represents a credential within a provider group. type APIKey struct { gorm.Model GroupID uint `gorm:"not null;index" json:"group_id"` APIKey string `gorm:"not null" json:"api_key"` Weight int `gorm:"default:1" json:"weight"` Status string `gorm:"size:50;default:'active'" json:"status"` AutoBan bool `gorm:"default:true" json:"auto_ban"` BanReason string `gorm:"size:255" json:"ban_reason"` BanUntil *time.Time `json:"ban_until"` }