db

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AgentRegistrationCode

type AgentRegistrationCode struct {
	Code        string
	UserID      string
	WorkspaceID string
	CreatedAt   time.Time
	ExpiresAt   time.Time
	Used        bool
}

type DB

type DB struct {
	*sql.DB
}

DB wraps a *sql.DB with migration support.

func Open

func Open(databaseURL string) (*DB, error)

Open connects to PostgreSQL and runs migrations.

func (*DB) AddWorkspaceMember

func (db *DB) AddWorkspaceMember(workspaceID, userID, role string) error

func (*DB) ConsumeAgentRegistrationCode

func (db *DB) ConsumeAgentRegistrationCode(code string) (*AgentRegistrationCode, error)

ConsumeAgentRegistrationCode atomically validates and marks a code as used. Returns the code record if valid, nil if not found/expired/used.

func (*DB) CountSandboxesByWorkspace added in v0.7.0

func (db *DB) CountSandboxesByWorkspace(workspaceID string) (int, error)

func (*DB) CountUsers added in v0.6.1

func (db *DB) CountUsers() (int, error)

func (*DB) CountWorkspacesOwnedByUser added in v0.7.0

func (db *DB) CountWorkspacesOwnedByUser(userID string) (int, error)

func (*DB) CreateAgentRegistrationCode

func (db *DB) CreateAgentRegistrationCode(code, userID, workspaceID string, expiresAt time.Time) error

CreateAgentRegistrationCode inserts a new one-time registration code.

func (*DB) CreateLocalSandbox

func (db *DB) CreateLocalSandbox(id, workspaceID, name, sandboxType, opencodePassword, proxyToken, tunnelToken, shortID string) error

CreateLocalSandbox inserts a local agent sandbox with is_local=true.

func (*DB) CreateOIDCIdentity

func (db *DB) CreateOIDCIdentity(provider, subject, userID string, email *string) error

func (*DB) CreateSandbox

func (db *DB) CreateSandbox(id, workspaceID, name, sandboxType, sandboxName, opencodePassword, proxyToken, telegramBotToken, gatewayToken, shortID string, cpuMillicores int, memoryBytes int64) error

func (*DB) CreateToken

func (db *DB) CreateToken(token, userID string, expiresAt time.Time) error

func (*DB) CreateUser

func (db *DB) CreateUser(id, username, passwordHash string) error

func (*DB) CreateUserWithEmail

func (db *DB) CreateUserWithEmail(id, username string, passwordHash *string, email *string) error

func (*DB) CreateWorkspace

func (db *DB) CreateWorkspace(id, name string) error

func (*DB) DeleteExpiredTokens

func (db *DB) DeleteExpiredTokens() error

func (*DB) DeleteSandbox

func (db *DB) DeleteSandbox(id string) error

func (*DB) DeleteUserQuota added in v0.7.0

func (db *DB) DeleteUserQuota(userID string) error

func (*DB) DeleteWorkspace

func (db *DB) DeleteWorkspace(id string) error

func (*DB) GetAllWorkspaceNamespaces

func (db *DB) GetAllWorkspaceNamespaces() ([]string, error)

func (*DB) GetOIDCIdentity

func (db *DB) GetOIDCIdentity(provider, subject string) (*OIDCIdentity, error)

func (*DB) GetSandbox

func (db *DB) GetSandbox(id string) (*Sandbox, error)

func (*DB) GetSandboxByProxyToken

func (db *DB) GetSandboxByProxyToken(proxyToken string) (*Sandbox, error)

func (*DB) GetSandboxByShortID

func (db *DB) GetSandboxByShortID(shortID string) (*Sandbox, error)

func (*DB) GetSandboxByTunnelToken

func (db *DB) GetSandboxByTunnelToken(sandboxID, tunnelToken string) (*Sandbox, error)

GetSandboxByTunnelToken finds a local sandbox by its tunnel token.

func (*DB) GetSystemSetting added in v0.7.0

func (db *DB) GetSystemSetting(key string) (string, error)

func (*DB) GetUserByEmail

func (db *DB) GetUserByEmail(email string) (*User, error)

func (*DB) GetUserByID

func (db *DB) GetUserByID(id string) (*User, error)

func (*DB) GetUserByUsername

func (db *DB) GetUserByUsername(username string) (*User, error)

func (*DB) GetUserQuota added in v0.7.0

func (db *DB) GetUserQuota(userID string) (*UserQuota, error)

func (*DB) GetWorkspace

func (db *DB) GetWorkspace(id string) (*Workspace, error)

func (*DB) GetWorkspaceMember

func (db *DB) GetWorkspaceMember(workspaceID, userID string) (*WorkspaceMember, error)

func (*DB) GetWorkspaceMemberRole

func (db *DB) GetWorkspaceMemberRole(workspaceID, userID string) (string, error)

func (*DB) IsWorkspaceMember

func (db *DB) IsWorkspaceMember(workspaceID, userID string) (bool, error)

func (*DB) ListAllActiveSandboxNames

func (db *DB) ListAllActiveSandboxNames() ([]string, error)

func (*DB) ListAllSandboxes added in v0.6.1

func (db *DB) ListAllSandboxes() ([]*Sandbox, error)

func (*DB) ListAllUsers added in v0.6.1

func (db *DB) ListAllUsers() ([]*User, error)

func (*DB) ListAllWorkspaces added in v0.6.1

func (db *DB) ListAllWorkspaces() ([]*Workspace, error)

func (*DB) ListIdleSandboxes

func (db *DB) ListIdleSandboxes(idleTimeout time.Duration) ([]*Sandbox, error)

func (*DB) ListSandboxesByWorkspace

func (db *DB) ListSandboxesByWorkspace(workspaceID string) ([]*Sandbox, error)

func (*DB) ListWorkspaceMembers

func (db *DB) ListWorkspaceMembers(workspaceID string) ([]*WorkspaceMember, error)

func (*DB) ListWorkspacesByUser

func (db *DB) ListWorkspacesByUser(userID string) ([]*Workspace, error)

func (*DB) ListWorkspacesWithoutNamespace

func (db *DB) ListWorkspacesWithoutNamespace() ([]*Workspace, error)

func (*DB) RemoveWorkspaceMember

func (db *DB) RemoveWorkspaceMember(workspaceID, userID string) error

func (*DB) SetSystemSetting added in v0.7.0

func (db *DB) SetSystemSetting(key, value string) error

func (*DB) SetUserQuota added in v0.7.0

func (db *DB) SetUserQuota(userID string, maxWorkspaces *int, maxSandboxesPerWorkspace *int,
	workspaceDriveSize, sandboxCPU, sandboxMemory, idleTimeout,
	wsMaxTotalCPU, wsMaxTotalMemory, wsMaxIdleTimeout *string) error

func (*DB) SetWorkspaceNamespace

func (db *DB) SetWorkspaceNamespace(id, namespace string) error

func (*DB) SumWorkspaceSandboxResources added in v0.7.0

func (db *DB) SumWorkspaceSandboxResources(workspaceID string) (cpuMillis int64, memBytes int64, err error)

SumWorkspaceSandboxResources returns the total CPU (millicores) and memory (bytes) allocated by non-offline sandboxes in a workspace.

func (*DB) UpdateSandboxActivity

func (db *DB) UpdateSandboxActivity(id string) error

func (*DB) UpdateSandboxHeartbeat

func (db *DB) UpdateSandboxHeartbeat(id string) error

UpdateSandboxHeartbeat updates the last_heartbeat_at timestamp.

func (*DB) UpdateSandboxPodIP

func (db *DB) UpdateSandboxPodIP(id, podIP string) error

func (*DB) UpdateSandboxSandboxName

func (db *DB) UpdateSandboxSandboxName(id, sandboxName string) error

func (*DB) UpdateSandboxStatus

func (db *DB) UpdateSandboxStatus(id, status string) error

func (*DB) UpdateUserEmail

func (db *DB) UpdateUserEmail(userID, email string) error

func (*DB) UpdateUserRole added in v0.6.1

func (db *DB) UpdateUserRole(userID, role string) error

func (*DB) UpdateWorkspaceDiskPVC

func (db *DB) UpdateWorkspaceDiskPVC(id, pvcName string) error

func (*DB) UpdateWorkspaceMemberRole

func (db *DB) UpdateWorkspaceMemberRole(workspaceID, userID, role string) error

func (*DB) ValidateToken

func (db *DB) ValidateToken(token string) (string, error)

type OIDCIdentity

type OIDCIdentity struct {
	Provider  string
	Subject   string
	UserID    string
	Email     *string
	CreatedAt time.Time
}

type Sandbox

type Sandbox struct {
	ID               string
	WorkspaceID      string
	Name             string
	Type             string
	Status           string
	ShortID          sql.NullString
	SandboxName      sql.NullString
	PodIP            sql.NullString
	OpencodePassword sql.NullString
	ProxyToken       sql.NullString
	TelegramBotToken sql.NullString
	GatewayToken     sql.NullString
	LastActivityAt   sql.NullTime
	CreatedAt        time.Time
	PausedAt         sql.NullTime
	IsLocal          bool
	TunnelToken      sql.NullString
	LastHeartbeatAt  sql.NullTime
	CPUMillicores    *int
	MemoryBytes      *int64
}

type User

type User struct {
	ID           string
	Username     string
	PasswordHash *string
	Email        *string
	Role         string
	CreatedAt    time.Time
}

type UserQuota added in v0.7.0

type UserQuota struct {
	UserID                   string
	MaxWorkspaces            *int
	MaxSandboxesPerWorkspace *int
	WorkspaceDriveSize       *string
	SandboxCPU               *string
	SandboxMemory            *string
	IdleTimeout              *string
	WsMaxTotalCPU            *string
	WsMaxTotalMemory         *string
	WsMaxIdleTimeout         *string
	UpdatedAt                time.Time
}

type Workspace

type Workspace struct {
	ID           string
	Name         string
	DiskPVCName  sql.NullString
	K8sNamespace sql.NullString
	CreatedAt    time.Time
	UpdatedAt    time.Time
}

type WorkspaceMember

type WorkspaceMember struct {
	WorkspaceID string
	UserID      string
	Role        string
	CreatedAt   time.Time
}

Jump to

Keyboard shortcuts

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