Files
steampipe/pkg/constants/db.go
2025-11-03 13:49:19 +05:30

166 lines
6.0 KiB
Go

package constants
import (
"fmt"
)
// Client constants
const (
// MaxParallelClientInits is the number of clients to initialize in parallel
// if we start initializing all clients together, it leads to bad performance on all
MaxParallelClientInits = 3
// MaxBackups is the maximum number of backups that will be retained
MaxBackups = 100
)
const (
DatabaseDefaultListenAddresses = "localhost"
DatabaseDefaultPort = 9193
DatabaseDefaultCheckQueryTimeout = 240
DatabaseSuperUser = "root"
DatabaseUser = "steampipe"
DatabaseName = "steampipe"
DatabaseUsersRole = "steampipe_users"
DefaultMaxConnections = 10
)
// constants for installing db and fdw images
const (
DatabaseVersion = "14.19.0"
FdwVersion = "2.1.3"
// PostgresImageRef is the OCI Image ref for the database binaries
PostgresImageRef = "ghcr.io/turbot/steampipe/db:14.19.0"
PostgresImageDigest = "sha256:84264ef41853178707bccb091f5450c22e835f8a98f9961592c75690321093d9"
FdwImageRef = "ghcr.io/turbot/steampipe/fdw:" + FdwVersion
FdwBinaryFileName = "steampipe_postgres_fdw.so"
)
// schema names
const (
// legacy schema names
// these are schema names which were used previously
// but are not relevant anymore and need to be dropped
LegacyInternalSchema = "internal"
// InternalSchema is the schema container for all steampipe helper functions, and connection state table
// also used to send commands to the FDW
InternalSchema = "steampipe_internal"
// ServerSettingsTable is the table used to store steampipe service configuration
ServerSettingsTable = "steampipe_server_settings"
// RateLimiterDefinitionTable is the table used to store rate limiters defined in the config
RateLimiterDefinitionTable = "steampipe_plugin_limiter"
// PluginInstanceTable is the table used to store plugin configs
PluginInstanceTable = "steampipe_plugin"
PluginColumnTable = "steampipe_plugin_column"
// LegacyConnectionStateTable is the table used to store steampipe connection state
LegacyConnectionStateTable = "steampipe_connection_state"
ConnectionTable = "steampipe_connection"
ConnectionStatePending = "pending"
ConnectionStatePendingIncomplete = "incomplete"
ConnectionStateReady = "ready"
ConnectionStateUpdating = "updating"
ConnectionStateDeleting = "deleting"
ConnectionStateDisabled = "disabled"
ConnectionStateError = "error"
// foreign tables in internal schema
ForeignTableScanMetadataSummary = "steampipe_scan_metadata_summary"
ForeignTableScanMetadata = "steampipe_scan_metadata"
ForeignTableSettings = "steampipe_settings"
ForeignTableSettingsKeyColumn = "name"
ForeignTableSettingsValueColumn = "value"
ForeignTableSettingsCacheKey = "cache"
ForeignTableSettingsCacheTtlKey = "cache_ttl"
ForeignTableSettingsCacheClearTimeKey = "cache_clear_time"
FunctionCacheSet = "meta_cache"
FunctionConnectionCacheClear = "meta_connection_cache_clear"
FunctionCacheSetTtl = "meta_cache_ttl"
// legacy
LegacyCommandSchema = "steampipe_command"
LegacyCommandTableCache = "cache"
LegacyCommandTableCacheOperationColumn = "operation"
LegacyCommandCacheOn = "cache_on"
LegacyCommandCacheOff = "cache_off"
LegacyCommandCacheClear = "cache_clear"
LegacyCommandTableScanMetadata = "scan_metadata"
)
// ConnectionStates is a handy array of all states
var ConnectionStates = []string{
LegacyConnectionStateTable,
ConnectionStatePending,
ConnectionStateReady,
ConnectionStateUpdating,
ConnectionStateDeleting,
ConnectionStateError,
}
var ReservedConnectionNames = []string{
"public",
}
const ReservedConnectionNamePrefix = "steampipe_"
// introspection table names
const (
IntrospectionTableQuery = "steampipe_query"
IntrospectionTableControl = "steampipe_control"
IntrospectionTableBenchmark = "steampipe_benchmark"
IntrospectionTableMod = "steampipe_mod"
IntrospectionTableDashboard = "steampipe_dashboard"
IntrospectionTableDashboardContainer = "steampipe_dashboard_container"
IntrospectionTableDashboardCard = "steampipe_dashboard_card"
IntrospectionTableDashboardChart = "steampipe_dashboard_chart"
IntrospectionTableDashboardFlow = "steampipe_dashboard_flow"
IntrospectionTableDashboardGraph = "steampipe_dashboard_graph"
IntrospectionTableDashboardHierarchy = "steampipe_dashboard_hierarchy"
IntrospectionTableDashboardImage = "steampipe_dashboard_image"
IntrospectionTableDashboardInput = "steampipe_dashboard_input"
IntrospectionTableDashboardTable = "steampipe_dashboard_table"
IntrospectionTableDashboardText = "steampipe_dashboard_text"
IntrospectionTableVariable = "steampipe_variable"
IntrospectionTableReference = "steampipe_reference"
)
const (
RuntimeParamsKeyApplicationName = "application_name"
)
// Invoker is a pseudoEnum for the command/operation which starts the service
type Invoker string
const (
// InvokerService is set when invoked by `service start`
InvokerService Invoker = "service"
// InvokerQuery is set when invoked by query command
InvokerQuery = "query"
// InvokerCheck is set when invoked by check command
InvokerCheck = "check"
// InvokerPlugin is set when invoked by a plugin command
InvokerPlugin = "plugin"
// InvokerDashboard is set when invoked by dashboard command
InvokerDashboard = "dashboard"
// InvokerConnectionWatcher is set when invoked by the connection watcher process
InvokerConnectionWatcher = "connection-watcher"
)
// IsValid is a validator for Invoker known values
func (i Invoker) IsValid() error {
switch i {
case InvokerService, InvokerQuery, InvokerCheck, InvokerPlugin, InvokerDashboard:
return nil
}
return fmt.Errorf("invalid invoker. Can be one of '%v', '%v', '%v', '%v' or '%v' ", InvokerService, InvokerQuery, InvokerPlugin, InvokerCheck, InvokerDashboard)
}