database

package
v0.33.0 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 2026 License: Apache-2.0 Imports: 11 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 IsSessionDriverShared

func IsSessionDriverShared() bool

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

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