storage

package
v1.71.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2025 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FileStorage

type FileStorage struct {
	// contains filtered or unexported fields
}

FileStorage implements file-based session persistence

func NewFileStorage

func NewFileStorage(filePath string, syncInterval int, encryptSecrets bool) (*FileStorage, error)

NewFileStorage creates a new file storage instance

func (*FileStorage) Close

func (fs *FileStorage) Close() error

Close stops the sync routine and performs final sync

func (*FileStorage) Delete

func (fs *FileStorage) Delete(sessionID string) error

Delete removes a session and syncs to file

func (*FileStorage) Load

func (fs *FileStorage) Load(sessionID string) (*SessionData, error)

Load retrieves a session by ID

func (*FileStorage) LoadAll

func (fs *FileStorage) LoadAll() ([]*SessionData, error)

LoadAll retrieves all sessions

func (*FileStorage) Save

func (fs *FileStorage) Save(session *SessionData) error

Save stores a session and syncs to file

func (*FileStorage) Update

func (fs *FileStorage) Update(session *SessionData) error

Update updates an existing session

type MemoryStorage

type MemoryStorage struct {
	// contains filtered or unexported fields
}

MemoryStorage implements in-memory session storage

func NewMemoryStorage

func NewMemoryStorage() *MemoryStorage

NewMemoryStorage creates a new memory storage instance

func (*MemoryStorage) Close

func (m *MemoryStorage) Close() error

Close is a no-op for memory storage

func (*MemoryStorage) Delete

func (m *MemoryStorage) Delete(sessionID string) error

Delete removes a session from memory

func (*MemoryStorage) Load

func (m *MemoryStorage) Load(sessionID string) (*SessionData, error)

Load retrieves a session by ID

func (*MemoryStorage) LoadAll

func (m *MemoryStorage) LoadAll() ([]*SessionData, error)

LoadAll retrieves all sessions

func (*MemoryStorage) Save

func (m *MemoryStorage) Save(session *SessionData) error

Save stores a session in memory

func (*MemoryStorage) Update

func (m *MemoryStorage) Update(session *SessionData) error

Update updates an existing session

type S3Storage added in v1.9.1

type S3Storage struct {
	// contains filtered or unexported fields
}

S3Storage implements Storage interface using AWS S3

func NewS3Storage added in v1.9.1

func NewS3Storage(bucket, region, prefix, endpoint, accessKey, secretKey string, encryptSecrets bool) (*S3Storage, error)

NewS3Storage creates a new S3 storage instance

func (*S3Storage) Close added in v1.9.1

func (s *S3Storage) Close() error

Close cleans up resources

func (*S3Storage) Delete added in v1.9.1

func (s *S3Storage) Delete(sessionID string) error

Delete removes a session from S3

func (*S3Storage) Load added in v1.9.1

func (s *S3Storage) Load(sessionID string) (*SessionData, error)

Load retrieves a session from S3

func (*S3Storage) LoadAll added in v1.9.1

func (s *S3Storage) LoadAll() ([]*SessionData, error)

LoadAll retrieves all sessions from S3

func (*S3Storage) Save added in v1.9.1

func (s *S3Storage) Save(session *SessionData) error

Save stores a session in S3

func (*S3Storage) Update added in v1.9.1

func (s *S3Storage) Update(session *SessionData) error

Update updates an existing session in S3

type SessionData

type SessionData struct {
	ID          string            `json:"id"`
	Port        int               `json:"port"`
	StartedAt   time.Time         `json:"started_at"`
	UserID      string            `json:"user_id"`
	Status      string            `json:"status"`
	Environment map[string]string `json:"environment"`
	Tags        map[string]string `json:"tags"`
	ProcessID   int               `json:"process_id,omitempty"` // For validation on recovery
	Command     []string          `json:"command,omitempty"`    // To recreate process if needed
	WorkingDir  string            `json:"working_dir,omitempty"`
}

SessionData represents the persistable session data

type Storage

type Storage interface {
	// Save persists a session to storage
	Save(session *SessionData) error

	// Load retrieves a session by ID
	Load(sessionID string) (*SessionData, error)

	// LoadAll retrieves all sessions
	LoadAll() ([]*SessionData, error)

	// Delete removes a session from storage
	Delete(sessionID string) error

	// Update updates an existing session
	Update(session *SessionData) error

	// Close cleans up any resources
	Close() error
}

Storage defines the interface for session persistence

func NewStorage

func NewStorage(config *StorageConfig) (Storage, error)

NewStorage creates a storage instance based on the configuration

type StorageConfig

type StorageConfig struct {
	Type string `json:"type"` // "memory", "file", "sqlite", "s3"

	// File storage config
	FilePath       string `json:"file_path,omitempty"`
	SyncInterval   int    `json:"sync_interval_seconds,omitempty"`
	EncryptSecrets bool   `json:"encrypt_sensitive_data,omitempty"`

	// S3 storage config
	S3Bucket    string `json:"s3_bucket,omitempty"`
	S3Region    string `json:"s3_region,omitempty"`
	S3Prefix    string `json:"s3_prefix,omitempty"`
	S3Endpoint  string `json:"s3_endpoint,omitempty"` // For custom S3-compatible services
	S3AccessKey string `json:"s3_access_key,omitempty"`
	S3SecretKey string `json:"s3_secret_key,omitempty"`

	// Future: Database config
	DatabaseURL string `json:"database_url,omitempty"`
}

StorageConfig holds configuration for storage backends

Jump to

Keyboard shortcuts

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