tables

package
v1.2.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2026 License: Apache-2.0 Imports: 9 Imported by: 5

Documentation

Overview

Package tables contains the database tables for the configstore.

Index

Constants

View Source
const (
	ConfigAdminUsernameKey          = "admin_username"
	ConfigAdminPasswordKey          = "admin_password"
	ConfigIsAuthEnabledKey          = "is_auth_enabled"
	ConfigDisableAuthOnInferenceKey = "disable_auth_on_inference"
	ConfigProxyKey                  = "proxy_config"
	ConfigRestartRequiredKey        = "restart_required"
	ConfigHeaderFilterKey           = "header_filter_config"
)

Variables

This section is empty.

Functions

func ParseDuration

func ParseDuration(duration string) (time.Duration, error)

ParseDuration function to parse duration strings

Types

type GlobalHeaderFilterConfig added in v1.1.53

type GlobalHeaderFilterConfig struct {
	Allowlist []string `json:"allowlist,omitempty"` // If non-empty, only these headers are allowed
	Denylist  []string `json:"denylist,omitempty"`  // Headers to always block
}

GlobalHeaderFilterConfig represents global header filtering configuration for headers forwarded to LLM providers via the x-bf-eh-* prefix. Filter logic: - If allowlist is non-empty, only headers in the allowlist are forwarded - If denylist is non-empty, headers in the denylist are dropped - If both are non-empty, allowlist takes precedence first, then denylist filters the result

type GlobalProxyConfig added in v1.1.44

type GlobalProxyConfig struct {
	Enabled       bool                    `json:"enabled"`
	Type          network.GlobalProxyType `json:"type"`                      // "http", "socks5", "tcp"
	URL           string                  `json:"url"`                       // Proxy URL (e.g., http://proxy.example.com:8080)
	Username      string                  `json:"username,omitempty"`        // Optional authentication username
	Password      string                  `json:"password,omitempty"`        // Optional authentication password
	NoProxy       string                  `json:"no_proxy,omitempty"`        // Comma-separated list of hosts to bypass proxy
	Timeout       int                     `json:"timeout,omitempty"`         // Connection timeout in seconds
	SkipTLSVerify bool                    `json:"skip_tls_verify,omitempty"` // Skip TLS certificate verification
	// Entity enablement flags
	EnableForSCIM      bool `json:"enable_for_scim"`      // Enable proxy for SCIM requests (enterprise only)
	EnableForInference bool `json:"enable_for_inference"` // Enable proxy for inference requests
	EnableForAPI       bool `json:"enable_for_api"`       // Enable proxy for API requests
}

GlobalProxyConfig represents the global proxy configuration

type RestartRequiredConfig added in v1.1.53

type RestartRequiredConfig struct {
	Required bool   `json:"required"`
	Reason   string `json:"reason,omitempty"`
}

RestartRequiredConfig represents the restart required configuration This is set when a config change requires a server restart to take effect

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

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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)
	LastDBUsage float64 `gorm:"-" json:"-"`
}

TableBudget defines spending limits with configurable reset periods

func (*TableBudget) AfterFind added in v1.2.0

func (b *TableBudget) AfterFind(tx *gorm.DB) error

AfterFind hook for Budget to set the LastDBUsage virtual field

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
	AllowedHeadersJSON      string `gorm:"type:text" json:"-"` // JSON serialized []string
	HeaderFilterConfigJSON  string `gorm:"type:text" json:"-"` // JSON serialized GlobalHeaderFilterConfig
	InitialPoolSize         int    `gorm:"default:300" json:"initial_pool_size"`
	EnableLogging           bool   `gorm:"" json:"enable_logging"`
	DisableContentLogging   bool   `gorm:"default:false" json:"disable_content_logging"`           // DisableContentLogging controls whether sensitive content (inputs, outputs, embeddings, etc.) is logged
	LogRetentionDays        int    `gorm:"default:365" json:"log_retention_days" validate:"min=1"` // Number of days to retain logs (minimum 1 day)
	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"`
	MCPAgentDepth           int    `gorm:"default:10" json:"mcp_agent_depth"`
	MCPToolExecutionTimeout int    `gorm:"default:30" json:"mcp_tool_execution_timeout"`      // Timeout for individual tool execution in seconds (default: 30)
	MCPCodeModeBindingLevel string `gorm:"default:server" json:"mcp_code_mode_binding_level"` // How tools are exposed in VFS: "server" or "tool"

	// LiteLLM fallback flag
	EnableLiteLLMFallbacks bool `gorm:"column:enable_litellm_fallbacks;default:false" json:"enable_litellm_fallbacks"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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"`
	AllowedHeaders     []string                  `gorm:"-" json:"allowed_headers,omitempty"`
	HeaderFilterConfig *GlobalHeaderFilterConfig `gorm:"-" json:"header_filter_config,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"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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 TableDistributedLock added in v1.2.9

type TableDistributedLock struct {
	LockKey   string    `gorm:"primaryKey;column:lock_key;size:255" json:"lock_key"`
	HolderID  string    `gorm:"column:holder_id;size:255;not null" json:"holder_id"`
	ExpiresAt time.Time `gorm:"column:expires_at;not null;index" json:"expires_at"`
	CreatedAt time.Time `gorm:"column:created_at;autoCreateTime" json:"created_at"`
}

TableDistributedLock represents a distributed lock entry in the database. This table is used to implement distributed locking across multiple instances.

func (TableDistributedLock) TableName added in v1.2.9

func (TableDistributedLock) TableName() string

TableName returns the table name for the distributed lock table.

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      schemas.EnvVar `gorm:"type:text;not null" json:"value"`
	ModelsJSON string         `gorm:"type:text" json:"-"` // JSON serialized []string
	Weight     *float64       `json:"weight"`
	Enabled    *bool          `gorm:"default:true" json:"enabled,omitempty"`
	CreatedAt  time.Time      `gorm:"index;not null" json:"created_at"`
	UpdatedAt  time.Time      `gorm:"index;not null" json:"updated_at"`

	// Config hash is used to detect changes synced from config.json file
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	// Azure config fields (embedded instead of separate table for simplicity)
	AzureEndpoint        *schemas.EnvVar `gorm:"type:text" json:"azure_endpoint,omitempty"`
	AzureAPIVersion      *schemas.EnvVar `gorm:"type:varchar(50)" json:"azure_api_version,omitempty"`
	AzureDeploymentsJSON *string         `gorm:"type:text" json:"-"` // JSON serialized map[string]string
	AzureClientID        *schemas.EnvVar `gorm:"type:varchar(255)" json:"azure_client_id,omitempty"`
	AzureClientSecret    *schemas.EnvVar `gorm:"type:text" json:"azure_client_secret,omitempty"`
	AzureTenantID        *schemas.EnvVar `gorm:"type:varchar(255)" json:"azure_tenant_id,omitempty"`

	// Vertex config fields (embedded)
	VertexProjectID       *schemas.EnvVar `gorm:"type:varchar(255)" json:"vertex_project_id,omitempty"`
	VertexProjectNumber   *schemas.EnvVar `gorm:"type:varchar(255)" json:"vertex_project_number,omitempty"`
	VertexRegion          *schemas.EnvVar `gorm:"type:varchar(100)" json:"vertex_region,omitempty"`
	VertexAuthCredentials *schemas.EnvVar `gorm:"type:text" json:"vertex_auth_credentials,omitempty"`
	VertexDeploymentsJSON *string         `gorm:"type:text" json:"-"` // JSON serialized map[string]string

	// Bedrock config fields (embedded)
	BedrockAccessKey         *schemas.EnvVar `gorm:"type:varchar(255)" json:"bedrock_access_key,omitempty"`
	BedrockSecretKey         *schemas.EnvVar `gorm:"type:text" json:"bedrock_secret_key,omitempty"`
	BedrockSessionToken      *schemas.EnvVar `gorm:"type:text" json:"bedrock_session_token,omitempty"`
	BedrockRegion            *schemas.EnvVar `gorm:"type:varchar(100)" json:"bedrock_region,omitempty"`
	BedrockARN               *schemas.EnvVar `gorm:"type:text" json:"bedrock_arn,omitempty"`
	BedrockDeploymentsJSON   *string         `gorm:"type:text" json:"-"` // JSON serialized map[string]string
	BedrockBatchS3ConfigJSON *string         `gorm:"type:text" json:"-"` // JSON serialized schemas.BatchS3Config

	// Batch API configuration
	UseForBatchAPI *bool `gorm:"default:false" json:"use_for_batch_api,omitempty"` // Whether this key can be used for batch API operations

	// 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

func (*TableKey) AfterFind

func (k *TableKey) AfterFind(tx *gorm.DB) error

func (*TableKey) BeforeSave

func (k *TableKey) BeforeSave(tx *gorm.DB) error

BeforeSave is called before saving the key to the database

func (TableKey) TableName

func (TableKey) TableName() string

TableName sets the table name for each model

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"` // ID is used as the internal primary key and is also accessed by public methods, so it must be present.
	ClientID               string          `gorm:"type:varchar(255);uniqueIndex;not null" json:"client_id"`
	Name                   string          `gorm:"type:varchar(255);uniqueIndex;not null" json:"name"`
	IsCodeModeClient       bool            `gorm:"default:false" json:"is_code_mode_client"`         // Whether the client is a code mode client
	ConnectionType         string          `gorm:"type:varchar(20);not null" json:"connection_type"` // schemas.MCPConnectionType
	ConnectionString       *schemas.EnvVar `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
	ToolsToAutoExecuteJSON string          `gorm:"type:text" json:"-"` // JSON serialized []string
	HeadersJSON            string          `gorm:"type:text" json:"-"` // JSON serialized map[string]string

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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"`
	ToolsToAutoExecute []string                  `gorm:"-" json:"tools_to_auto_execute"`
	Headers            map[string]schemas.EnvVar `gorm:"-" json:"headers"`
}

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 TableModelConfig added in v1.2.13

type TableModelConfig struct {
	ID          string  `gorm:"primaryKey;type:varchar(255)" json:"id"`
	ModelName   string  `gorm:"type:varchar(255);not null;uniqueIndex:idx_model_provider" json:"model_name"`
	Provider    *string `gorm:"type:varchar(50);uniqueIndex:idx_model_provider" json:"provider,omitempty"` // Optional provider, nullable
	BudgetID    *string `gorm:"type:varchar(255);index:idx_model_config_budget" json:"budget_id,omitempty"`
	RateLimitID *string `gorm:"type:varchar(255);index:idx_model_config_rate_limit" 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"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
	UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
}

TableModelConfig represents a model configuration with rate limiting and budgeting

func (*TableModelConfig) BeforeSave added in v1.2.13

func (mc *TableModelConfig) BeforeSave(tx *gorm.DB) error

BeforeSave hook for ModelConfig to validate required fields

func (TableModelConfig) TableName added in v1.2.13

func (TableModelConfig) 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
	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"`

	//Pricing above 200k tokens (for gemini and claude models)
	InputCostPerTokenAbove200kTokens           *float64 `gorm:"default:null;column:input_cost_per_token_above_200k_tokens" json:"input_cost_per_token_above_200k_tokens,omitempty"`
	OutputCostPerTokenAbove200kTokens          *float64 `gorm:"default:null;column:output_cost_per_token_above_200k_tokens" json:"output_cost_per_token_above_200k_tokens,omitempty"`
	CacheCreationInputTokenCostAbove200kTokens *float64 `` /* 143-byte string literal not displayed */
	CacheReadInputTokenCostAbove200kTokens     *float64 `` /* 135-byte string literal not displayed */

	// Cache and batch pricing
	CacheReadInputTokenCost     *float64 `gorm:"default:null;column:cache_read_input_token_cost" json:"cache_read_input_token_cost,omitempty"`
	CacheCreationInputTokenCost *float64 `gorm:"default:null;column:cache_creation_input_token_cost" json:"cache_creation_input_token_cost,omitempty"`
	InputCostPerTokenBatches    *float64 `gorm:"default:null;column:input_cost_per_token_batches" json:"input_cost_per_token_batches,omitempty"`
	OutputCostPerTokenBatches   *float64 `gorm:"default:null;column:output_cost_per_token_batches" json:"output_cost_per_token_batches,omitempty"`

	// Image generation pricing
	InputCostPerImageToken       *float64 `gorm:"default:null;column:input_cost_per_image_token" json:"input_cost_per_image_token,omitempty"`
	OutputCostPerImageToken      *float64 `gorm:"default:null;column:output_cost_per_image_token" json:"output_cost_per_image_token,omitempty"`
	InputCostPerImage            *float64 `gorm:"default:null;column:input_cost_per_image" json:"input_cost_per_image,omitempty"`
	OutputCostPerImage           *float64 `gorm:"default:null;column:output_cost_per_image" json:"output_cost_per_image,omitempty"`
	CacheReadInputImageTokenCost *float64 `gorm:"default:null;column:cache_read_input_image_token_cost" json:"cache_read_input_image_token_cost,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"`
	Version    int16     `gorm:"not null;default:1" json:"version"`
	UpdatedAt  time.Time `gorm:"index;not null" json:"updated_at"`
	IsCustom   bool      `gorm:"not null;default:false" json:"isCustom"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	// 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
	SendBackRawRequest       bool      `json:"send_back_raw_request"`
	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"`

	// Governance fields - Budget and Rate Limit for provider-level governance
	BudgetID    *string `gorm:"type:varchar(255);index:idx_provider_budget" json:"budget_id,omitempty"`
	RateLimitID *string `gorm:"type:varchar(255);index:idx_provider_rate_limit" json:"rate_limit_id,omitempty"`

	// Governance relationships
	Budget    *TableBudget    `gorm:"foreignKey:BudgetID;onDelete:CASCADE" json:"budget,omitempty"`
	RateLimit *TableRateLimit `gorm:"foreignKey:RateLimitID;onDelete:CASCADE" json:"rate_limit,omitempty"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`
}

TableProvider represents a provider configuration in the database NOTE: Any changes to the provider configuration should be reflected in the GenerateConfigHash function That helps us detect changes between config file and database config

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

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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)
	LastDBTokenUsage   int64 `gorm:"-" json:"-"`
	LastDBRequestUsage int64 `gorm:"-" json:"-"`
}

TableRateLimit defines rate limiting rules for virtual keys using flexible max+reset approach

func (*TableRateLimit) AfterFind added in v1.2.0

func (rl *TableRateLimit) AfterFind(tx *gorm.DB) error

AfterFind hook for RateLimit to set the LastDBTokenUsage and LastDBRequestUsage virtual fields

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"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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) AfterFind

func (t *TableTeam) AfterFind(tx *gorm.DB) error

AfterFind hook for TableTeam to deserialize JSON fields

func (*TableTeam) BeforeSave

func (t *TableTeam) BeforeSave(tx *gorm.DB) error

BeforeSave hook for TableTeam to serialize JSON fields

func (TableTeam) TableName

func (TableTeam) TableName() string

TableName sets the table name for each model

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, redis, qdrant."
	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"`

	// 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"`

	// Config hash is used to detect the changes synced from config.json file
	// Every time we sync the config.json file, we will update the config hash
	ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`

	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) 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 `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"`
	Keys      []TableKey      `gorm:"many2many:governance_virtual_key_provider_config_keys;constraint:OnDelete:CASCADE" json:"keys"` // Empty means all keys allowed for this provider
}

TableVirtualKeyProviderConfig represents a provider configuration for a virtual key

func (*TableVirtualKeyProviderConfig) AfterFind added in v1.1.40

func (pc *TableVirtualKeyProviderConfig) AfterFind(tx *gorm.DB) error

AfterFind hook for TableVirtualKeyProviderConfig to clear sensitive data from associated keys

func (TableVirtualKeyProviderConfig) MarshalJSON added in v1.1.61

func (pc TableVirtualKeyProviderConfig) MarshalJSON() ([]byte, error)

MarshalJSON custom marshaller to ensure AllowedModels is always an array (never null)

func (TableVirtualKeyProviderConfig) TableName

TableName sets the table name for each model

func (*TableVirtualKeyProviderConfig) UnmarshalJSON added in v1.1.56

func (pc *TableVirtualKeyProviderConfig) UnmarshalJSON(data []byte) error

UnmarshalJSON custom unmarshaller to handle both "keys" ([]TableKey) and "allowed_keys" ([]string) formats

type TableVirtualKeyProviderConfigKey added in v1.1.40

type TableVirtualKeyProviderConfigKey struct {
	TableVirtualKeyProviderConfigID uint `gorm:"primaryKey;uniqueIndex:idx_vk_provider_config_key"`
	TableKeyID                      uint `gorm:"primaryKey;uniqueIndex:idx_vk_provider_config_key"`
}

TableVirtualKeyProviderConfigKey is the join table for the many2many relationship between TableVirtualKeyProviderConfig and TableKey

func (TableVirtualKeyProviderConfigKey) TableName added in v1.1.40

TableName sets the table name for the join table

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL