Documentation
¶
Index ¶
- func ApplyToConfig(base *config.Config, runtime *RuntimeSettings) *config.Config
- func EffectiveBackfillUntilDateByGroup(indexing *IndexingRuntimeSettings) map[string]string
- func EffectiveNewsgroupNames(indexing *IndexingRuntimeSettings) []string
- func RuntimeConfigured(in *RuntimeSettings) bool
- func ToConfigServers(servers []ServerRuntimeSettings) []config.ServerConfig
- func ValidateArrIntegrations(integrations []ArrIntegrationRuntimeSettings) error
- type AggregatorDownloadResult
- type AggregatorModule
- type AggregatorRuntimeSettings
- type AggregatorSourcesRuntimeSettings
- type ArrIntegrationRuntimeSettings
- type ArrNotifier
- type BlobStore
- type Context
- func (ctx *Context) AddCloser(c io.Closer)
- func (ctx *Context) Close()
- func (ctx *Context) CurrentConfig() *config.Config
- func (ctx *Context) RegisterRuntimeModules(modules ...RuntimeModule)
- func (ctx *Context) RuntimeModule(name string) RuntimeModule
- func (ctx *Context) RuntimeModules() []RuntimeModule
- type ControlPlaneCapabilities
- type DownloadRuntimeSettings
- type Downloader
- type DownloaderCommands
- type DownloaderModule
- type DownloaderQueries
- type IndexerAggregator
- type IndexerRuntimeSettings
- type IndexingDeferredBackfillRuntimeSettings
- type IndexingInspectRuntimeSettings
- type IndexingMaintenanceTaskRuntimeSettings
- type IndexingMatchRuntimeSettings
- type IndexingMaterializedGroupRuntimeSettings
- type IndexingMemoryGuardRuntimeSettings
- type IndexingPreDBRuntimeSettings
- type IndexingProviderGroupInventoryRuntimeSettings
- type IndexingRecoveryAdmissionRuntimeSettings
- type IndexingReleaseRuntimeSettings
- type IndexingRetentionRuntimeSettings
- type IndexingRuntimeSettings
- type IndexingScrapeGroupRuntimeSettings
- type IndexingScrapeTierRuntimeSettings
- type IndexingSourceWindowRuntimeSettings
- type IndexingStageRuntimeSettings
- type IndexingStorageGuardRuntimeSettings
- type IndexingTMDBRuntimeSettings
- type IndexingWildcardRuleRuntimeSettings
- type JobStore
- type ModuleCapability
- type NNTPManager
- type NNTPModuleRuntimeStats
- type NNTPPoolRuntimeSettings
- type NNTPProviderRuntimeStats
- type NNTPRuntimeStats
- type NNTPScopeRuntimeStats
- type NZBParser
- type PayloadCacheStore
- type PayloadFetcher
- type Processor
- type QueueAddRequest
- type QueueFileStore
- type QueueManager
- type ReleaseResolver
- type RuntimeCheck
- type RuntimeModule
- type RuntimeSettings
- func ApplyPatch(current *RuntimeSettings, patch *RuntimeSettingsPatch) *RuntimeSettings
- func CloneRuntimeSettings(in *RuntimeSettings) *RuntimeSettings
- func DefaultRuntimeSettings() *RuntimeSettings
- func FromConfig(cfg *config.Config) *RuntimeSettings
- func RedactedCopy(in *RuntimeSettings) *RuntimeSettings
- func WithRuntimeDefaults(in *RuntimeSettings) *RuntimeSettings
- type RuntimeSettingsPatch
- type RuntimeToggle
- type SearchRequest
- type ServerRuntimeSettings
- type SettingsAdmin
- type SettingsCapability
- type SettingsStore
- type UsenetIndexCatalog
- type UsenetIndexStore
- type UsenetIndexerService
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ApplyToConfig ¶ added in v0.6.1
func ApplyToConfig(base *config.Config, runtime *RuntimeSettings) *config.Config
ApplyToConfig applies runtime-editable settings on top of bootstrap config.
func EffectiveBackfillUntilDateByGroup ¶ added in v0.8.0
func EffectiveBackfillUntilDateByGroup(indexing *IndexingRuntimeSettings) map[string]string
func EffectiveNewsgroupNames ¶ added in v0.8.0
func EffectiveNewsgroupNames(indexing *IndexingRuntimeSettings) []string
func RuntimeConfigured ¶ added in v0.7.1
func RuntimeConfigured(in *RuntimeSettings) bool
func ToConfigServers ¶ added in v0.7.1
func ToConfigServers(servers []ServerRuntimeSettings) []config.ServerConfig
func ValidateArrIntegrations ¶ added in v0.6.1
func ValidateArrIntegrations(integrations []ArrIntegrationRuntimeSettings) error
Types ¶
type AggregatorDownloadResult ¶ added in v0.6.1
type AggregatorDownloadResult struct {
Release *domain.Release
Reader io.ReadCloser
RedirectURL string
}
type AggregatorModule ¶ added in v0.6.1
type AggregatorRuntimeSettings ¶ added in v0.7.1
type AggregatorRuntimeSettings struct {
Sources AggregatorSourcesRuntimeSettings `json:"sources,omitempty"`
}
type AggregatorSourcesRuntimeSettings ¶ added in v0.7.1
type AggregatorSourcesRuntimeSettings struct {
LocalBlob RuntimeToggle `json:"local_blob,omitempty"`
UsenetIndexer RuntimeToggle `json:"usenet_indexer,omitempty"`
}
type ArrIntegrationRuntimeSettings ¶ added in v0.6.1
type ArrNotifier ¶ added in v0.6.0
type BlobStore ¶ added in v0.6.0
type BlobStore interface {
// Blobs: File System
GetObjectReader(key string) (io.ReadCloser, error)
CreateObjectWriter(key string) (io.WriteCloser, error)
SaveObjectAtomically(key string, data []byte) error
ExistsObject(key string) bool
GetNZBReader(key string) (io.ReadCloser, error)
CreateNZBWriter(key string) (io.WriteCloser, error)
SaveNZBAtomically(key string, data []byte) error
Exists(key string) bool
}
type Context ¶
type Context struct {
BootstrapConfig *config.Config
Config *config.Config
Logger *logger.Logger
DisableReleasePurgeArchivedSources bool
// High-level interfaces for services to use
NNTP NNTPManager
Aggregator IndexerAggregator
Resolver ReleaseResolver
UsenetIndexer UsenetIndexerService
Processor Processor
Downloader Downloader
Queue QueueManager
NZBParser NZBParser
JobStore JobStore
QueueFileStore QueueFileStore
BlobStore BlobStore
IndexerArchiveStore BlobStore
PayloadFetcher PayloadFetcher
PayloadCacheStore PayloadCacheStore
SettingsStore SettingsStore
PGIndexStore UsenetIndexStore
ArrNotifier ArrNotifier
DownloaderModule DownloaderModule
AggregatorModule AggregatorModule
SettingsAdmin SettingsAdmin
ExtractionEnabled bool
// contains filtered or unexported fields
}
Context hold the core environment and shared resources for GoNZB. It acts as the "Single Source of Truth" for the application state.
func NewContext ¶
NewContext returns the shared application container. Concrete runtime construction lives in internal/runtime/wiring.
func (*Context) AddCloser ¶ added in v0.6.0
allow runtime wiring (from main) to register additional closers.
func (*Context) CurrentConfig ¶ added in v0.6.1
func (*Context) RegisterRuntimeModules ¶ added in v0.6.1
func (ctx *Context) RegisterRuntimeModules(modules ...RuntimeModule)
func (*Context) RuntimeModule ¶ added in v0.6.1
func (ctx *Context) RuntimeModule(name string) RuntimeModule
func (*Context) RuntimeModules ¶ added in v0.6.1
func (ctx *Context) RuntimeModules() []RuntimeModule
type ControlPlaneCapabilities ¶ added in v0.7.1
type ControlPlaneCapabilities struct {
Modules map[string]ModuleCapability `json:"modules"`
Settings SettingsCapability `json:"settings"`
Revision int64 `json:"revision,omitempty"`
}
type DownloadRuntimeSettings ¶ added in v0.6.1
type Downloader ¶ added in v0.5.0
type DownloaderCommands ¶ added in v0.6.1
type DownloaderCommands interface {
EnqueueByReleaseID(ctx context.Context, sourceKind, releaseID, title string) (*domain.QueueItem, error)
EnqueueNZB(ctx context.Context, filename string, file io.Reader) (*domain.QueueItem, error)
EnqueueNZBWithCategory(ctx context.Context, filename, category string, file io.Reader) (*domain.QueueItem, error)
Cancel(id string) bool
CancelMany(ids []string) int
DeleteMany(ctx context.Context, ids []string) (int64, error)
ClearHistory(ctx context.Context) (int64, error)
Pause() bool
Resume() bool
}
type DownloaderModule ¶ added in v0.6.1
type DownloaderModule interface {
Commands() DownloaderCommands
Queries() DownloaderQueries
}
type DownloaderQueries ¶ added in v0.6.1
type DownloaderQueries interface {
ListActive() []*domain.QueueItem
ListHistory(ctx context.Context, status string, limit, offset int) ([]*domain.QueueItem, int, error)
GetActiveItem() *domain.QueueItem
GetItem(ctx context.Context, id string) (*domain.QueueItem, error)
GetItemFiles(ctx context.Context, id string) ([]*domain.DownloadFile, error)
GetItemEvents(ctx context.Context, id string) ([]*domain.QueueItemEvent, error)
IsPaused() bool
}
type IndexerAggregator ¶ added in v0.6.0
type IndexerAggregator interface {
SearchAll(ctx context.Context, query string) ([]*domain.Release, error)
SearchAllWithRequest(ctx context.Context, req SearchRequest) ([]*domain.Release, error)
GetNZB(ctx context.Context, res *domain.Release) (io.ReadCloser, error)
GetResultByID(ctx context.Context, id string) (*domain.Release, error)
}
Manager defines the contract for our NZB search and download engine.
type IndexerRuntimeSettings ¶ added in v0.6.1
type IndexingDeferredBackfillRuntimeSettings ¶ added in v0.8.0
type IndexingDeferredBackfillRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
MaxRangesPerRun int `json:"max_ranges_per_run,omitempty"`
MaxArticlesPerRangeChunk int `json:"max_articles_per_range_chunk,omitempty"`
RunOnlyBelowQueueRatio float64 `json:"run_only_below_queue_ratio,omitempty"`
}
type IndexingInspectRuntimeSettings ¶ added in v0.7.0
type IndexingInspectRuntimeSettings struct {
WorkDir string `json:"work_dir,omitempty"`
WorkspaceBackend string `json:"workspace_backend,omitempty"`
MemoryWorkDir string `json:"memory_work_dir,omitempty"`
MaxBytes int64 `json:"max_bytes,omitempty"`
MinBinaryBytes int64 `json:"min_binary_bytes,omitempty"`
MaxBinaryBytes int64 `json:"max_binary_bytes,omitempty"`
RequireExpectedFileCount bool `json:"require_expected_file_count,omitempty"`
BlockedMagicHex []string `json:"blocked_magic_hex,omitempty"`
MaxArchiveDepth int `json:"max_archive_depth,omitempty"`
ToolTimeoutSecs int `json:"tool_timeout_seconds,omitempty"`
FFmpegPath string `json:"ffmpeg_path,omitempty"`
FFProbePath string `json:"ffprobe_path,omitempty"`
SevenZipPath string `json:"seven_zip_path,omitempty"`
UnrarPath string `json:"unrar_path,omitempty"`
PAR2Path string `json:"par2_path,omitempty"`
}
type IndexingMaintenanceTaskRuntimeSettings ¶ added in v0.8.0
type IndexingMaintenanceTaskRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
ScheduleEnabled bool `json:"schedule_enabled,omitempty"`
IntervalHours int `json:"interval_hours,omitempty"`
BatchSize int `json:"batch_size,omitempty"`
LastDryRunAt string `json:"last_dry_run_at,omitempty"`
}
type IndexingMatchRuntimeSettings ¶ added in v0.7.0
type IndexingMaterializedGroupRuntimeSettings ¶ added in v0.8.0
type IndexingMaterializedGroupRuntimeSettings struct {
GroupName string `json:"group_name,omitempty"`
Enabled bool `json:"enabled,omitempty"`
BackfillUntilDate string `json:"backfill_until_date,omitempty"`
ProviderIDs []string `json:"provider_ids,omitempty"`
RuleIDs []string `json:"rule_ids,omitempty"`
}
type IndexingMemoryGuardRuntimeSettings ¶ added in v0.8.0
type IndexingPreDBRuntimeSettings ¶ added in v0.7.0
type IndexingPreDBRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
IntervalMinutes float64 `json:"interval_minutes,omitempty"`
BatchSize int `json:"batch_size,omitempty"`
BackoffSeconds int `json:"backoff_seconds,omitempty"`
Provider string `json:"provider,omitempty"`
BaseURL string `json:"base_url,omitempty"`
FeedURL string `json:"feed_url,omitempty"`
DumpURL string `json:"dump_url,omitempty"`
HTTPTimeoutSeconds int `json:"http_timeout_seconds,omitempty"`
BackfillPageSize int `json:"backfill_page_size,omitempty"`
MaxBackfillPages int `json:"max_backfill_pages,omitempty"`
}
type IndexingProviderGroupInventoryRuntimeSettings ¶ added in v0.8.0
type IndexingProviderGroupInventoryRuntimeSettings struct {
ProviderID string `json:"provider_id,omitempty"`
ProviderName string `json:"provider_name,omitempty"`
GroupName string `json:"group_name,omitempty"`
High int64 `json:"high,omitempty"`
Low int64 `json:"low,omitempty"`
Status string `json:"status,omitempty"`
ScannedAt string `json:"scanned_at,omitempty"`
}
type IndexingRecoveryAdmissionRuntimeSettings ¶ added in v0.8.0
type IndexingRecoveryAdmissionRuntimeSettings struct {
TargetHotLagHours int `json:"target_hot_lag_hours,omitempty"`
TargetWarmLagHours int `json:"target_warm_lag_hours,omitempty"`
SoftQueueHours int `json:"soft_queue_hours,omitempty"`
HardQueueMultiplier int `json:"hard_queue_multiplier,omitempty"`
AbsoluteHardQueueCap int `json:"absolute_hard_queue_cap,omitempty"`
EWMAWindowMinutes int `json:"ewma_window_minutes,omitempty"`
BootstrapProbesPerHour int `json:"bootstrap_probes_per_hour,omitempty"`
Priority0OverflowCap int `json:"priority0_overflow_cap,omitempty"`
Priority0ReservoirBatches int `json:"priority0_reservoir_batches,omitempty"`
NearTimeCohortBucketMinutes int `json:"near_time_cohort_bucket_minutes,omitempty"`
}
type IndexingReleaseRuntimeSettings ¶ added in v0.7.0
type IndexingReleaseRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
IntervalMinutes float64 `json:"interval_minutes,omitempty"`
BatchSize int `json:"batch_size,omitempty"`
AutoReformBatchSize int `json:"auto_reform_batch_size,omitempty"`
BackoffSeconds int `json:"backoff_seconds,omitempty"`
MinConfidence float64 `json:"min_confidence,omitempty"`
MinCompletionPct float64 `json:"min_completion_pct,omitempty"`
MinExpectedFileCoveragePct float64 `json:"min_expected_file_coverage_pct,omitempty"`
RequireExpectedFileCountForContextualObfuscated bool `json:"require_expected_file_count_for_contextual_obfuscated,omitempty"`
PublicMinMatchConfidence float64 `json:"public_min_match_confidence,omitempty"`
PublicMinCompletionPct float64 `json:"public_min_completion_pct,omitempty"`
PublicMinIdentityStatus string `json:"public_min_identity_status,omitempty"`
PublicRequireInspection bool `json:"public_require_inspection,omitempty"`
PublicRequireEnrichment bool `json:"public_require_enrichment,omitempty"`
PublicRequireClearTitle bool `json:"public_require_clear_title,omitempty"`
PublicRequirePayloadComplete bool `json:"public_require_payload_complete,omitempty"`
PublicRequireExpectedFileCountComplete bool `json:"public_require_expected_file_count_complete,omitempty"`
PublicRequirePAR2 bool `json:"public_require_par2,omitempty"`
PublicRequireNFO bool `json:"public_require_nfo,omitempty"`
PublicRequireSFV bool `json:"public_require_sfv,omitempty"`
RetainUntilExpectedFileCountComplete bool `json:"retain_until_expected_file_count_complete,omitempty"`
RetainRequirePAR2 bool `json:"retain_require_par2,omitempty"`
RetainRequireNFO bool `json:"retain_require_nfo,omitempty"`
RetainRequireSFV bool `json:"retain_require_sfv,omitempty"`
ReopenArchivedNZBOnReleaseChange bool `json:"reopen_archived_nzb_on_release_change,omitempty"`
}
type IndexingRetentionRuntimeSettings ¶ added in v0.8.0
type IndexingRetentionRuntimeSettings struct {
RawStageHotHours int `json:"raw_stage_hot_hours,omitempty"`
RawStageWarmHours int `json:"raw_stage_warm_hours,omitempty"`
RawStageColdHours int `json:"raw_stage_cold_hours,omitempty"`
FailedProbeHours int `json:"failed_probe_hours,omitempty"`
ArchivedReleaseDetailGraceHours int `json:"archived_release_detail_grace_hours,omitempty"`
MetadataIncompleteReleaseHours int `json:"metadata_incomplete_release_hours,omitempty"`
CreatePartitionsDaysBefore int `json:"create_partitions_days_before,omitempty"`
CreatePartitionsDaysAhead int `json:"create_partitions_days_ahead,omitempty"`
PurgeDryRunDefault bool `json:"purge_dry_run_default,omitempty"`
}
type IndexingRuntimeSettings ¶ added in v0.6.1
type IndexingRuntimeSettings struct {
Newsgroups []string `json:"newsgroups,omitempty"`
BackfillUntilDateByGroup map[string]string `json:"backfill_until_date_by_group,omitempty"`
ExplicitGroups []IndexingScrapeGroupRuntimeSettings `json:"explicit_groups"`
WildcardRules []IndexingWildcardRuleRuntimeSettings `json:"wildcard_rules"`
ProviderGroupInventory []IndexingProviderGroupInventoryRuntimeSettings `json:"provider_group_inventory"`
MaterializedGroups []IndexingMaterializedGroupRuntimeSettings `json:"materialized_groups"`
ScrapeLatest IndexingStageRuntimeSettings `json:"scrape_latest,omitempty"`
ScrapeBackfill IndexingStageRuntimeSettings `json:"scrape_backfill,omitempty"`
PosterMaterialize IndexingStageRuntimeSettings `json:"poster_materialize,omitempty"`
CrosspostPopularityRefresh IndexingStageRuntimeSettings `json:"crosspost_popularity_refresh,omitempty"`
ArticleCohortSchedule IndexingStageRuntimeSettings `json:"article_cohort_schedule,omitempty"`
Assemble IndexingStageRuntimeSettings `json:"assemble,omitempty"`
RecoverYEnc IndexingStageRuntimeSettings `json:"recover_yenc,omitempty"`
SourceWindow IndexingSourceWindowRuntimeSettings `json:"source_window,omitempty"`
Retention IndexingRetentionRuntimeSettings `json:"retention,omitempty"`
RecoveryAdmission IndexingRecoveryAdmissionRuntimeSettings `json:"recovery_admission,omitempty"`
ScrapeTiers IndexingScrapeTierRuntimeSettings `json:"scrape_tiers,omitempty"`
DeferredBackfill IndexingDeferredBackfillRuntimeSettings `json:"deferred_backfill,omitempty"`
ReleaseSummaryRefresh IndexingStageRuntimeSettings `json:"release_summary_refresh,omitempty"`
Release IndexingReleaseRuntimeSettings `json:"release,omitempty"`
ReleaseGenerateNZB IndexingStageRuntimeSettings `json:"release_generate_nzb,omitempty"`
ReleaseArchiveNZB IndexingStageRuntimeSettings `json:"release_archive_nzb,omitempty"`
ReleasePurgeArchivedSources IndexingStageRuntimeSettings `json:"release_purge_archived_sources,omitempty"`
InspectDiscoveryReadyRefresh IndexingStageRuntimeSettings `json:"inspect_discovery_ready_refresh,omitempty"`
InspectPAR2ReadyRefresh IndexingStageRuntimeSettings `json:"inspect_par2_ready_refresh,omitempty"`
InspectArchiveReadyRefresh IndexingStageRuntimeSettings `json:"inspect_archive_ready_refresh,omitempty"`
InspectMediaReadyRefresh IndexingStageRuntimeSettings `json:"inspect_media_ready_refresh,omitempty"`
MaintenanceTasks map[string]IndexingMaintenanceTaskRuntimeSettings `json:"maintenance_tasks,omitempty"`
Match IndexingMatchRuntimeSettings `json:"match,omitempty"`
Inspect IndexingInspectRuntimeSettings `json:"inspect,omitempty"`
StorageGuard IndexingStorageGuardRuntimeSettings `json:"storage_guard,omitempty"`
MemoryGuard IndexingMemoryGuardRuntimeSettings `json:"memory_guard,omitempty"`
InspectDiscovery IndexingStageRuntimeSettings `json:"inspect_discovery,omitempty"`
InspectPAR2 IndexingStageRuntimeSettings `json:"inspect_par2,omitempty"`
InspectNFO IndexingStageRuntimeSettings `json:"inspect_nfo,omitempty"`
InspectArchive IndexingStageRuntimeSettings `json:"inspect_archive,omitempty"`
InspectPassword IndexingStageRuntimeSettings `json:"inspect_password,omitempty"`
InspectMedia IndexingStageRuntimeSettings `json:"inspect_media,omitempty"`
EnrichPreDB IndexingPreDBRuntimeSettings `json:"enrich_predb,omitempty"`
EnrichTMDB IndexingTMDBRuntimeSettings `json:"enrich_tmdb,omitempty"`
}
func IndexingRuntimeFromConfig ¶ added in v0.7.0
func IndexingRuntimeFromConfig(cfg config.IndexingConfig) IndexingRuntimeSettings
type IndexingScrapeGroupRuntimeSettings ¶ added in v0.8.0
type IndexingScrapeGroupRuntimeSettings struct {
GroupName string `json:"group_name,omitempty"`
Enabled bool `json:"enabled,omitempty"`
BackfillUntilDate string `json:"backfill_until_date,omitempty"`
Source string `json:"source,omitempty"`
}
func EffectiveScrapeGroups ¶ added in v0.8.0
func EffectiveScrapeGroups(indexing *IndexingRuntimeSettings) []IndexingScrapeGroupRuntimeSettings
type IndexingScrapeTierRuntimeSettings ¶ added in v0.8.0
type IndexingScrapeTierRuntimeSettings struct {
HotWindowMinutes int `json:"hot_window_minutes,omitempty"`
WarmWindowMinutes int `json:"warm_window_minutes,omitempty"`
ColdSampleHeaders int `json:"cold_sample_headers,omitempty"`
MaxArticlesPerGroupWindow int `json:"max_articles_per_group_window,omitempty"`
AssembleBacklogHighWater int `json:"assemble_backlog_high_water,omitempty"`
AssembleBacklogLowWater int `json:"assemble_backlog_low_water,omitempty"`
AllowGlobalDailyGate bool `json:"allow_global_daily_gate,omitempty"`
}
type IndexingSourceWindowRuntimeSettings ¶ added in v0.8.0
type IndexingSourceWindowRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
WindowMinutes int `json:"window_minutes,omitempty"`
BackfillWindowDays int `json:"backfill_window_days,omitempty"`
MaxOpenHeaders int `json:"max_open_headers,omitempty"`
ResumeOpenHeaders int `json:"resume_open_headers,omitempty"`
MaxBlockingYEnc int `json:"max_blocking_yenc,omitempty"`
ResumeBlockingYEnc int `json:"resume_blocking_yenc,omitempty"`
}
type IndexingStageRuntimeSettings ¶ added in v0.7.0
type IndexingStageRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
IntervalMinutes float64 `json:"interval_minutes,omitempty"`
BatchSize int `json:"batch_size,omitempty"`
MaxBatches int `json:"max_batches,omitempty"`
Concurrency int `json:"concurrency,omitempty"`
MaxEffectiveConcurrency int `json:"max_effective_concurrency,omitempty"`
BackoffSeconds int `json:"backoff_seconds,omitempty"`
BinaryUpsertDBChunkSize int `json:"binary_upsert_db_chunk_size,omitempty"`
LaneATargetPct int `json:"lane_a_target_pct,omitempty"`
LaneBMinPct int `json:"lane_b_min_pct,omitempty"`
LaneATimeWindowMinutes int `json:"lane_a_time_window_minutes,omitempty"`
TargetWindowEnabled bool `json:"target_window_enabled,omitempty"`
TargetWindowStart string `json:"target_window_start,omitempty"`
TargetWindowEnd string `json:"target_window_end,omitempty"`
TargetWindowPct int `json:"target_window_pct,omitempty"`
FetchTimeoutSeconds int `json:"fetch_timeout_seconds,omitempty"`
NewestPct int `json:"newest_pct"`
}
type IndexingStorageGuardRuntimeSettings ¶ added in v0.8.0
type IndexingTMDBRuntimeSettings ¶ added in v0.7.0
type IndexingTMDBRuntimeSettings struct {
Enabled bool `json:"enabled,omitempty"`
IntervalMinutes float64 `json:"interval_minutes,omitempty"`
BatchSize int `json:"batch_size,omitempty"`
BackoffSeconds int `json:"backoff_seconds,omitempty"`
HTTPTimeoutSeconds int `json:"http_timeout_seconds,omitempty"`
TMDBAPIKey string `json:"tmdb_api_key,omitempty"`
TMDBAccessToken string `json:"tmdb_access_token,omitempty"`
TMDBBaseURL string `json:"tmdb_base_url,omitempty"`
TVDBAPIKey string `json:"tvdb_api_key,omitempty"`
TVDBPIN string `json:"tvdb_pin,omitempty"`
TVDBBaseURL string `json:"tvdb_base_url,omitempty"`
}
type IndexingWildcardRuleRuntimeSettings ¶ added in v0.8.0
type JobStore ¶ added in v0.6.0
type JobStore interface {
// Downloader Queue: SQLite
SaveQueueItem(ctx context.Context, item *domain.QueueItem) error
GetQueueItem(ctx context.Context, id string) (*domain.QueueItem, error)
GetQueueItems(ctx context.Context) ([]*domain.QueueItem, error)
GetActiveQueueItems(ctx context.Context) ([]*domain.QueueItem, error)
DeleteQueueItems(ctx context.Context, ids []string) (int64, error)
ClearQueueHistory(ctx context.Context, statuses []domain.JobStatus) (int64, error)
SaveQueueEvent(ctx context.Context, ev *domain.QueueItemEvent) error
GetQueueEvents(ctx context.Context, queueID string) ([]*domain.QueueItemEvent, error)
ResetStuckQueueItems(ctx context.Context, newStatus domain.JobStatus, oldStatuses ...domain.JobStatus) error
// store liveness + schema handshake.
Ping(ctx context.Context) error
SchemaVersion(ctx context.Context) (int, error)
ExpectedSchemaVersion() int
ValidateSchema(ctx context.Context) error
}
JobStore defines downloader queue/event/history persistence.
type ModuleCapability ¶ added in v0.7.1
type NNTPManager ¶
type NNTPModuleRuntimeStats ¶ added in v0.8.0
type NNTPModuleRuntimeStats struct {
ReservationsEnabled bool `json:"reservations_enabled"`
IdleBorrowEnabled bool `json:"idle_borrow_enabled"`
IndexerMaxPercent int `json:"indexer_max_percent"`
DownloaderReservePercent int `json:"downloader_reserve_percent"`
DownloaderDemandWindowMS int64 `json:"downloader_demand_window_ms"`
IndexerActive int64 `json:"indexer_active"`
DownloaderActive int64 `json:"downloader_active"`
IndexerLimit int `json:"indexer_limit"`
DownloaderLimit int `json:"downloader_limit"`
DownloaderDemandActive bool `json:"downloader_demand_active"`
}
type NNTPPoolRuntimeSettings ¶ added in v0.8.0
type NNTPPoolRuntimeSettings struct {
IdleBorrowEnabled bool `json:"idle_borrow_enabled"`
IndexerMaxPercent int `json:"indexer_max_percent"`
IndexerStageTargetPercent int `json:"indexer_stage_target_percent"`
DownloaderReservePercent int `json:"downloader_reserve_percent"`
DemandWindowSeconds int `json:"demand_window_seconds"`
}
func DefaultNNTPPoolRuntimeSettings ¶ added in v0.8.0
func DefaultNNTPPoolRuntimeSettings() *NNTPPoolRuntimeSettings
type NNTPProviderRuntimeStats ¶ added in v0.8.0
type NNTPProviderRuntimeStats struct {
ID string `json:"id"`
Label string `json:"label"`
Roles []string `json:"roles,omitempty"`
Priority int `json:"priority"`
Capacity int `json:"capacity"`
Active int `json:"active"`
Idle int `json:"idle"`
Dials int64 `json:"dials"`
DialFailures int64 `json:"dial_failures"`
PoolReuses int64 `json:"pool_reuses"`
PoolReturns int64 `json:"pool_returns"`
PoolDiscardIdle int64 `json:"pool_discard_idle"`
PoolDiscardAge int64 `json:"pool_discard_age"`
PoolDiscardError int64 `json:"pool_discard_error"`
FetchRetries int64 `json:"fetch_retries"`
GroupStatsRetries int64 `json:"group_stats_retries"`
XOverRetries int64 `json:"xover_retries"`
RecoverableErrors int64 `json:"recoverable_errors"`
}
type NNTPRuntimeStats ¶ added in v0.8.0
type NNTPRuntimeStats struct {
Scope string `json:"scope"`
Policy string `json:"policy"`
Capacity int `json:"capacity"`
Active int `json:"active"`
Idle int `json:"idle"`
Waiting int64 `json:"waiting"`
BusyReturns int64 `json:"busy_returns"`
WaitCount int64 `json:"wait_count"`
WaitDurationMS int64 `json:"wait_duration_ms"`
WaitMaxMS int64 `json:"wait_max_ms"`
Fetches int64 `json:"fetches"`
FetchBodyPrefix int64 `json:"fetch_body_prefix"`
GroupStats int64 `json:"group_stats"`
XOver int64 `json:"xover"`
ArticleNotFound int64 `json:"article_not_found"`
OperationErrors int64 `json:"operation_errors"`
Modules NNTPModuleRuntimeStats `json:"modules"`
Providers []NNTPProviderRuntimeStats `json:"providers"`
Scopes []NNTPScopeRuntimeStats `json:"scopes"`
}
type NNTPScopeRuntimeStats ¶ added in v0.8.0
type NNTPScopeRuntimeStats struct {
Scope string `json:"scope"`
Active int64 `json:"active"`
Waiting int64 `json:"waiting"`
WaitCount int64 `json:"wait_count"`
WaitDurationMS int64 `json:"wait_duration_ms"`
WaitMaxMS int64 `json:"wait_max_ms"`
Fetches int64 `json:"fetches"`
FetchBodyPrefix int64 `json:"fetch_body_prefix"`
GroupStats int64 `json:"group_stats"`
XOver int64 `json:"xover"`
ArticleNotFound int64 `json:"article_not_found"`
OperationErrors int64 `json:"operation_errors"`
}
type PayloadCacheStore ¶ added in v0.6.0
type PayloadCacheStore interface {
GetObjectReader(key string) (io.ReadCloser, error)
CreateObjectWriter(key string) (io.WriteCloser, error)
SaveObjectAtomically(key string, data []byte) error
ExistsObject(key string) bool
GetNZBReader(key string) (io.ReadCloser, error)
CreateNZBWriter(key string) (io.WriteCloser, error)
SaveNZBAtomically(key string, data []byte) error
Exists(key string) bool
}
type PayloadFetcher ¶ added in v0.6.0
type PayloadFetcher interface {
GetNZB(ctx context.Context, sourceKind string, res *domain.Release) (io.ReadCloser, error)
}
payload fetch now routes by persisted source kind.
type Processor ¶
type Processor interface {
// processor now needs the queue item so it can use a per-job work dir
Prepare(ctx context.Context, item *domain.QueueItem, nzbModel *nzb.Model, nzbFilename string) (*domain.PreparationResult, error)
Finalize(ctx context.Context, tasks []*domain.DownloadFile) error
PostProcess(ctx context.Context, item *domain.QueueItem, tasks []*domain.DownloadFile) error
}
type QueueAddRequest ¶ added in v0.6.0
type QueueAddRequest struct {
SourceKind string
SourceReleaseID string
Release *domain.Release
Title string
}
explicit queue enqueue contract so downloader does not infer source provenance.
type QueueFileStore ¶ added in v0.6.0
type QueueFileStore interface {
SaveQueueItemFiles(ctx context.Context, queueItemID string, files []*domain.DownloadFile) error
GetQueueItemFiles(ctx context.Context, queueItemID string) ([]*domain.DownloadFile, error)
}
downloader-owned queue item file metadata
type QueueManager ¶ added in v0.5.0
type QueueManager interface {
Start(ctx context.Context)
Add(ctx context.Context, req QueueAddRequest) (*domain.QueueItem, error)
GetActiveItem() *domain.QueueItem
GetItem(ctx context.Context, id string) (*domain.QueueItem, bool)
GetAllItems() []*domain.QueueItem
Cancel(id string) bool
Delete(id string) bool
Stop()
Pause() bool
Resume() bool
IsPaused() bool
HydrateItem(ctx context.Context, item *domain.QueueItem) error
UpdateStatus(ctx context.Context, item *domain.QueueItem, status domain.JobStatus)
ReloadRuntime(appCtx *Context) // refresh future-job dependencies after settings reload
}
type ReleaseResolver ¶ added in v0.6.0
type ReleaseResolver interface {
GetRelease(ctx context.Context, sourceKind, sourceReleaseID string) (*domain.Release, error)
GetNZB(ctx context.Context, sourceKind string, res *domain.Release) (io.ReadCloser, error)
}
resolver routes by source kind instead of assuming aggregator-only resolution.
type RuntimeCheck ¶ added in v0.6.1
type RuntimeModule ¶ added in v0.6.1
type RuntimeSettings ¶ added in v0.6.1
type RuntimeSettings struct {
Servers []ServerRuntimeSettings `json:"servers,omitempty"`
DownloaderServers []ServerRuntimeSettings `json:"downloader_servers,omitempty"`
IndexerServers []ServerRuntimeSettings `json:"indexer_servers,omitempty"`
Indexers []IndexerRuntimeSettings `json:"indexers,omitempty"`
Aggregator *AggregatorRuntimeSettings `json:"aggregator,omitempty"`
Download *DownloadRuntimeSettings `json:"download,omitempty"`
NNTPPool *NNTPPoolRuntimeSettings `json:"nntp_pool,omitempty"`
Indexing *IndexingRuntimeSettings `json:"indexing,omitempty"`
ArrIntegrations []ArrIntegrationRuntimeSettings `json:"arr_integrations,omitempty"`
Revision int64 `json:"revision,omitempty"`
}
func ApplyPatch ¶ added in v0.6.1
func ApplyPatch(current *RuntimeSettings, patch *RuntimeSettingsPatch) *RuntimeSettings
ApplyPatch applies an incoming patch to the current runtime settings.
func CloneRuntimeSettings ¶ added in v0.6.1
func CloneRuntimeSettings(in *RuntimeSettings) *RuntimeSettings
CloneRuntimeSettings returns a deep copy of runtime settings.
func DefaultRuntimeSettings ¶ added in v0.7.1
func DefaultRuntimeSettings() *RuntimeSettings
func FromConfig ¶ added in v0.6.1
func FromConfig(cfg *config.Config) *RuntimeSettings
FromConfig derives editable runtime state from current effective config.
func RedactedCopy ¶ added in v0.6.1
func RedactedCopy(in *RuntimeSettings) *RuntimeSettings
RedactedCopy removes secrets before returning settings externally.
func WithRuntimeDefaults ¶ added in v0.7.1
func WithRuntimeDefaults(in *RuntimeSettings) *RuntimeSettings
type RuntimeSettingsPatch ¶ added in v0.6.1
type RuntimeSettingsPatch struct {
Servers *[]ServerRuntimeSettings `json:"servers,omitempty"`
DownloaderServers *[]ServerRuntimeSettings `json:"downloader_servers,omitempty"`
IndexerServers *[]ServerRuntimeSettings `json:"indexer_servers,omitempty"`
Indexers *[]IndexerRuntimeSettings `json:"indexers,omitempty"`
Aggregator *AggregatorRuntimeSettings `json:"aggregator,omitempty"`
Download *DownloadRuntimeSettings `json:"download,omitempty"`
NNTPPool *NNTPPoolRuntimeSettings `json:"nntp_pool,omitempty"`
Indexing *IndexingRuntimeSettings `json:"indexing,omitempty"`
ArrIntegrations *[]ArrIntegrationRuntimeSettings `json:"arr_integrations,omitempty"`
}
type RuntimeToggle ¶ added in v0.7.1
type RuntimeToggle struct {
Enabled bool `json:"enabled"`
}
type SearchRequest ¶ added in v0.6.1
type ServerRuntimeSettings ¶ added in v0.6.1
type ServerRuntimeSettings struct {
ID string `json:"id"`
Host string `json:"host"`
Port int `json:"port"`
Username string `json:"username"`
Password string `json:"password"`
TLS bool `json:"tls"`
MaxConnection int `json:"max_connections"`
Priority int `json:"priority"`
DialTimeoutSeconds int `json:"dial_timeout_seconds"`
TCPKeepAliveSeconds int `json:"tcp_keepalive_seconds"`
PoolIdleTimeoutSeconds int `json:"pool_idle_timeout_seconds"`
PoolMaxAgeSeconds int `json:"pool_max_age_seconds"`
EnablePoolLogging bool `json:"enable_pool_logging"`
Roles []string `json:"roles,omitempty"`
}
func DownloaderNNTPServers ¶ added in v0.7.1
func DownloaderNNTPServers(in *RuntimeSettings) []ServerRuntimeSettings
func IndexerNNTPServers ¶ added in v0.7.1
func IndexerNNTPServers(in *RuntimeSettings) []ServerRuntimeSettings
func RuntimeServersForCompatibility ¶ added in v0.7.1
func RuntimeServersForCompatibility(in *RuntimeSettings) []ServerRuntimeSettings
type SettingsAdmin ¶ added in v0.6.1
type SettingsAdmin interface {
Get(ctx context.Context) (*RuntimeSettings, error)
Capabilities(ctx context.Context) (*ControlPlaneCapabilities, error)
Update(ctx context.Context, patch *RuntimeSettingsPatch) (*RuntimeSettings, error)
}
type SettingsCapability ¶ added in v0.7.1
type SettingsCapability struct {
RuntimeConfigured bool `json:"runtime_configured"`
}
type SettingsStore ¶ added in v0.6.0
type SettingsStore interface {
LoadEffectiveSettings(ctx context.Context, base *config.Config) (*config.Config, error)
GetRuntimeSettings(ctx context.Context, base ...*config.Config) (*RuntimeSettings, error)
UpdateSettings(ctx context.Context, next *RuntimeSettings) error
WatchSettingsChanges(ctx context.Context) (<-chan struct{}, error)
// store liveness + schema handshake.
Ping(ctx context.Context) error
SchemaVersion(ctx context.Context) (int, error)
ExpectedSchemaVersion() int
ValidateSchema(ctx context.Context) error
}
Runtime settings
type UsenetIndexCatalog ¶ added in v0.6.0
type UsenetIndexCatalog interface {
GetCatalogReleaseByID(ctx context.Context, releaseID string) (*domain.Release, error)
}
minimal PG catalog boundary for Milestone 7 resolver routing.
type UsenetIndexStore ¶ added in v0.6.1
type UsenetIndexStore interface {
UsenetIndexCatalog
Ping(ctx context.Context) error
ValidateSchema(ctx context.Context) error
ListCatalogReleaseFiles(ctx context.Context, releaseID string) ([]pgindex.CatalogReleaseFile, error)
ListCatalogReleaseFileArticles(ctx context.Context, releaseFileID int64) ([]pgindex.CatalogArticleRef, error)
ListCatalogReleaseNewsgroups(ctx context.Context, releaseID string) ([]string, error)
UpsertNZBCache(ctx context.Context, releaseID, generationStatus, hashSHA256, lastError string) error
GetReleaseArchiveState(ctx context.Context, releaseID string) (*pgindex.ReleaseArchiveState, error)
ClaimReleaseArchiveCandidates(ctx context.Context, limit int, policy pgindex.ReleaseReadyPolicy) ([]pgindex.ReleaseArchiveCandidate, error)
MarkReleaseArchiveStored(ctx context.Context, in pgindex.ReleaseArchiveStoredRecord) error
MarkReleaseArchiveFailed(ctx context.Context, releaseID, errText string) error
ClaimReleasePurgeCandidates(ctx context.Context, limit int, policy pgindex.ReleaseReadyPolicy) ([]pgindex.ReleasePurgeCandidate, error)
PurgeArchivedReleaseSources(ctx context.Context, releaseID string) (*pgindex.ReleasePurgeResult, error)
ClaimIndexerStage(ctx context.Context, req pgindex.IndexerStageClaimRequest) (*pgindex.IndexerStageClaimResult, error)
HeartbeatIndexerStageRun(ctx context.Context, runID int64, owner string, leaseDuration time.Duration) error
CompleteIndexerStageRun(ctx context.Context, req pgindex.IndexerStageFinishRequest) error
FailIndexerStageRun(ctx context.Context, req pgindex.IndexerStageFinishRequest) error
PauseIndexerStage(ctx context.Context, stageName string) error
ResumeIndexerStage(ctx context.Context, stageName string) error
RepairIndexerStageRuntime(ctx context.Context) (*pgindex.IndexerStageRepairResult, error)
ListIndexerStageStates(ctx context.Context) ([]pgindex.IndexerStageState, error)
ListIndexerStageRuns(ctx context.Context, stageName string, limit int) ([]pgindex.IndexerStageRun, error)
ListIndexerStageRunsFiltered(ctx context.Context, params pgindex.IndexerStageRunListParams) ([]pgindex.IndexerStageRun, error)
GetIndexerStageRun(ctx context.Context, runID int64) (*pgindex.IndexerStageRun, error)
GetIndexerOverview(ctx context.Context) (*pgindex.IndexerOverview, error)
GetIndexerDashboardStats(ctx context.Context) (*pgindex.IndexerDashboardStats, error)
RefreshIndexerDashboardStats(ctx context.Context) (*pgindex.IndexerDashboardStats, error)
GetIndexerBackfillProgress(ctx context.Context) (*pgindex.IndexerBackfillProgress, error)
GetIndexerCrosspostNewsgroupPopularity(ctx context.Context, limit int) ([]pgindex.IndexerCrosspostPopularityItem, error)
ReplaceIndexerProviderGroupInventory(ctx context.Context, rows []pgindex.IndexerProviderGroupInventoryItem) error
GetIndexerProviderGroupInventoryStats(ctx context.Context) (pgindex.IndexerProviderGroupInventoryStats, error)
ListIndexerProviderGroupInventoryCandidates(ctx context.Context, query string, patternHints []string) ([]pgindex.IndexerProviderGroupInventoryItem, error)
ListIndexerProviderGroupInventoryPage(ctx context.Context, query string, limit, offset int, sortKey, direction string) (pgindex.IndexerProviderGroupInventoryPage, error)
GetIndexerStageThroughput(ctx context.Context) (*pgindex.IndexerStageThroughput, error)
ListIndexerAdminAttention(ctx context.Context, params pgindex.IndexerAdminAttentionParams) ([]pgindex.IndexerAdminAttentionItem, int, error)
ListIndexerArticleCohorts(ctx context.Context, params pgindex.IndexerArticleCohortParams) ([]pgindex.IndexerArticleCohortItem, int, error)
ListIndexerReleases(ctx context.Context, params pgindex.AdminIndexerReleaseListParams) ([]pgindex.IndexerReleaseSummary, int, error)
GetIndexerReleaseDetail(ctx context.Context, releaseID string) (*pgindex.IndexerReleaseDetail, error)
ListPublicIndexerReleases(ctx context.Context, params pgindex.PublicIndexerReleaseListParams) ([]pgindex.PublicIndexerReleaseSummary, int, error)
GetPublicIndexerReleaseDetailWithPolicy(ctx context.Context, releaseID string, policy pgindex.ReleaseReadyPolicy) (*pgindex.PublicIndexerReleaseDetail, error)
GetPublicIndexerReleaseDetail(ctx context.Context, releaseID string) (*pgindex.PublicIndexerReleaseDetail, error)
UpsertReleaseOverride(ctx context.Context, in pgindex.ReleaseOverrideRecord) error
GetReleaseOverride(ctx context.Context, releaseID string) (*pgindex.ReleaseOverrideRecord, error)
ResetReleaseInspectionState(ctx context.Context, releaseID string) error
ResetReleaseEnrichmentState(ctx context.Context, releaseID string) error
GetIndexerBinaryDetail(ctx context.Context, binaryID int64) (*pgindex.IndexerBinaryDetail, error)
GetIndexerFileDetail(ctx context.Context, fileID int64) (*pgindex.IndexerFileDetail, error)
EnsureProvider(ctx context.Context, providerKey, displayName string) (int64, error)
EnsureNewsgroup(ctx context.Context, groupName string) (int64, error)
StartScrapeRun(ctx context.Context, providerID int64) (int64, error)
FinishScrapeRun(ctx context.Context, runID int64, status, errorText string) error
GetLatestCheckpoint(ctx context.Context, providerID, newsgroupID int64) (int64, error)
UpsertLatestCheckpoint(ctx context.Context, providerID, newsgroupID, lastArticleNumber int64) error
GetBackfillCheckpoint(ctx context.Context, providerID, newsgroupID int64) (int64, error)
UpsertBackfillCheckpoint(ctx context.Context, providerID, newsgroupID, backfillArticleNumber int64) error
GetBackfillCheckpointState(ctx context.Context, providerID, newsgroupID int64) (*pgindex.BackfillCheckpointState, error)
HasBackfillCutoffReachedForGroup(ctx context.Context, newsgroupID int64, untilDate time.Time) (bool, error)
SetBackfillCheckpointState(ctx context.Context, providerID, newsgroupID int64, untilDate *time.Time, cutoffReached bool, stoppedReason string) error
InsertArticleHeaders(ctx context.Context, providerID, newsgroupID int64, headers []pgindex.ArticleHeader) (int64, error)
ObserveScrapeRange(ctx context.Context, providerID, newsgroupID int64, from, to int64, observations []pgindex.ScrapeRangeObservation) error
GetYEncRecoveryAdmissionSnapshot(ctx context.Context) (*pgindex.YEncRecoveryAdmissionSnapshot, error)
RefreshYEncRecoveryAdmissionSnapshot(ctx context.Context) (*pgindex.YEncRecoveryAdmissionSnapshot, error)
ConfigureYEncRecoveryAdmission(ctx context.Context, cfg pgindex.YEncRecoveryAdmissionConfig) error
UpsertIndexerGroupProfile(ctx context.Context, providerID, newsgroupID int64, tier, reason string) error
RefreshIndexerGroupProfiles(ctx context.Context) (int64, error)
UpsertDeferredArticleRange(ctx context.Context, in pgindex.DeferredArticleRangeRecord) error
ListIndexerGroupProfiles(ctx context.Context, limit int) ([]pgindex.IndexerGroupProfileSummary, error)
ListDeferredArticleRanges(ctx context.Context, state string, limit int) ([]pgindex.DeferredArticleRangeSummary, error)
RunArticleCohortScheduler(ctx context.Context, req pgindex.ArticleCohortSchedulerRequest) (*pgindex.ArticleCohortSchedulerResult, error)
ListUnassembledArticleHeaders(ctx context.Context, limit int) ([]pgindex.AssemblyCandidate, error)
ClaimUnassembledArticleHeaders(ctx context.Context, req pgindex.AssemblyClaimRequest) ([]pgindex.AssemblyCandidate, error)
ClaimAssemblyQueueBatch(ctx context.Context, req pgindex.AssemblyClaimRequest) ([]pgindex.AssemblyCandidate, error)
CleanupStaleAssemblyQueueRows(ctx context.Context, limit int) (int, error)
RecordYEncRecoveryNotFound(ctx context.Context, articleHeaderID int64) error
RecordYEncRecoveryNoop(ctx context.Context, articleHeaderID int64) error
RecordYEncRecoveryTransientFailure(ctx context.Context, articleHeaderID int64) error
UpsertBinary(ctx context.Context, in pgindex.BinaryRecord) (int64, error)
UpsertBinaries(ctx context.Context, records []pgindex.BinaryRecord) ([]int64, error)
UpsertBinaryPart(ctx context.Context, in pgindex.BinaryPartRecord) error
UpsertBinaryParts(ctx context.Context, records []pgindex.BinaryPartRecord) error
RefreshBinaryStats(ctx context.Context, binaryID int64) error
RefreshBinaryStatsBatch(ctx context.Context, binaryIDs []int64) error
CountQueuedReleaseFamilySummaries(ctx context.Context) (int, error)
RefreshQueuedReleaseFamilySummaries(ctx context.Context, limit int) (int, error)
ListReleaseCandidates(ctx context.Context, limit int, opts pgindex.ReleaseCandidateSelectionOptions) ([]pgindex.ReleaseCandidate, error)
ListReleaseNZBGenerateCandidates(ctx context.Context, limit int, policy pgindex.ReleaseReadyPolicy) ([]pgindex.ReleaseNZBGenerateCandidate, error)
ListExistingReleaseCandidates(ctx context.Context, limit, offset int) ([]pgindex.ReleaseCandidate, error)
ListAutoReformReleaseCandidates(ctx context.Context, limit int, minReformAge time.Duration) ([]pgindex.ReleaseCandidate, error)
ListExistingReleaseCandidatesForReleaseIDs(ctx context.Context, releaseIDs []string) ([]pgindex.ReleaseCandidate, error)
ListBinariesForReleaseCandidate(ctx context.Context, providerID, newsgroupID int64, keyKind, releaseKey string) ([]pgindex.BinarySummary, error)
ListBinaryPartArticles(ctx context.Context, binaryID int64) ([]pgindex.ReleaseFileArticleRecord, error)
ListBinaryPartArticlesBatch(ctx context.Context, binaryIDs []int64) (map[int64][]pgindex.ReleaseFileArticleRecord, error)
ListReleaseTitleCandidates(ctx context.Context, binaryIDs []int64) ([]pgindex.ReleaseTitleCandidate, error)
UpsertRelease(ctx context.Context, in pgindex.ReleaseRecord) (string, error)
PersistReleaseSnapshot(ctx context.Context, in pgindex.ReleaseRecord, files []pgindex.ReleaseFileRecord, newsgroupIDs []int64) (pgindex.ReleaseSnapshotResult, error)
DeleteStaleReleasesForSourceKey(ctx context.Context, providerID int64, keyKind, releaseKey string, keepGroupNames []string) error
DeleteAuxiliaryOnlySiblingReleases(ctx context.Context, providerID, newsgroupID int64, baseStem string, keepReleaseIDs []string) error
ReplaceReleaseFiles(ctx context.Context, releaseID string, files []pgindex.ReleaseFileRecord) error
ReplaceReleaseNewsgroups(ctx context.Context, releaseID string, newsgroupIDs []int64) error
AckReleaseCandidate(ctx context.Context, providerID, newsgroupID int64, keyKind, familyKey string) error
AckReleaseCandidates(ctx context.Context, candidates []pgindex.ReleaseCandidateAck) error
PromoteBaseStemCandidatesForReleaseFamily(ctx context.Context, providerID, newsgroupID int64, releaseFamilyKey string) error
ReopenArchivedReleaseForRegeneration(ctx context.Context, releaseID string) error
RunIndexerMaintenance(ctx context.Context) (*pgindex.IndexerMaintenanceResult, error)
DryRunReleaseSourcePurge(ctx context.Context, limit int, policy pgindex.ReleaseReadyPolicy) (*pgindex.MaintenanceTaskResult, error)
RunReleaseSourcePurge(ctx context.Context, limit int, policy pgindex.ReleaseReadyPolicy) (*pgindex.MaintenanceTaskResult, error)
DryRunSimpleMaintenanceTask(ctx context.Context, taskKey string, batchSize int) (*pgindex.MaintenanceTaskResult, error)
RunSimpleMaintenanceTask(ctx context.Context, taskKey string, batchSize int) (*pgindex.MaintenanceTaskResult, error)
DryRunRawStageRetentionTask(ctx context.Context, batchSize int, policy pgindex.RawStageRetentionPolicy) (*pgindex.MaintenanceTaskResult, error)
RunRawStageRetentionTask(ctx context.Context, batchSize int, policy pgindex.RawStageRetentionPolicy) (*pgindex.MaintenanceTaskResult, error)
DryRunPartitionRetentionTask(ctx context.Context, batchSize int) (*pgindex.MaintenanceTaskResult, error)
RunPartitionRetentionTask(ctx context.Context, batchSize int) (*pgindex.MaintenanceTaskResult, error)
DryRunPartitionDefaultRehomeTask(ctx context.Context, batchSize int) (*pgindex.MaintenanceTaskResult, error)
RunPartitionDefaultRehomeTask(ctx context.Context, batchSize int) (*pgindex.MaintenanceTaskResult, error)
ProvisionSourceWorkPartitions(ctx context.Context, daysBefore, daysAhead int) error
ListIndexerBinaries(ctx context.Context, params pgindex.IndexerBinaryListParams) ([]pgindex.IndexerBinarySummary, int, error)
PurgeArticleHeaderPayloads(ctx context.Context) (int64, error)
BackfillIndexerCrosspostGroups(ctx context.Context, batchSize, maxBatches int) (*pgindex.IndexerCrosspostBackfillResult, error)
MaterializeArticleHeaderPosters(ctx context.Context, limit int) (*pgindex.IndexerPosterMaterializationResult, error)
RefreshCrosspostPopularity(ctx context.Context, limit int) (*pgindex.IndexerCrosspostPopularityRefreshResult, error)
RunIndexerStorageReclaim(ctx context.Context, options pgindex.IndexerStorageReclaimOptions) (*pgindex.IndexerStorageReclaimResult, error)
CheckCriticalIndexerIntegrity(ctx context.Context, ensureExtension bool) (*pgindex.IndexerIntegrityReport, error)
ReindexCriticalIndexerIndexes(ctx context.Context) (*pgindex.IndexerIntegrityRepairResult, error)
DatabaseStorageStatus(ctx context.Context) (*pgindex.DatabaseStorageStatus, error)
ListBinaryInspectionCandidates(ctx context.Context, stageName string, limit int) ([]pgindex.BinaryInspectionCandidate, error)
ListBinaryInspectionCandidatesWithOptions(ctx context.Context, stageName string, limit int, opts pgindex.BinaryInspectionCandidateOptions) ([]pgindex.BinaryInspectionCandidate, error)
ClaimBinaryInspectionCandidates(ctx context.Context, req pgindex.BinaryInspectionClaimRequest) ([]pgindex.BinaryInspectionCandidate, error)
StartBinaryInspection(ctx context.Context, stageName string, binaryID int64, releaseID string, sourceUpdatedAt *time.Time) error
CompleteBinaryInspection(ctx context.Context, in pgindex.BinaryInspectionRecord) error
FailBinaryInspection(ctx context.Context, in pgindex.BinaryInspectionRecord) error
ReplaceBinaryInspectionArtifacts(ctx context.Context, stageName string, binaryID int64, rows []pgindex.BinaryInspectionArtifactRecord) error
ReplaceBinaryArchiveEntries(ctx context.Context, binaryID int64, rows []pgindex.BinaryArchiveEntryRecord) error
ReplaceBinaryMediaStreams(ctx context.Context, binaryID int64, rows []pgindex.BinaryMediaStreamRecord) error
ReplaceBinaryTextEvidence(ctx context.Context, stageName string, binaryID int64, rows []pgindex.BinaryTextEvidenceRecord) error
ReplaceBinaryPAR2Sets(ctx context.Context, binaryID int64, rows []pgindex.BinaryPAR2SetRecord) error
ReplaceBinaryPAR2Targets(ctx context.Context, binaryID int64, rows []pgindex.BinaryPAR2TargetRecord) error
ApplyBinaryPAR2TargetCoverage(ctx context.Context, binaryID int64, rows []pgindex.BinaryPAR2TargetRecord) (*pgindex.BinaryPAR2TargetCoverageResult, error)
ApplyPAR2InspectionBatch(ctx context.Context, rows []pgindex.PAR2InspectionBatchRecord) (*pgindex.PAR2InspectionBatchResult, error)
ApplyBinaryRecovery(ctx context.Context, in pgindex.BinaryRecoveryRecord) error
ListYEncRecoveryCandidates(ctx context.Context, limit int) ([]pgindex.YEncRecoveryCandidate, error)
ApplyYEncHeaderRecovery(ctx context.Context, in pgindex.YEncHeaderRecoveryRecord) (*pgindex.YEncHeaderRecoveryResult, error)
UpsertReleasePasswordCandidate(ctx context.Context, in pgindex.ReleasePasswordCandidateRecord) (int64, error)
ListPasswordVerificationCandidates(ctx context.Context, limit int) ([]pgindex.PasswordVerificationCandidate, error)
UpdateReleasePasswordCandidateStatus(ctx context.Context, candidateID int64, status string, verifiedAt *time.Time, lastError string) error
ApplyReleaseInspectionUpdate(ctx context.Context, in pgindex.ReleaseInspectionUpdate) error
SetReleaseArchivePreview(ctx context.Context, releaseID, objectKey, contentType, sourceKind string) error
ListReleaseEnrichmentCandidates(ctx context.Context, stageName string, limit int) ([]pgindex.ReleaseEnrichmentCandidate, error)
UpsertPredbEntries(ctx context.Context, rows []pgindex.PredbEntryRecord) error
GetPredbBackfillWindow(ctx context.Context) (*pgindex.PredbBackfillWindow, error)
GetPredbEntryWindow(ctx context.Context) (*pgindex.PredbBackfillWindow, error)
GetPredbBackfillCheckpoint(ctx context.Context, provider string) (*pgindex.PredbBackfillCheckpoint, error)
UpsertPredbBackfillCheckpoint(ctx context.Context, in pgindex.PredbBackfillCheckpoint) error
ListPredbEntriesForWindow(ctx context.Context, from, to *time.Time, categoryHint string, limit int) ([]pgindex.PredbEntrySummary, error)
ReplaceReleasePredbMatches(ctx context.Context, releaseID string, rows []pgindex.ReleasePredbMatchRecord) error
ReplaceReleaseTMDBMatches(ctx context.Context, releaseID string, rows []pgindex.ReleaseTMDBMatchRecord) error
ReplaceReleaseTVDBMatches(ctx context.Context, releaseID string, rows []pgindex.ReleaseTVDBMatchRecord) error
ApplyReleasePredbUpdate(ctx context.Context, in pgindex.ReleasePredbUpdate) error
ApplyReleaseManualIdentity(ctx context.Context, in pgindex.ReleaseManualIdentityUpdate) error
ApplyReleaseEnrichmentUpdate(ctx context.Context, in pgindex.ReleaseEnrichmentUpdate) error
}
current PG-backed store surface used by resolver, indexing runtime, health checks, and smoke tests. This keeps Context from depending on the concrete *pgindex.Store type directly.
type UsenetIndexerService ¶ added in v0.6.0
type UsenetIndexerService interface {
ScrapeOnce(ctx context.Context) error
ScrapeLatestOnce(ctx context.Context) error
ScrapeBackfillOnce(ctx context.Context) error
AssembleOnce(ctx context.Context) error
RecoverYEncOnce(ctx context.Context) error
ReleaseSummaryRefreshOnce(ctx context.Context) error
ReleaseOnce(ctx context.Context) error
ReleaseGenerateNZBOnce(ctx context.Context) error
ReleaseArchiveNZBOnce(ctx context.Context) error
ReleasePurgeArchivedSourcesOnce(ctx context.Context) error
ReformReleasesOnce(ctx context.Context) error
ReformSelectedReleasesOnce(ctx context.Context, releaseIDs []string) error
InspectOnce(ctx context.Context) error
InspectDiscoveryOnce(ctx context.Context) error
InspectPAR2Once(ctx context.Context) error
InspectNFOOnce(ctx context.Context) error
InspectArchiveOnce(ctx context.Context) error
InspectPasswordOnce(ctx context.Context) error
InspectMediaOnce(ctx context.Context) error
EnrichPredbOnce(ctx context.Context) error
EnrichPredbSceneNameRecoveryOnce(ctx context.Context) error
EnrichPredbMetadataFallbackOnce(ctx context.Context) error
EnrichPredbSyncFeedOnce(ctx context.Context) error
EnrichPredbSyncBackfillOnce(ctx context.Context) error
EnrichTMDBOnce(ctx context.Context) error
RunStageOnce(ctx context.Context, stageName string) error
RunPipelineOnce(ctx context.Context) error
Start(ctx context.Context, interval time.Duration) error
NNTPStats(ctx context.Context) (*NNTPRuntimeStats, error)
}