Documentation
¶
Overview ¶
Package tables contains the database tables for the configstore.
Index ¶
- Constants
- func ParseDuration(duration string) (time.Duration, error)
- type SessionsTable
- type TableBudget
- type TableClientConfig
- type TableConfigHash
- type TableCustomer
- type TableEnvKey
- type TableFrameworkConfig
- type TableGovernanceConfig
- type TableKey
- type TableLogStoreConfig
- type TableMCPClient
- type TableModel
- type TableModelPricing
- type TablePlugin
- type TableProvider
- type TableRateLimit
- type TableTeam
- type TableVectorStoreConfig
- type TableVirtualKey
- type TableVirtualKeyMCPConfig
- type TableVirtualKeyProviderConfig
Constants ¶
const ( ConfigAdminUsernameKey = "admin_username" ConfigAdminPasswordKey = "admin_password" ConfigIsAuthEnabledKey = "is_auth_enabled" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type SessionsTable ¶ added in v1.1.20
type SessionsTable struct {
ID int `gorm:"primaryKey;autoIncrement" json:"id"`
Token string `gorm:"type:varchar(255);not null;uniqueIndex" json:"token"`
ExpiresAt time.Time `gorm:"index;not null" json:"expires_at,omitempty"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
SessionsTable represents a session in the database
func (SessionsTable) TableName ¶ added in v1.1.20
func (SessionsTable) TableName() string
TableName sets the table name for each model
type TableBudget ¶
type TableBudget struct {
ID string `gorm:"primaryKey;type:varchar(255)" json:"id"`
MaxLimit float64 `gorm:"not null" json:"max_limit"` // Maximum budget in dollars
ResetDuration string `gorm:"type:varchar(50);not null" json:"reset_duration"` // e.g., "30s", "5m", "1h", "1d", "1w", "1M", "1Y"
LastReset time.Time `gorm:"index" json:"last_reset"` // Last time budget was reset
CurrentUsage float64 `gorm:"default:0" json:"current_usage"` // Current usage in dollars
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableBudget defines spending limits with configurable reset periods
func (*TableBudget) BeforeSave ¶
func (b *TableBudget) BeforeSave(tx *gorm.DB) error
BeforeSave hook for Budget to validate reset duration format and max limit
func (TableBudget) TableName ¶
func (TableBudget) TableName() string
TableName sets the table name for each model
type TableClientConfig ¶
type TableClientConfig struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
DropExcessRequests bool `gorm:"default:false" json:"drop_excess_requests"`
PrometheusLabelsJSON string `gorm:"type:text" json:"-"` // JSON serialized []string
AllowedOriginsJSON string `gorm:"type:text" json:"-"` // JSON serialized []string
InitialPoolSize int `gorm:"default:300" json:"initial_pool_size"`
EnableLogging bool `gorm:"" json:"enable_logging"`
EnableGovernance bool `gorm:"" json:"enable_governance"`
EnforceGovernanceHeader bool `gorm:"" json:"enforce_governance_header"`
AllowDirectKeys bool `gorm:"" json:"allow_direct_keys"`
MaxRequestBodySizeMB int `gorm:"default:100" json:"max_request_body_size_mb"`
// LiteLLM fallback flag
EnableLiteLLMFallbacks bool `gorm:"column:enable_litellm_fallbacks;default:false" json:"enable_litellm_fallbacks"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
// Virtual fields for runtime use (not stored in DB)
PrometheusLabels []string `gorm:"-" json:"prometheus_labels"`
AllowedOrigins []string `gorm:"-" json:"allowed_origins,omitempty"`
}
TableClientConfig represents global client configuration in the database
func (*TableClientConfig) AfterFind ¶
func (cc *TableClientConfig) AfterFind(tx *gorm.DB) error
AfterFind hooks for deserialization
func (*TableClientConfig) BeforeSave ¶
func (cc *TableClientConfig) BeforeSave(tx *gorm.DB) error
func (TableClientConfig) TableName ¶
func (TableClientConfig) TableName() string
TableName sets the table name for each model
type TableConfigHash ¶
type TableConfigHash struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Hash string `gorm:"type:varchar(255);uniqueIndex;not null" json:"hash"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableConfigHash represents the configuration hash in the database
func (TableConfigHash) TableName ¶
func (TableConfigHash) TableName() string
TableName sets the table name for each model
type TableCustomer ¶
type TableCustomer struct {
ID string `gorm:"primaryKey;type:varchar(255)" json:"id"`
Name string `gorm:"type:varchar(255);not null" json:"name"`
BudgetID *string `gorm:"type:varchar(255);index" json:"budget_id,omitempty"`
// Relationships
Budget *TableBudget `gorm:"foreignKey:BudgetID" json:"budget,omitempty"`
Teams []TableTeam `gorm:"foreignKey:CustomerID" json:"teams"`
VirtualKeys []TableVirtualKey `gorm:"foreignKey:CustomerID" json:"virtual_keys"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableCustomer represents a customer entity with budget
func (TableCustomer) TableName ¶
func (TableCustomer) TableName() string
TableName sets the table name for each model
type TableEnvKey ¶
type TableEnvKey struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
EnvVar string `gorm:"type:varchar(255);index;not null" json:"env_var"`
Provider string `gorm:"type:varchar(50);index" json:"provider"` // Empty for MCP/client configs
KeyType string `gorm:"type:varchar(50);not null" json:"key_type"` // "api_key", "azure_config", "vertex_config", "bedrock_config", "connection_string"
ConfigPath string `gorm:"type:varchar(500);not null" json:"config_path"` // Descriptive path of where this env var is used
KeyID string `gorm:"type:varchar(255);index" json:"key_id"` // Key UUID (empty for non-key configs)
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
}
TableEnvKey represents environment variable tracking in the database
func (TableEnvKey) TableName ¶
func (TableEnvKey) TableName() string
TableName sets the table name for each model
type TableFrameworkConfig ¶
type TableFrameworkConfig struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
PricingURL *string `gorm:"type:text" json:"pricing_url"`
PricingSyncInterval *int64 `gorm:"" json:"pricing_sync_interval"`
}
TableFrameworkConfig represents the framework configurations We will keep on adding different columns here as we add new features to the framework
func (TableFrameworkConfig) TableName ¶
func (TableFrameworkConfig) TableName() string
TableName sets the table name for each model
type TableGovernanceConfig ¶ added in v1.1.20
type TableGovernanceConfig struct {
Key string `gorm:"primaryKey;type:varchar(255)" json:"key"`
Value string `gorm:"type:text" json:"value"`
}
TableGovernanceConfig represents generic configuration key-value pairs
func (TableGovernanceConfig) TableName ¶ added in v1.1.20
func (TableGovernanceConfig) TableName() string
TableName sets the table name for each model
type TableKey ¶
type TableKey struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Name string `gorm:"type:varchar(255);uniqueIndex:idx_key_name;not null" json:"name"`
ProviderID uint `gorm:"index;not null" json:"provider_id"`
Provider string `gorm:"index;type:varchar(50)" json:"provider"` // ModelProvider as string
KeyID string `gorm:"type:varchar(255);uniqueIndex:idx_key_id;not null" json:"key_id"` // UUID from schemas.Key
Value string `gorm:"type:text;not null" json:"value"`
ModelsJSON string `gorm:"type:text" json:"-"` // JSON serialized []string
Weight float64 `gorm:"default:1.0" json:"weight"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
// Azure config fields (embedded instead of separate table for simplicity)
AzureEndpoint *string `gorm:"type:text" json:"azure_endpoint,omitempty"`
AzureAPIVersion *string `gorm:"type:varchar(50)" json:"azure_api_version,omitempty"`
AzureDeploymentsJSON *string `gorm:"type:text" json:"-"` // JSON serialized map[string]string
// Vertex config fields (embedded)
VertexProjectID *string `gorm:"type:varchar(255)" json:"vertex_project_id,omitempty"`
VertexRegion *string `gorm:"type:varchar(100)" json:"vertex_region,omitempty"`
VertexAuthCredentials *string `gorm:"type:text" json:"vertex_auth_credentials,omitempty"`
// Bedrock config fields (embedded)
BedrockAccessKey *string `gorm:"type:varchar(255)" json:"bedrock_access_key,omitempty"`
BedrockSecretKey *string `gorm:"type:text" json:"bedrock_secret_key,omitempty"`
BedrockSessionToken *string `gorm:"type:text" json:"bedrock_session_token,omitempty"`
BedrockRegion *string `gorm:"type:varchar(100)" json:"bedrock_region,omitempty"`
BedrockARN *string `gorm:"type:text" json:"bedrock_arn,omitempty"`
BedrockDeploymentsJSON *string `gorm:"type:text" json:"-"` // JSON serialized map[string]string
// Virtual fields for runtime use (not stored in DB)
Models []string `gorm:"-" json:"models"`
AzureKeyConfig *schemas.AzureKeyConfig `gorm:"-" json:"azure_key_config,omitempty"`
VertexKeyConfig *schemas.VertexKeyConfig `gorm:"-" json:"vertex_key_config,omitempty"`
BedrockKeyConfig *schemas.BedrockKeyConfig `gorm:"-" json:"bedrock_key_config,omitempty"`
}
TableKey represents an API key configuration in the database
type TableLogStoreConfig ¶
type TableLogStoreConfig struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Enabled bool `json:"enabled"`
Type string `gorm:"type:varchar(50);not null" json:"type"` // "sqlite"
Config *string `gorm:"type:text" json:"config"` // JSON serialized logstore.Config
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableLogStoreConfig represents the configuration for the log store in the database
func (TableLogStoreConfig) TableName ¶
func (TableLogStoreConfig) TableName() string
TableName sets the table name for each model
type TableMCPClient ¶
type TableMCPClient struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Name string `gorm:"type:varchar(255);uniqueIndex;not null" json:"name"`
ConnectionType string `gorm:"type:varchar(20);not null" json:"connection_type"` // schemas.MCPConnectionType
ConnectionString *string `gorm:"type:text" json:"connection_string,omitempty"`
StdioConfigJSON *string `gorm:"type:text" json:"-"` // JSON serialized schemas.MCPStdioConfig
ToolsToExecuteJSON string `gorm:"type:text" json:"-"` // JSON serialized []string
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
// Virtual fields for runtime use (not stored in DB)
StdioConfig *schemas.MCPStdioConfig `gorm:"-" json:"stdio_config,omitempty"`
ToolsToExecute []string `gorm:"-" json:"tools_to_execute"`
}
TableMCPClient represents an MCP client configuration in the database
func (*TableMCPClient) AfterFind ¶
func (c *TableMCPClient) AfterFind(tx *gorm.DB) error
AfterFind hooks for deserialization
func (*TableMCPClient) BeforeSave ¶
func (c *TableMCPClient) BeforeSave(tx *gorm.DB) error
func (TableMCPClient) TableName ¶
func (TableMCPClient) TableName() string
TableName sets the table name for each model
type TableModel ¶
type TableModel struct {
ID string `gorm:"primaryKey" json:"id"`
ProviderID uint `gorm:"index;not null;uniqueIndex:idx_provider_name" json:"provider_id"`
Name string `gorm:"uniqueIndex:idx_provider_name" json:"name"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
TableModel represents a model configuration in the database
func (TableModel) TableName ¶
func (TableModel) TableName() string
TableName sets the table name for each model
type TableModelPricing ¶
type TableModelPricing struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Model string `gorm:"type:varchar(255);not null;uniqueIndex:idx_model_provider_mode" json:"model"`
Provider string `gorm:"type:varchar(50);not null;uniqueIndex:idx_model_provider_mode" json:"provider"`
InputCostPerToken float64 `gorm:"not null" json:"input_cost_per_token"`
OutputCostPerToken float64 `gorm:"not null" json:"output_cost_per_token"`
Mode string `gorm:"type:varchar(50);not null;uniqueIndex:idx_model_provider_mode" json:"mode"`
// Additional pricing for media
InputCostPerImage *float64 `gorm:"default:null" json:"input_cost_per_image,omitempty"`
InputCostPerVideoPerSecond *float64 `gorm:"default:null" json:"input_cost_per_video_per_second,omitempty"`
InputCostPerAudioPerSecond *float64 `gorm:"default:null" json:"input_cost_per_audio_per_second,omitempty"`
// Character-based pricing
InputCostPerCharacter *float64 `gorm:"default:null" json:"input_cost_per_character,omitempty"`
OutputCostPerCharacter *float64 `gorm:"default:null" json:"output_cost_per_character,omitempty"`
// Pricing above 128k tokens
InputCostPerTokenAbove128kTokens *float64 `gorm:"default:null" json:"input_cost_per_token_above_128k_tokens,omitempty"`
InputCostPerCharacterAbove128kTokens *float64 `gorm:"default:null" json:"input_cost_per_character_above_128k_tokens,omitempty"`
InputCostPerImageAbove128kTokens *float64 `gorm:"default:null" json:"input_cost_per_image_above_128k_tokens,omitempty"`
InputCostPerVideoPerSecondAbove128kTokens *float64 `gorm:"default:null" json:"input_cost_per_video_per_second_above_128k_tokens,omitempty"`
InputCostPerAudioPerSecondAbove128kTokens *float64 `gorm:"default:null" json:"input_cost_per_audio_per_second_above_128k_tokens,omitempty"`
OutputCostPerTokenAbove128kTokens *float64 `gorm:"default:null" json:"output_cost_per_token_above_128k_tokens,omitempty"`
OutputCostPerCharacterAbove128kTokens *float64 `gorm:"default:null" json:"output_cost_per_character_above_128k_tokens,omitempty"`
// Cache and batch pricing
CacheReadInputTokenCost *float64 `gorm:"default:null" json:"cache_read_input_token_cost,omitempty"`
InputCostPerTokenBatches *float64 `gorm:"default:null" json:"input_cost_per_token_batches,omitempty"`
OutputCostPerTokenBatches *float64 `gorm:"default:null" json:"output_cost_per_token_batches,omitempty"`
}
TableModelPricing represents pricing information for AI models
func (TableModelPricing) TableName ¶
func (TableModelPricing) TableName() string
TableName sets the table name for each model
type TablePlugin ¶
type TablePlugin struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Name string `gorm:"type:varchar(255);uniqueIndex;not null" json:"name"`
Enabled bool `json:"enabled"`
Path *string `json:"path,omitempty"`
ConfigJSON string `gorm:"type:text" json:"-"` // JSON serialized plugin.Config
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
IsCustom bool `gorm:"not null;default:false" json:"isCustom"`
// Virtual fields for runtime use (not stored in DB)
Config any `gorm:"-" json:"config,omitempty"`
}
func (*TablePlugin) AfterFind ¶
func (p *TablePlugin) AfterFind(tx *gorm.DB) error
AfterFind hooks for deserialization
func (*TablePlugin) BeforeSave ¶
func (p *TablePlugin) BeforeSave(tx *gorm.DB) error
BeforeSave hooks for serialization
func (TablePlugin) TableName ¶
func (TablePlugin) TableName() string
TableName sets the table name for each model
type TableProvider ¶
type TableProvider struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Name string `gorm:"type:varchar(50);uniqueIndex;not null" json:"name"` // ModelProvider as string
NetworkConfigJSON string `gorm:"type:text" json:"-"` // JSON serialized schemas.NetworkConfig
ConcurrencyBufferJSON string `gorm:"type:text" json:"-"` // JSON serialized schemas.ConcurrencyAndBufferSize
ProxyConfigJSON string `gorm:"type:text" json:"-"` // JSON serialized schemas.ProxyConfig
CustomProviderConfigJSON string `gorm:"type:text" json:"-"` // JSON serialized schemas.CustomProviderConfig
SendBackRawResponse bool `json:"send_back_raw_response"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
// Relationships
Keys []TableKey `gorm:"foreignKey:ProviderID;constraint:OnDelete:CASCADE" json:"keys"`
// Virtual fields for runtime use (not stored in DB)
NetworkConfig *schemas.NetworkConfig `gorm:"-" json:"network_config,omitempty"`
ConcurrencyAndBufferSize *schemas.ConcurrencyAndBufferSize `gorm:"-" json:"concurrency_and_buffer_size,omitempty"`
ProxyConfig *schemas.ProxyConfig `gorm:"-" json:"proxy_config,omitempty"`
// Custom provider fields
CustomProviderConfig *schemas.CustomProviderConfig `gorm:"-" json:"custom_provider_config,omitempty"`
// Foreign keys
Models []TableModel `gorm:"foreignKey:ProviderID;constraint:OnDelete:CASCADE" json:"models"`
}
TableProvider represents a provider configuration in the database
func (*TableProvider) AfterFind ¶
func (p *TableProvider) AfterFind(tx *gorm.DB) error
AfterFind hooks for deserialization
func (*TableProvider) BeforeSave ¶
func (p *TableProvider) BeforeSave(tx *gorm.DB) error
BeforeSave hooks for serialization
func (TableProvider) TableName ¶
func (TableProvider) TableName() string
TableName represents a provider configuration in the database
type TableRateLimit ¶
type TableRateLimit struct {
ID string `gorm:"primaryKey;type:varchar(255)" json:"id"`
// Token limits with flexible duration
TokenMaxLimit *int64 `gorm:"default:null" json:"token_max_limit,omitempty"` // Maximum tokens allowed
TokenResetDuration *string `gorm:"type:varchar(50)" json:"token_reset_duration,omitempty"` // e.g., "30s", "5m", "1h", "1d", "1w", "1M", "1Y"
TokenCurrentUsage int64 `gorm:"default:0" json:"token_current_usage"` // Current token usage
TokenLastReset time.Time `gorm:"index" json:"token_last_reset"` // Last time token counter was reset
// Request limits with flexible duration
RequestMaxLimit *int64 `gorm:"default:null" json:"request_max_limit,omitempty"` // Maximum requests allowed
RequestResetDuration *string `gorm:"type:varchar(50)" json:"request_reset_duration,omitempty"` // e.g., "30s", "5m", "1h", "1d", "1w", "1M", "1Y"
RequestCurrentUsage int64 `gorm:"default:0" json:"request_current_usage"` // Current request usage
RequestLastReset time.Time `gorm:"index" json:"request_last_reset"` // Last time request counter was reset
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableRateLimit defines rate limiting rules for virtual keys using flexible max+reset approach
func (*TableRateLimit) BeforeSave ¶
func (rl *TableRateLimit) BeforeSave(tx *gorm.DB) error
BeforeSave hook for RateLimit to validate reset duration formats
func (TableRateLimit) TableName ¶
func (TableRateLimit) TableName() string
TableName sets the table name for each model
type TableTeam ¶
type TableTeam struct {
ID string `gorm:"primaryKey;type:varchar(255)" json:"id"`
Name string `gorm:"type:varchar(255);not null" json:"name"`
CustomerID *string `gorm:"type:varchar(255);index" json:"customer_id,omitempty"` // A team can belong to a customer
BudgetID *string `gorm:"type:varchar(255);index" json:"budget_id,omitempty"`
// Relationships
Customer *TableCustomer `gorm:"foreignKey:CustomerID" json:"customer,omitempty"`
Budget *TableBudget `gorm:"foreignKey:BudgetID" json:"budget,omitempty"`
VirtualKeys []TableVirtualKey `gorm:"foreignKey:TeamID" json:"virtual_keys"`
Profile *string `gorm:"type:text" json:"-"`
ParsedProfile map[string]interface{} `gorm:"-" json:"profile"`
Config *string `gorm:"type:text" json:"-"`
ParsedConfig map[string]interface{} `gorm:"-" json:"config"`
Claims *string `gorm:"type:text" json:"-"`
ParsedClaims map[string]interface{} `gorm:"-" json:"claims"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableTeam represents a team entity with budget and customer association
func (*TableTeam) BeforeSave ¶
BeforeSave hook for TableTeam to serialize JSON fields
type TableVectorStoreConfig ¶
type TableVectorStoreConfig struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Enabled bool `json:"enabled"` // Enable vector store
Type string `gorm:"type:varchar(50);not null" json:"type"` // "weaviate, elasticsearch, pinecone, etc."
TTLSeconds int `gorm:"default:300" json:"ttl_seconds"` // TTL in seconds (default: 5 minutes)
CacheByModel bool `gorm:"" json:"cache_by_model"` // Include model in cache key
CacheByProvider bool `gorm:"" json:"cache_by_provider"` // Include provider in cache key
Config *string `gorm:"type:text" json:"config"` // JSON serialized schemas.RedisVectorStoreConfig
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableVectorStoreConfig represents Cache plugin configuration in the database
func (TableVectorStoreConfig) TableName ¶
func (TableVectorStoreConfig) TableName() string
TableName sets the table name for each model
type TableVirtualKey ¶
type TableVirtualKey struct {
ID string `gorm:"primaryKey;type:varchar(255)" json:"id"`
Name string `gorm:"uniqueIndex:idx_virtual_key_name;type:varchar(255);not null" json:"name"`
Description string `gorm:"type:text" json:"description,omitempty"`
Value string `gorm:"uniqueIndex:idx_virtual_key_value;type:varchar(255);not null" json:"value"` // The virtual key value
IsActive bool `gorm:"default:true" json:"is_active"`
ProviderConfigs []TableVirtualKeyProviderConfig `gorm:"foreignKey:VirtualKeyID;constraint:OnDelete:CASCADE" json:"provider_configs"` // Empty means all providers allowed
MCPConfigs []TableVirtualKeyMCPConfig `gorm:"foreignKey:VirtualKeyID;constraint:OnDelete:CASCADE" json:"mcp_configs"`
// Foreign key relationships (mutually exclusive: either TeamID or CustomerID, not both)
TeamID *string `gorm:"type:varchar(255);index" json:"team_id,omitempty"`
CustomerID *string `gorm:"type:varchar(255);index" json:"customer_id,omitempty"`
BudgetID *string `gorm:"type:varchar(255);index" json:"budget_id,omitempty"`
RateLimitID *string `gorm:"type:varchar(255);index" json:"rate_limit_id,omitempty"`
Keys []TableKey `gorm:"many2many:governance_virtual_key_keys;constraint:OnDelete:CASCADE" json:"keys"`
// Relationships
Team *TableTeam `gorm:"foreignKey:TeamID" json:"team,omitempty"`
Customer *TableCustomer `gorm:"foreignKey:CustomerID" json:"customer,omitempty"`
Budget *TableBudget `gorm:"foreignKey:BudgetID;onDelete:CASCADE" json:"budget,omitempty"`
RateLimit *TableRateLimit `gorm:"foreignKey:RateLimitID;onDelete:CASCADE" json:"rate_limit,omitempty"`
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}
TableVirtualKey represents a virtual key with budget, rate limits, and team/customer association
func (*TableVirtualKey) AfterFind ¶
func (vk *TableVirtualKey) AfterFind(tx *gorm.DB) error
AfterFind hook for VirtualKey to clear sensitive data from associated keys
func (*TableVirtualKey) BeforeSave ¶
func (vk *TableVirtualKey) BeforeSave(tx *gorm.DB) error
BeforeSave hook for VirtualKey to enforce mutual exclusion
func (TableVirtualKey) TableName ¶
func (TableVirtualKey) TableName() string
TableName sets the table name for each model
type TableVirtualKeyMCPConfig ¶ added in v1.1.10
type TableVirtualKeyMCPConfig struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
VirtualKeyID string `gorm:"type:varchar(255);not null;uniqueIndex:idx_vk_mcpclient" json:"virtual_key_id"`
MCPClientID uint `gorm:"not null;uniqueIndex:idx_vk_mcpclient" json:"mcp_client_id"`
MCPClient TableMCPClient `gorm:"foreignKey:MCPClientID" json:"mcp_client"`
ToolsToExecute []string `gorm:"type:text;serializer:json" json:"tools_to_execute"`
}
func (TableVirtualKeyMCPConfig) TableName ¶ added in v1.1.10
func (TableVirtualKeyMCPConfig) TableName() string
TableName sets the table name for each model
type TableVirtualKeyProviderConfig ¶
type TableVirtualKeyProviderConfig struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
VirtualKeyID string `gorm:"type:varchar(255);not null" json:"virtual_key_id"`
Provider string `gorm:"type:varchar(50);not null" json:"provider"`
Weight float64 `gorm:"default:1.0" json:"weight"`
AllowedModels []string `gorm:"type:text;serializer:json" json:"allowed_models"` // Empty means all models allowed
BudgetID *string `gorm:"type:varchar(255);index" json:"budget_id,omitempty"`
RateLimitID *string `gorm:"type:varchar(255);index" json:"rate_limit_id,omitempty"`
// Relationships
Budget *TableBudget `gorm:"foreignKey:BudgetID;onDelete:CASCADE" json:"budget,omitempty"`
RateLimit *TableRateLimit `gorm:"foreignKey:RateLimitID;onDelete:CASCADE" json:"rate_limit,omitempty"`
}
TableVirtualKeyProviderConfig represents a provider configuration for a virtual key
func (TableVirtualKeyProviderConfig) TableName ¶
func (TableVirtualKeyProviderConfig) TableName() string
TableName sets the table name for each model