database

package
v0.38.1 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTemplateInUse = errors.New("template in use")
)

Functions

func GetUserQuota

func GetUserQuota(user *model.User) (*model.Quota, error)

func GetUserUsage

func GetUserUsage(userId string, inZone string) (*model.Usage, error)

func GroupsChanged added in v0.37.0

func GroupsChanged()

GroupsChanged drops the cached group list, for the same reason.

func IsSessionDriverShared

func IsSessionDriverShared() bool

IsSessionDriverShared returns true if the session driver uses shared storage e.g. Redis

func TokensChanged added in v0.37.0

func TokensChanged(userId string)

TokensChanged drops a user's cached tokens. A server sharing its database with others calls it for each token change gossiped to it, as the change may already be in the database and so never saved, and so never seen, here.

Types

type DbDriver

type DbDriver interface {
	Connect() error

	// Users
	SaveUser(user *model.User, updateFields []string) error
	DeleteUser(user *model.User) error
	GetUser(id string) (*model.User, error)
	GetUserByEmail(email string) (*model.User, error)
	GetUserByUsername(email string) (*model.User, error)
	GetUserByProviderUID(providerID, providerUID string) (*model.User, error)
	GetUsers() ([]*model.User, error)
	HasUsers() (bool, error)

	// Tokens
	SaveToken(token *model.Token) error
	DeleteToken(token *model.Token) error
	GetToken(id string) (*model.Token, error)
	GetTokensForUser(userId string) ([]*model.Token, error)
	GetTokens() ([]*model.Token, error)

	// Space
	SaveSpace(space *model.Space, updateFields []string) error
	DeleteSpace(space *model.Space) error
	GetSpace(id string) (*model.Space, error)
	GetSpacesForUser(userId string) ([]*model.Space, error)
	GetSpaceByName(userId string, spaceName string) (*model.Space, error)
	GetSpacesByTemplateId(templateId string) ([]*model.Space, error)
	GetSpacesByPoolId(poolId string) ([]*model.Space, error)
	GetSpaces() ([]*model.Space, error)
	SaveSpaceUsageSample(sample *model.SpaceUsageSample) error
	GetSpaceUsageSample(id string) (*model.SpaceUsageSample, error)
	GetSpaceUsageSamples(spaceId string, bucketKind string, from time.Time, to time.Time) ([]*model.SpaceUsageSample, error)

	// Pools
	SavePoolDefinition(pool *model.PoolDefinition, updateFields []string) error
	DeletePoolDefinition(pool *model.PoolDefinition) error
	GetPoolDefinition(id string) (*model.PoolDefinition, error)
	GetPoolDefinitionByName(userId, name string) (*model.PoolDefinition, error)
	GetPoolDefinitions() ([]*model.PoolDefinition, error)
	GetPoolDefinitionsByUser(userId string) ([]*model.PoolDefinition, error)

	// Templates
	SaveTemplate(template *model.Template, updateFields []string) error
	DeleteTemplate(template *model.Template) error
	GetTemplate(id string) (*model.Template, error)
	GetTemplateByName(name string) (*model.Template, error)
	GetTemplates() ([]*model.Template, error)

	// Scripts
	SaveScript(script *model.Script, updateFields []string) error
	DeleteScript(script *model.Script) error
	GetScript(id string) (*model.Script, error)
	GetScripts() ([]*model.Script, error)
	GetScriptByName(name string) (*model.Script, error)
	GetScriptsByName(name string) ([]*model.Script, error)
	GetScriptByNameAndUser(name string, userId string) (*model.Script, error)
	GetScriptsByNameAndUser(name string, userId string) ([]*model.Script, error)

	// Event Sinks
	SaveEventSink(sink *model.EventSink, updateFields []string) error
	DeleteEventSink(sink *model.EventSink) error
	GetEventSink(id string) (*model.EventSink, error)
	GetEventSinks() ([]*model.EventSink, error)

	// Skills
	SaveSkill(skill *model.Skill, updateFields []string) error
	DeleteSkill(skill *model.Skill) error
	GetSkill(id string) (*model.Skill, error)
	GetSkills() ([]*model.Skill, error)
	GetSkillsByName(name string) ([]*model.Skill, error)
	GetSkillsByNameAndUser(name string, userId string) ([]*model.Skill, error)

	// Slash Commands
	SaveCommand(command *model.Command, updateFields []string) error
	DeleteCommand(command *model.Command) error
	GetCommand(id string) (*model.Command, error)
	GetCommands() ([]*model.Command, error)
	GetCommandsByName(name string) ([]*model.Command, error)
	GetCommandsByNameAndUser(name string, userId string) ([]*model.Command, error)

	// MCP Servers
	SaveMCPServer(server *model.MCPServer, updateFields []string) error
	DeleteMCPServer(server *model.MCPServer) error
	GetMCPServer(id string) (*model.MCPServer, error)
	GetMCPServers() ([]*model.MCPServer, error)
	GetMCPServersByUser(userId string) ([]*model.MCPServer, error)

	// Chat Conversations (server-side chat history, per-user)
	SaveConversation(conv *model.Conversation) error
	DeleteConversation(conv *model.Conversation) error
	GetConversation(userId string, id string) (*model.Conversation, error)
	GetConversationsByUser(userId string) ([]*model.Conversation, error)
	GetConversations() ([]*model.Conversation, error)
	// GetStaleConversations returns live (non-deleted) conversations whose
	// HLC UpdatedAt precedes the cutoff — candidates for retention tombstoning.
	GetStaleConversations(before time.Time) ([]*model.Conversation, error)
	// DeleteTombstonedConversationsBefore hard-deletes conversations that are
	// BOTH soft-deleted (tombstoned) AND older than the cutoff. This is the
	// reaper — the only place conversations are physically removed. It runs
	// only after tombstones have had time to gossip-propagate, so a tombstone
	// (newest HLC) always wins over any late-arriving live copy.
	DeleteTombstonedConversationsBefore(before time.Time) error

	// Groups
	SaveGroup(group *model.Group) error
	DeleteGroup(group *model.Group) error
	GetGroup(id string) (*model.Group, error)
	GetGroups() ([]*model.Group, error)

	// Responses
	SaveResponse(response *model.Response) error
	DeleteResponse(response *model.Response) error
	GetResponse(id string) (*model.Response, error)
	GetResponses() ([]*model.Response, error)
	GetResponsesByUser(userId string) ([]*model.Response, error)
	GetResponsesByStatus(status model.ResponseStatus) ([]*model.Response, error)

	// Template Variables
	SaveTemplateVar(variable *model.TemplateVar) error
	DeleteTemplateVar(variable *model.TemplateVar) error
	GetTemplateVar(id string) (*model.TemplateVar, error)
	GetTemplateVarByName(name string) (*model.TemplateVar, error)
	GetTemplateVars() ([]*model.TemplateVar, error)

	// Volumes
	SaveVolume(volume *model.Volume, updateFields []string) error
	DeleteVolume(volume *model.Volume) error
	GetVolume(id string) (*model.Volume, error)
	GetVolumeByName(name string) (*model.Volume, error)
	GetVolumes() ([]*model.Volume, error)

	// Roles
	SaveRole(role *model.Role) error
	DeleteRole(role *model.Role) error
	GetRole(id string) (*model.Role, error)
	GetRoles() ([]*model.Role, error)

	// Audit Logs
	HasAuditLog() bool
	SaveAuditLog(auditLog *model.AuditLogEntry) error
	GetAuditLogs(filter *model.AuditLogFilter, offset int, limit int) ([]*model.AuditLogEntry, int, error)
	GetAuditLogsForExport(filter *model.AuditLogFilter) ([]*model.AuditLogEntry, error)

	// Stack Definitions
	SaveStackDefinition(def *model.StackDefinition, updateFields []string) error
	DeleteStackDefinition(def *model.StackDefinition) error
	GetStackDefinition(id string) (*model.StackDefinition, error)
	GetStackDefinitions() ([]*model.StackDefinition, error)
	GetStackDefinitionsByUserId(userId string) ([]*model.StackDefinition, error)
	GetStackDefinitionByName(name string, userId string) (*model.StackDefinition, error)

	// Config Values
	GetCfgValues() ([]*model.CfgValue, error)
	GetCfgValue(name string) (*model.CfgValue, error)
	SaveCfgValue(cfgValue *model.CfgValue) error
}

DbDriver is the interface for the database drivers

func GetInstance

func GetInstance() DbDriver

Returns the database driver and on first call initializes it

type SessionStorage

type SessionStorage interface {
	SaveSession(session *model.Session) error
	DeleteSession(session *model.Session) error
	GetSession(id string) (*model.Session, error)
	GetSessionsForUser(userId string) ([]*model.Session, error)
	GetSessions() ([]*model.Session, error)
}

func GetSessionStorage

func GetSessionStorage() SessionStorage

Returns the caching database driver and on first call initializes it

Directories

Path Synopsis
drivers

Jump to

Keyboard shortcuts

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