session

package
v0.1.12 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2026 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Overview

Package session manages revoco work sessions.

Each session is a folder under ~/.revoco/sessions/<name>/ containing:

config.json      – session configuration (source, output, settings)
process.log      – processing pipeline audit log
recovery.log     – recovery download audit log
missing-files.json – generated report from Phase 8
failed.json      – failed recovery entries
output/          – processed files (non-destructive)
recovered/       – recovered files
source/          – imported takeout archive (if imported)

Sessions are non-destructive: originals are never modified. All work products live inside the session folder.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Dir

func Dir(name string) (string, error)

Dir returns the absolute path to a named session folder.

func List

func List() ([]string, error)

List returns all session names sorted alphabetically.

func Remove

func Remove(name string) error

Remove deletes a session and all its data permanently.

func Rename

func Rename(oldName, newName string) error

Rename changes the name of an existing session (renames the folder).

Types

type Config

type Config struct {
	Name               string          `json:"name"`
	Created            time.Time       `json:"created"`
	Updated            time.Time       `json:"updated"`
	Source             Source          `json:"source"`
	OutputDir          string          `json:"output_dir"` // relative to session dir, default "output"
	UseMove            bool            `json:"use_move"`
	DryRun             bool            `json:"dry_run"`
	Recover            RecoverSettings `json:"recover"`
	Status             Status          `json:"status"`
	LastPhaseCompleted int             `json:"last_phase_completed"`
	LastError          string          `json:"last_error,omitempty"`

	// Multi-service pipeline configuration (legacy)
	// DEPRECATED: Use Connectors for new sessions
	Pipeline PipelineConfig `json:"pipeline,omitempty"`

	// Connector-based configuration (new architecture)
	Connectors ConnectorsConfig `json:"connectors,omitempty"`

	// Version indicates the config schema version
	// 1 = legacy pipeline-based, 2 = connector-based
	Version int `json:"version,omitempty"`
}

Config is the persistent configuration for a session, stored as config.json.

func (*Config) IsConnectorBased

func (c *Config) IsConnectorBased() bool

IsConnectorBased returns true if this session uses the new connector architecture.

type ConnectorsConfig

type ConnectorsConfig struct {
	// Connectors holds all configured connector instances
	Connectors []core.ConnectorConfig `json:"connectors"`

	// ProcessorConfigs holds processor configuration
	ProcessorConfigs []core.ProcessorConfig `json:"processor_configs,omitempty"`

	// AutoProcess enables automatic processing after retrieval
	AutoProcess bool `json:"auto_process"`

	// ParallelRetrieval enables parallel data retrieval from multiple input connectors
	ParallelRetrieval bool `json:"parallel_retrieval"`

	// DetectedDataTypes stores data types found during scan
	DetectedDataTypes []core.DataType `json:"detected_data_types,omitempty"`

	// Stats holds current statistics
	Stats *core.DataStats `json:"stats,omitempty"`
}

ConnectorsConfig holds the connector-based configuration for a session.

func (*ConnectorsConfig) AddConnector

func (cc *ConnectorsConfig) AddConnector(cfg core.ConnectorConfig)

AddConnector adds a new connector configuration.

func (*ConnectorsConfig) DisableConnector

func (cc *ConnectorsConfig) DisableConnector(instanceID string) bool

DisableConnector disables a connector by instance ID.

func (*ConnectorsConfig) EnableConnector

func (cc *ConnectorsConfig) EnableConnector(instanceID string) bool

EnableConnector enables a connector by instance ID.

func (*ConnectorsConfig) GetConnector

func (cc *ConnectorsConfig) GetConnector(instanceID string) (core.ConnectorConfig, bool)

GetConnector returns a connector by instance ID.

func (*ConnectorsConfig) GetFallbackConnectors

func (cc *ConnectorsConfig) GetFallbackConnectors() []core.ConnectorConfig

GetFallbackConnectors returns all connectors configured as fallback.

func (*ConnectorsConfig) GetFallbacksFor

func (cc *ConnectorsConfig) GetFallbacksFor(instanceID string) []core.ConnectorConfig

GetFallbacksFor returns fallback connectors for a specific connector instance.

func (*ConnectorsConfig) GetInputConnectors

func (cc *ConnectorsConfig) GetInputConnectors() []core.ConnectorConfig

GetInputConnectors returns all connectors configured as input.

func (*ConnectorsConfig) GetOutputConnectors

func (cc *ConnectorsConfig) GetOutputConnectors() []core.ConnectorConfig

GetOutputConnectors returns all connectors configured as output.

func (*ConnectorsConfig) RemoveConnector

func (cc *ConnectorsConfig) RemoveConnector(instanceID string) bool

RemoveConnector removes a connector by instance ID.

func (*ConnectorsConfig) UpdateConnector

func (cc *ConnectorsConfig) UpdateConnector(cfg core.ConnectorConfig) bool

UpdateConnector updates an existing connector by instance ID.

type OutputSettings

type OutputSettings struct {
	OutputID string         `json:"output_id"` // registered output identifier
	Config   map[string]any `json:"config"`    // output-specific configuration
}

OutputSettings holds output-specific configuration.

type PipelineConfig

type PipelineConfig struct {
	ServiceID         string            `json:"service_id"`         // e.g., "googlephotos", "youtubemusic"
	IngesterID        string            `json:"ingester_id"`        // e.g., "folder", "zip", "tgz"
	ProcessorSettings ProcessorSettings `json:"processor_settings"` // service-specific processor config
	OutputSettings    []OutputSettings  `json:"output_settings"`    // one or more outputs
}

PipelineConfig holds the complete pipeline configuration for a session. DEPRECATED: Use ConnectorsConfig for new sessions.

type ProcessorSettings

type ProcessorSettings map[string]any

ProcessorSettings holds service-specific processor configuration. Each service can store arbitrary settings as a JSON object.

type RecoverSettings

type RecoverSettings struct {
	InputJSON   string  `json:"input_json"` // relative to session dir
	OutputDir   string  `json:"output_dir"` // relative to session dir
	Concurrency int     `json:"concurrency"`
	Delay       float64 `json:"delay"`
	MaxRetry    int     `json:"max_retry"`
	StartFrom   int     `json:"start_from"`
}

RecoverSettings holds recovery-specific configuration.

type Session

type Session struct {
	Config Config
	Dir    string // absolute path to session folder
}

Session is the in-memory representation of a work session.

func Create

func Create(name string) (*Session, error)

Create makes a new session with the given name.

func CreateV2

func CreateV2(name string) (*Session, error)

CreateV2 creates a new session using the connector-based architecture. The session starts empty and connectors are added later.

func ListSessions

func ListSessions() ([]*Session, error)

ListSessions returns all sessions with their configs loaded.

func Load

func Load(name string) (*Session, error)

Load reads an existing session from disk.

func (*Session) AddConnector

func (s *Session) AddConnector(cfg core.ConnectorConfig)

AddConnector adds a connector to this session.

func (*Session) AddOutputSetting

func (s *Session) AddOutputSetting(outputID string, config map[string]any)

AddOutputSetting adds an output configuration to the pipeline.

func (*Session) ClearOutputSettings

func (s *Session) ClearOutputSettings()

ClearOutputSettings removes all output configurations.

func (*Session) ConfigPath

func (s *Session) ConfigPath() string

ConfigPath returns the config.json path for a session.

func (*Session) CredentialsDir

func (s *Session) CredentialsDir() string

CredentialsDir returns the path for session-specific credentials.

func (*Session) DataDir

func (s *Session) DataDir() string

DataDir returns the path for storing imported data within the session.

func (*Session) GetConnector

func (s *Session) GetConnector(instanceID string) (core.ConnectorConfig, bool)

GetConnector returns a connector by instance ID.

func (*Session) GetFallbackConnectors

func (s *Session) GetFallbackConnectors() []core.ConnectorConfig

GetFallbackConnectors returns connectors configured as fallbacks.

func (*Session) GetInputConnectors

func (s *Session) GetInputConnectors() []core.ConnectorConfig

GetInputConnectors returns connectors configured for input.

func (*Session) GetOutputConnectors

func (s *Session) GetOutputConnectors() []core.ConnectorConfig

GetOutputConnectors returns connectors configured for output.

func (*Session) GetProcessorSetting

func (s *Session) GetProcessorSetting(key string) (any, bool)

GetProcessorSetting retrieves a single processor setting by key.

func (*Session) GetProcessorSettingBool

func (s *Session) GetProcessorSettingBool(key string, defaultVal bool) bool

GetProcessorSettingBool retrieves a boolean processor setting with a default.

func (*Session) GetProcessorSettingString

func (s *Session) GetProcessorSettingString(key string, defaultVal string) string

GetProcessorSettingString retrieves a string processor setting with a default.

func (*Session) ImportFolder

func (s *Session) ImportFolder(srcPath string) error

ImportFolder copies a takeout folder into the session's source/ directory.

func (*Session) ImportTGZ

func (s *Session) ImportTGZ(tgzPath string) error

ImportTGZ extracts a .tar.gz / .tgz archive into the session's source/ directory.

func (*Session) ImportTGZMulti

func (s *Session) ImportTGZMulti(tgzPaths []string, destDir string) error

ImportTGZMulti extracts multiple .tgz/.tar.gz archives into a custom destination directory. If destDir is empty, it defaults to <session>/source. The original paths are stored as comma-separated values in OriginalPath.

func (*Session) ImportZip

func (s *Session) ImportZip(zipPath string) error

ImportZip extracts a .zip archive into the session's source/ directory.

func (*Session) ImportZipMulti

func (s *Session) ImportZipMulti(zipPaths []string, destDir string) error

ImportZipMulti extracts multiple .zip archives into a custom destination directory. If destDir is empty, it defaults to <session>/source. The original paths are stored as comma-separated values in OriginalPath.

func (*Session) IsConnectorBased

func (s *Session) IsConnectorBased() bool

IsConnectorBased returns true if this session uses the new connector architecture.

func (*Session) ListConnectors

func (s *Session) ListConnectors() []core.ConnectorConfig

ListConnectors returns all connector configurations.

func (*Session) LogPath

func (s *Session) LogPath(name string) string

LogPath returns the path for a log file within the session.

func (*Session) OutputPath

func (s *Session) OutputPath() string

OutputPath returns the absolute output directory.

func (*Session) RemoveConnector

func (s *Session) RemoveConnector(instanceID string) bool

RemoveConnector removes a connector by instance ID.

func (*Session) Save

func (s *Session) Save() error

Save persists the session config to disk.

func (*Session) ServiceID

func (s *Session) ServiceID() string

ServiceID returns the configured service ID, defaulting to "googlephotos" for backwards compatibility.

func (*Session) SetAutoProcess

func (s *Session) SetAutoProcess(enabled bool)

SetAutoProcess enables or disables automatic processing.

func (*Session) SetExternalSource

func (s *Session) SetExternalSource(path string) error

SetExternalSource points the session at an external folder without copying. This is the lightweight "link" mode — the original data stays in place.

func (*Session) SetIngesterID

func (s *Session) SetIngesterID(ingesterID string)

SetIngesterID sets the ingester for this session's pipeline.

func (*Session) SetParallelRetrieval

func (s *Session) SetParallelRetrieval(enabled bool)

SetParallelRetrieval enables or disables parallel data retrieval.

func (*Session) SetProcessorSettings

func (s *Session) SetProcessorSettings(settings ProcessorSettings)

SetProcessorSettings sets the processor configuration for this session.

func (*Session) SetServiceID

func (s *Session) SetServiceID(serviceID string)

SetServiceID sets the service for this session's pipeline.

func (*Session) SourcePath

func (s *Session) SourcePath() string

SourcePath returns the effective source directory for processing. If the takeout was imported into the session, this is the imported path. Otherwise it is the original external path.

func (*Session) UpdateConnector

func (s *Session) UpdateConnector(cfg core.ConnectorConfig) bool

UpdateConnector updates an existing connector configuration.

type Source

type Source struct {
	Type         SourceType `json:"type"`
	OriginalPath string     `json:"original_path"` // path the user provided
	ImportedPath string     `json:"imported_path"` // path inside session (if imported)
}

Source describes the input data for a session.

type SourceType

type SourceType string

SourceType describes how the takeout archive was provided.

const (
	SourceFolder SourceType = "folder"
	SourceZip    SourceType = "zip"
	SourceTGZ    SourceType = "tgz"
)

type Status

type Status string

Status describes the current state of a session.

const (
	StatusIdle       Status = "idle"
	StatusProcessing Status = "processing"
	StatusRecovering Status = "recovering"
	StatusDone       Status = "done"
	StatusError      Status = "error"
)

Directories

Path Synopsis
Package schema defines session configuration schemas and migration functions.
Package schema defines session configuration schemas and migration functions.

Jump to

Keyboard shortcuts

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