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 ¶
- func Dir(name string) (string, error)
- func List() ([]string, error)
- func Remove(name string) error
- func Rename(oldName, newName string) error
- type Config
- type ConnectorsConfig
- func (cc *ConnectorsConfig) AddConnector(cfg core.ConnectorConfig)
- func (cc *ConnectorsConfig) DisableConnector(instanceID string) bool
- func (cc *ConnectorsConfig) EnableConnector(instanceID string) bool
- func (cc *ConnectorsConfig) GetConnector(instanceID string) (core.ConnectorConfig, bool)
- func (cc *ConnectorsConfig) GetFallbackConnectors() []core.ConnectorConfig
- func (cc *ConnectorsConfig) GetFallbacksFor(instanceID string) []core.ConnectorConfig
- func (cc *ConnectorsConfig) GetInputConnectors() []core.ConnectorConfig
- func (cc *ConnectorsConfig) GetOutputConnectors() []core.ConnectorConfig
- func (cc *ConnectorsConfig) RemoveConnector(instanceID string) bool
- func (cc *ConnectorsConfig) UpdateConnector(cfg core.ConnectorConfig) bool
- type OutputSettings
- type PipelineConfig
- type ProcessorSettings
- type RecoverSettings
- type Session
- func (s *Session) AddConnector(cfg core.ConnectorConfig)
- func (s *Session) AddOutputSetting(outputID string, config map[string]any)
- func (s *Session) ClearOutputSettings()
- func (s *Session) ConfigPath() string
- func (s *Session) CredentialsDir() string
- func (s *Session) DataDir() string
- func (s *Session) GetConnector(instanceID string) (core.ConnectorConfig, bool)
- func (s *Session) GetFallbackConnectors() []core.ConnectorConfig
- func (s *Session) GetInputConnectors() []core.ConnectorConfig
- func (s *Session) GetOutputConnectors() []core.ConnectorConfig
- func (s *Session) GetProcessorSetting(key string) (any, bool)
- func (s *Session) GetProcessorSettingBool(key string, defaultVal bool) bool
- func (s *Session) GetProcessorSettingString(key string, defaultVal string) string
- func (s *Session) ImportFolder(srcPath string) error
- func (s *Session) ImportTGZ(tgzPath string) error
- func (s *Session) ImportTGZMulti(tgzPaths []string, destDir string) error
- func (s *Session) ImportZip(zipPath string) error
- func (s *Session) ImportZipMulti(zipPaths []string, destDir string) error
- func (s *Session) IsConnectorBased() bool
- func (s *Session) ListConnectors() []core.ConnectorConfig
- func (s *Session) LogPath(name string) string
- func (s *Session) OutputPath() string
- func (s *Session) RemoveConnector(instanceID string) bool
- func (s *Session) Save() error
- func (s *Session) ServiceID() string
- func (s *Session) SetAutoProcess(enabled bool)
- func (s *Session) SetExternalSource(path string) error
- func (s *Session) SetIngesterID(ingesterID string)
- func (s *Session) SetParallelRetrieval(enabled bool)
- func (s *Session) SetProcessorSettings(settings ProcessorSettings)
- func (s *Session) SetServiceID(serviceID string)
- func (s *Session) SourcePath() string
- func (s *Session) UpdateConnector(cfg core.ConnectorConfig) bool
- type Source
- type SourceType
- type Status
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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 ¶
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 ¶
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 ¶
Session is the in-memory representation of a work session.
func CreateV2 ¶
CreateV2 creates a new session using the connector-based architecture. The session starts empty and connectors are added later.
func ListSessions ¶
ListSessions returns all sessions with their configs loaded.
func (*Session) AddConnector ¶
func (s *Session) AddConnector(cfg core.ConnectorConfig)
AddConnector adds a connector to this session.
func (*Session) AddOutputSetting ¶
AddOutputSetting adds an output configuration to the pipeline.
func (*Session) ClearOutputSettings ¶
func (s *Session) ClearOutputSettings()
ClearOutputSettings removes all output configurations.
func (*Session) ConfigPath ¶
ConfigPath returns the config.json path for a session.
func (*Session) CredentialsDir ¶
CredentialsDir returns the path for session-specific credentials.
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 ¶
GetProcessorSetting retrieves a single processor setting by key.
func (*Session) GetProcessorSettingBool ¶
GetProcessorSettingBool retrieves a boolean processor setting with a default.
func (*Session) GetProcessorSettingString ¶
GetProcessorSettingString retrieves a string processor setting with a default.
func (*Session) ImportFolder ¶
ImportFolder copies a takeout folder into the session's source/ directory.
func (*Session) ImportTGZ ¶
ImportTGZ extracts a .tar.gz / .tgz archive into the session's source/ directory.
func (*Session) ImportTGZMulti ¶
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) ImportZipMulti ¶
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 ¶
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) OutputPath ¶
OutputPath returns the absolute output directory.
func (*Session) RemoveConnector ¶
RemoveConnector removes a connector by instance ID.
func (*Session) ServiceID ¶
ServiceID returns the configured service ID, defaulting to "googlephotos" for backwards compatibility.
func (*Session) SetAutoProcess ¶
SetAutoProcess enables or disables automatic processing.
func (*Session) SetExternalSource ¶
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 ¶
SetIngesterID sets the ingester for this session's pipeline.
func (*Session) SetParallelRetrieval ¶
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 ¶
SetServiceID sets the service for this session's pipeline.
func (*Session) SourcePath ¶
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" )