pgindex

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2026 License: Apache-2.0 Imports: 54 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AssemblyClaimLaneCombined = ""
	AssemblyClaimLaneA        = "lane_a"
	AssemblyClaimLaneB        = "lane_b"
)
View Source
const (
	ReleaseSnapshotStatusInserted         = "inserted"
	ReleaseSnapshotStatusUpdated          = "updated"
	ReleaseSnapshotStatusSkippedDowngrade = "skipped_downgrade"
)
View Source
const (
	ReleaseCandidateKeyKindReleaseFamily    = "release_family"
	ReleaseCandidateKeyKindBaseStem         = "base_stem"
	ReleaseCandidateKeyKindRecoveredFileSet = "recovered_file_set"
)

Variables

View Source
var (
	ErrFederationSequenceConflict = errors.New("federation sequence conflict")
	ErrFederationForkDetected     = errors.New("federation event fork detected")
	ErrUnknownFederationNode      = errors.New("unknown federation node")
)
View Source
var (
	ErrBinaryNotFound  = errors.New("binary not found")
	ErrReleaseNotFound = errors.New("release not found")
)

Functions

func BuildScrapeDayBoundaryObservations added in v0.8.0

func BuildScrapeDayBoundaryObservations(observations []ScrapeRangeObservation) []scrapeDayBoundaryObservation

func IsBinaryNotFound added in v0.8.0

func IsBinaryNotFound(err error) bool

func IsReleaseNotFound added in v0.8.0

func IsReleaseNotFound(err error) bool

func ParseAdminCategoryID added in v0.7.0

func ParseAdminCategoryID(raw string) int

func PopulateDatabaseStorageFilesystemStatus added in v0.8.0

func PopulateDatabaseStorageFilesystemStatus(status *DatabaseStorageStatus, dataDirectory string) error

func StableReleaseGUID

func StableReleaseGUID(providerID int64, releaseKey string) string

StableReleaseGUID returns a deterministic GUID for PG release rows. This keeps release identity stable across repeat formation passes.

func WithBinaryStatsRefreshTelemetry added in v0.8.0

func WithBinaryStatsRefreshTelemetry(ctx context.Context, telemetry *BinaryStatsRefreshTelemetry) context.Context

func WithBinaryUpsertChunkSize added in v0.8.0

func WithBinaryUpsertChunkSize(ctx context.Context, size int) context.Context

func WithBinaryUpsertTelemetry added in v0.8.0

func WithBinaryUpsertTelemetry(ctx context.Context, telemetry *BinaryUpsertTelemetry) context.Context

func WithSkipYEncRecoveryWorkItemRetire added in v0.8.0

func WithSkipYEncRecoveryWorkItemRetire(ctx context.Context) context.Context

func WithSkipYEncRecoveryWorkItemSync added in v0.8.0

func WithSkipYEncRecoveryWorkItemSync(ctx context.Context) context.Context

Types

type AdminIndexerReleaseListParams added in v0.7.0

type AdminIndexerReleaseListParams struct {
	Query                    string
	Newsgroup                string
	Limit                    int
	Offset                   int
	Sort                     string
	CategoryID               int
	Classification           string
	ExternalMediaType        string
	IdentityStatus           string
	PasswordState            string
	MediaQualityTier         string
	Hidden                   string
	PublicState              string
	Inspected                string
	Enriched                 string
	Uncategorized            string
	PasswordCandidates       string
	MetadataMismatch         string
	LowConfidence            string
	CompletionState          string
	PayloadCompletionInclude string
	PayloadCompletionExclude string
	HasNFO                   *bool
	HasPAR2                  *bool
}

type ArticleAvailabilityDiagnostic added in v0.9.0

type ArticleAvailabilityDiagnostic struct {
	AttestationID         string    `json:"attestation_id"`
	ManifestID            string    `json:"manifest_id"`
	ReleaseID             string    `json:"release_id"`
	AuthorNodeID          string    `json:"author_node_id"`
	PoolID                string    `json:"pool_id"`
	CheckedAt             time.Time `json:"checked_at"`
	Status                string    `json:"status"`
	ArticlesTotal         int       `json:"articles_total"`
	ArticlesAvailable     int       `json:"articles_available"`
	MissingArticles       int       `json:"missing_articles"`
	RetentionDaysObserved int       `json:"retention_days_observed"`
	Confidence            float64   `json:"confidence"`
	ValidationScore       float64   `json:"validation_score"`
	Method                string    `json:"method"`
	SourceEventID         string    `json:"source_event_id"`
	UpdatedAt             time.Time `json:"updated_at"`
}

type ArticleAvailabilityProjection added in v0.9.0

type ArticleAvailabilityProjection struct {
	Attestation  validation.ArticleAvailabilityAttestation
	EventID      string
	AuthorNodeID string
	PoolID       string
}

type ArticleCohortSchedulerRequest added in v0.8.0

type ArticleCohortSchedulerRequest struct {
	BatchSize         int
	AssemblyQueueMax  int
	YEncQueueMax      int
	TargetWindowStart *time.Time
	TargetWindowEnd   *time.Time
	DisableYEnc       bool
}

func (ArticleCohortSchedulerRequest) HasTargetWindow added in v0.9.0

func (r ArticleCohortSchedulerRequest) HasTargetWindow() bool

type ArticleCohortSchedulerResult added in v0.8.0

type ArticleCohortSchedulerResult struct {
	SubjectCohortsUpserted int64
	OpaqueCohortsUpserted  int64
	AssemblyQueued         int64
	YEncQueued             int64
	Duration               time.Duration
}

type ArticleHeader

type ArticleHeader struct {
	ArticleNumber int64
	MessageID     string
	Subject       string
	Poster        string
	DateUTC       *time.Time
	Bytes         int64
	Lines         int
	Xref          string
	RawOverview   map[string]any
}

type AssemblyCandidate

type AssemblyCandidate struct {
	ID                              int64
	SourcePostedAt                  time.Time
	ProviderID                      int64
	NewsgroupID                     int64
	NewsgroupName                   string
	ArticleNumber                   int64
	MessageID                       string
	Subject                         string
	Poster                          string
	DateUTC                         *time.Time
	Bytes                           int64
	Lines                           int
	Xref                            string
	PosterID                        int64
	FileName                        string
	FileIndex                       int
	FileTotal                       int
	YEncPart                        int
	YEncTotal                       int
	YEncFileSize                    int64
	YEncRecoveryMissingCount        int
	YEncRecoveryRetryAfter          *time.Time
	StructuredIdentityBinaryMatched bool
	RawOverview                     map[string]any
}

unassembled header row used by Milestone 6 assembly service.

type AssemblyClaimRequest added in v0.7.1

type AssemblyClaimRequest struct {
	Limit                  int
	Owner                  string
	LeaseDuration          time.Duration
	Lane                   string
	LaneATargetPct         int
	LaneBMinPct            int
	LaneATimeWindowMinutes int
	TargetWindowStart      *time.Time
	TargetWindowEnd        *time.Time
}

type AssemblyClaimStats added in v0.8.0

type AssemblyClaimStats struct {
	ClaimDuration     time.Duration
	HydrationDuration time.Duration
	Claimed           int
	Hydrated          int
}

type BackfillCheckpointState added in v0.7.0

type BackfillCheckpointState struct {
	ArticleNumber int64
	UntilDate     *time.Time
	CutoffReached bool
	StoppedReason string
}

type BinaryArchiveEntryRecord added in v0.7.0

type BinaryArchiveEntryRecord struct {
	BinaryID          int64
	ReleaseID         string
	EntryName         string
	IsDir             bool
	UncompressedBytes int64
	CompressedBytes   int64
	Encrypted         bool
	Comment           string
	MediaType         string
	Signature         string
	Metadata          map[string]any
}

type BinaryEvidenceDiagnostic added in v0.9.0

type BinaryEvidenceDiagnostic struct {
	PoolID              string
	PeerNodeID          string
	Direction           string
	EvidenceKind        string
	RequestCount        int
	HitCount            int
	ItemCount           int
	BodyRequestsAvoided int
	ResponseBytes       int64
	Conflicts           int
	Quarantines         int
	LatencyMS           int64
	ErrorText           string
}

type BinaryEvidenceDiagnosticRecord added in v0.9.0

type BinaryEvidenceDiagnosticRecord struct {
	DiagnosticID        int64     `json:"diagnostic_id"`
	PoolID              string    `json:"pool_id"`
	PeerNodeID          string    `json:"peer_node_id"`
	Direction           string    `json:"direction"`
	EvidenceKind        string    `json:"evidence_kind"`
	RequestCount        int       `json:"request_count"`
	HitCount            int       `json:"hit_count"`
	ItemCount           int       `json:"item_count"`
	BodyRequestsAvoided int       `json:"body_requests_avoided"`
	ResponseBytes       int64     `json:"response_bytes"`
	Conflicts           int       `json:"conflicts"`
	Quarantines         int       `json:"quarantines"`
	LatencyMS           int64     `json:"latency_ms"`
	ErrorText           string    `json:"error_text,omitempty"`
	CreatedAt           time.Time `json:"created_at"`
}

type BinaryEvidencePeer added in v0.9.0

type BinaryEvidencePeer struct {
	PoolID  string
	NodeID  string
	BaseURL string
}

type BinaryEvidenceRepairCandidate added in v0.9.0

type BinaryEvidenceRepairCandidate struct {
	BinaryID     int64
	Scheme       string
	MatchID      string
	MissingParts []int
	Anchors      []string
}

type BinaryExchangeIdentityCandidate added in v0.9.0

type BinaryExchangeIdentityCandidate struct {
	BinaryID   int64
	FileName   string
	FileIndex  int
	FileTotal  int
	TotalParts int
	FileSize   int64
	Recovered  bool
	Confidence float64
}

type BinaryInspectionArtifactRecord added in v0.7.0

type BinaryInspectionArtifactRecord struct {
	BinaryID     int64
	ReleaseID    string
	StageName    string
	ArtifactRole string
	ArtifactName string
	ArtifactPath string
	BytesTotal   int64
	MIMEType     string
	Signature    string
	SourceKind   string
	Metadata     map[string]any
}

type BinaryInspectionCandidate added in v0.7.0

type BinaryInspectionCandidate struct {
	StageName          string
	BinaryID           int64
	ReleaseID          string
	ProviderID         int64
	ReleaseTitle       string
	SourceTitle        string
	DeobfuscatedTitle  string
	GroupName          string
	FileName           string
	BinaryName         string
	ReleaseName        string
	Poster             string
	PostedAt           *time.Time
	TotalBytes         int64
	TotalParts         int
	MatchConfidence    float64
	SourceUpdatedAt    *time.Time
	CurrentStatus      string
	CurrentUpdatedAt   *time.Time
	CurrentSummaryJSON json.RawMessage
	ArchiveSummaryJSON json.RawMessage
}

type BinaryInspectionCandidateOptions added in v0.8.0

type BinaryInspectionCandidateOptions struct {
	RequireExpectedFileCount bool
}

type BinaryInspectionClaimRequest added in v0.7.1

type BinaryInspectionClaimRequest struct {
	StageName     string
	Limit         int
	Owner         string
	LeaseDuration time.Duration
	Options       BinaryInspectionCandidateOptions
}

type BinaryInspectionReadyQueueRefreshResult added in v0.8.0

type BinaryInspectionReadyQueueRefreshResult struct {
	ReadyUpserted int64
	Retired       int64
	Requeued      int64
}

type BinaryInspectionRecord added in v0.7.0

type BinaryInspectionRecord struct {
	StageName         string
	BinaryID          int64
	ReleaseID         string
	Status            string
	ErrorText         string
	MaterializedBytes int64
	ToolProvenance    map[string]any
	Summary           map[string]any
	SourceUpdatedAt   *time.Time
}

type BinaryMediaStreamRecord added in v0.7.0

type BinaryMediaStreamRecord struct {
	BinaryID           int64
	ReleaseID          string
	StreamIndex        int
	StreamType         string
	CodecName          string
	CodecLongName      string
	Profile            string
	Width              int
	Height             int
	Channels           int
	Language           string
	DurationSeconds    float64
	BitRate            int64
	DefaultDisposition bool
	ForcedDisposition  bool
	Metadata           map[string]any
}

type BinaryPAR2SetRecord added in v0.7.0

type BinaryPAR2SetRecord struct {
	BinaryID       int64
	ReleaseID      string
	SetName        string
	BaseName       string
	IsVolume       bool
	VolumeNumber   int
	RecoveryBlocks int
	SignatureOK    bool
	Metadata       map[string]any
}

type BinaryPAR2TargetCoverageResult added in v0.7.3

type BinaryPAR2TargetCoverageResult struct {
	TargetCount        int
	MainTargetCount    int
	UpdatedBinaryCount int
	SummaryKeys        []releaseFamilySummaryKey
}

type BinaryPAR2TargetRecord added in v0.7.3

type BinaryPAR2TargetRecord struct {
	BinaryID  int64
	ReleaseID string
	FileName  string
	FileSize  int64
	Metadata  map[string]any
}

type BinaryPartRecord

type BinaryPartRecord struct {
	BinaryID        int64
	ArticleHeaderID int64
	SourcePostedAt  time.Time
	MessageID       string
	PartNumber      int
	TotalParts      int
	SegmentBytes    int64
	FileName        string
}

binary part upsert input for assembly service.

type BinaryRecord

type BinaryRecord struct {
	ProviderID        int64
	NewsgroupID       int64
	PosterID          int64
	SourceReleaseKey  string
	ReleaseFamilyKey  string
	FileSetKey        string
	FileFamilyKey     string
	IdentityStrength  string
	IdentityReason    string
	SubjectSetToken   string
	SubjectSetKind    string
	FamilyKind        string
	BaseStem          string
	IsAuxiliary       bool
	IsMainPayload     bool
	ReleaseKey        string
	ReleaseName       string
	BinaryKey         string
	BinaryName        string
	FileName          string
	FileIndex         int
	ExpectedFileCount int
	TotalParts        int
	PostedAt          *time.Time
	MatchConfidence   float64
	MatchStatus       string
	GroupingEvidence  map[string]any
}

binary upsert input for assembly service.

type BinaryRecoveryRecord added in v0.7.0

type BinaryRecoveryRecord struct {
	BinaryID     int64
	Kind         string
	Extension    string
	Source       string
	Confidence   float64
	Canonicalize bool
}

type BinaryStatsRefreshTelemetry added in v0.8.0

type BinaryStatsRefreshTelemetry struct {
	TxCount                       int
	BatchCount                    int
	BinaryCount                   int
	SummaryKeyCount               int
	DeferredSummaryRefreshBatches int
	DeferredSummaryKeyCount       int
	StatsUpdateDurationMs         float64
	StatsUpdateDurationMaxMs      float64
	SummaryMarkDurationMs         float64
	SummaryMarkDurationMaxMs      float64
	YEncSyncDurationMs            float64
	YEncSyncDurationMaxMs         float64
	YEncAdmissionDurationMs       float64
	YEncAdmissionDurationMaxMs    float64
	YEncPriorityOpenDurationMs    float64
	YEncPriorityOpenDurationMaxMs float64
	YEncSyncChunkCount            int
	YEncSyncChunkBinaryCount      int
	YEncSyncUpserted              int64
	YEncSyncRetired               int64
	YEncSyncUpsertDurationMs      float64
	YEncSyncUpsertDurationMaxMs   float64
	YEncSyncRetireDurationMs      float64
	YEncSyncRetireDurationMaxMs   float64
	YEncPromotionDurationMs       float64
	YEncPromotionDurationMaxMs    float64
	// contains filtered or unexported fields
}

func (*BinaryStatsRefreshTelemetry) Snapshot added in v0.8.0

type BinarySummary

type BinarySummary struct {
	BinaryID                 int64
	ProviderID               int64
	NewsgroupID              int64
	SourceReleaseKey         string
	ReleaseFamilyKey         string
	FileFamilyKey            string
	FamilyKind               string
	BaseStem                 string
	IsAuxiliary              bool
	IsMainPayload            bool
	ReleaseKey               string
	ReleaseName              string
	BinaryKey                string
	BinaryName               string
	FileName                 string
	FileIndex                int
	ExpectedFileCount        int
	ExpectedArchiveFileCount int
	Poster                   string
	PostedAt                 *time.Time
	TotalParts               int
	ObservedParts            int
	TotalBytes               int64
	FirstArticleNumber       int64
	LastArticleNumber        int64
	MatchConfidence          float64
	MatchStatus              string
}

binary summary returned to release formation.

type BinaryTextEvidenceRecord added in v0.7.0

type BinaryTextEvidenceRecord struct {
	BinaryID     int64
	ReleaseID    string
	StageName    string
	EvidenceKind string
	TextValue    string
	Tokens       []string
	Metadata     map[string]any
}

type BinaryUpsertTelemetry added in v0.8.0

type BinaryUpsertTelemetry struct {
	ChunkCount                     int
	ChunkRows                      int
	ChunkRetries                   int
	ChunkRetryDeadlocks            int
	ChunkRetrySerialization        int
	ChunkDurationMs                float64
	ChunkDurationMaxMs             float64
	LockDurationMs                 float64
	LockDurationMaxMs              float64
	StageDurationMs                float64
	StageDurationMaxMs             float64
	ExistingSnapshotDurationMs     float64
	ExistingSnapshotDurationMaxMs  float64
	UpdateDurationMs               float64
	UpdateDurationMaxMs            float64
	InsertDurationMs               float64
	InsertDurationMaxMs            float64
	ObservationStatsDurationMs     float64
	ObservationStatsDurationMaxMs  float64
	IdentityDurationMs             float64
	IdentityDurationMaxMs          float64
	RecoverySeedDurationMs         float64
	RecoverySeedDurationMaxMs      float64
	LifecycleSeedDurationMs        float64
	LifecycleSeedDurationMaxMs     float64
	CompletionKeySyncDurationMs    float64
	CompletionKeySyncDurationMaxMs float64
	ReadbackDurationMs             float64
	ReadbackDurationMaxMs          float64
	UpsertQueryDurationMs          float64
	UpsertQueryDurationMaxMs       float64
	EvidenceDurationMs             float64
	EvidenceDurationMaxMs          float64
	DeferredSummaryRefreshChunks   int
	DeferredSummaryKeyCount        int
	// contains filtered or unexported fields
}

func (*BinaryUpsertTelemetry) Snapshot added in v0.8.0

type BodyRequestBudgetSnapshot added in v0.9.0

type BodyRequestBudgetSnapshot struct {
	BudgetKey     string    `json:"budget_key"`
	Limit         int64     `json:"limit"`
	Used          int64     `json:"used"`
	Remaining     int64     `json:"remaining"`
	WindowStarted time.Time `json:"window_started_at"`
}

type CatalogArticleRef

type CatalogArticleRef struct {
	MessageID  string
	Bytes      int64
	PartNumber int
	GroupName  string
}

type CatalogReader added in v0.7.3

type CatalogReader interface {
	ListCatalogReleaseFiles(ctx context.Context, releaseID string) ([]CatalogReleaseFile, error)
	ListCatalogReleaseFileArticles(ctx context.Context, releaseFileID int64) ([]CatalogArticleRef, error)
	ListCatalogReleaseNewsgroups(ctx context.Context, releaseID string) ([]string, error)
	GetCatalogBinaryFile(ctx context.Context, binaryID int64) (*CatalogReleaseFile, error)
	ListCatalogBinaryArticles(ctx context.Context, binaryID int64) ([]CatalogArticleRef, error)
	ListCatalogBinaryNewsgroups(ctx context.Context, binaryID int64) ([]string, error)
}

type CatalogReleaseFile

type CatalogReleaseFile struct {
	ID        int64
	BinaryID  int64
	GroupName string
	FileName  string
	Subject   string
	Poster    string
	PostedAt  *time.Time
	SizeBytes int64
	IsPars    bool
	FileIndex int
}

read DTOs for PG-backed NZB materialization in Milestone 7.

type ChecksumAttestationProjection added in v0.9.0

type ChecksumAttestationProjection struct {
	Attestation  validation.ChecksumAttestation
	EventID      string
	AuthorNodeID string
	PoolID       string
}

type CoverageAssignmentRecord added in v0.9.0

type CoverageAssignmentRecord struct {
	AssignmentID   string     `json:"assignment_id"`
	PoolID         string     `json:"pool_id"`
	Group          string     `json:"group"`
	AssignedNodeID string     `json:"assigned_node_id"`
	RangeStart     int64      `json:"range_start,omitempty"`
	RangeEnd       int64      `json:"range_end,omitempty"`
	WindowStart    *time.Time `json:"window_start,omitempty"`
	WindowEnd      *time.Time `json:"window_end,omitempty"`
	Priority       int        `json:"priority"`
	DueAt          *time.Time `json:"due_at,omitempty"`
	Status         string     `json:"status"`
	CreatedAt      time.Time  `json:"created_at"`
}

type CoverageClaimRecord added in v0.9.0

type CoverageClaimRecord struct {
	ClaimID      string     `json:"claim_id"`
	ClaimType    string     `json:"claim_type"`
	AssignmentID string     `json:"assignment_id,omitempty"`
	PoolID       string     `json:"pool_id"`
	Group        string     `json:"group"`
	NodeID       string     `json:"node_id"`
	RangeStart   int64      `json:"range_start,omitempty"`
	RangeEnd     int64      `json:"range_end,omitempty"`
	WindowStart  *time.Time `json:"window_start,omitempty"`
	WindowEnd    *time.Time `json:"window_end,omitempty"`
	ClaimedAt    time.Time  `json:"claimed_at"`
	ExpiresAt    time.Time  `json:"expires_at"`
	Status       string     `json:"status"`
}

type CoverageDashboard added in v0.9.0

type CoverageDashboard struct {
	Assignments   []CoverageAssignmentRecord `json:"assignments"`
	Claims        []CoverageClaimRecord      `json:"claims"`
	StaleClaims   []CoverageClaimRecord      `json:"stale_claims"`
	Outcomes      []CoverageOutcomeRecord    `json:"outcomes"`
	Gaps          []CoverageAssignmentRecord `json:"gaps"`
	Duplicates    []CoverageDuplicateRecord  `json:"duplicates"`
	CoverageScore float64                    `json:"coverage_score"`
}

type CoverageDuplicateRecord added in v0.9.0

type CoverageDuplicateRecord struct {
	PoolID     string   `json:"pool_id"`
	Group      string   `json:"group"`
	RangeStart int64    `json:"range_start"`
	RangeEnd   int64    `json:"range_end"`
	ClaimCount int      `json:"claim_count"`
	NodeIDs    []string `json:"node_ids"`
}

type CoverageGroupCatalogItem added in v0.9.0

type CoverageGroupCatalogItem struct {
	PoolID        string    `json:"pool_id"`
	Group         string    `json:"group"`
	ObservedAt    time.Time `json:"observed_at"`
	LowWatermark  int64     `json:"low_watermark"`
	HighWatermark int64     `json:"high_watermark"`
	RetentionDays int       `json:"retention_days"`
	Confidence    float64   `json:"confidence"`
	AuthorNodeID  string    `json:"author_node_id"`
}

type CoverageOutcomeRecord added in v0.9.0

type CoverageOutcomeRecord struct {
	OutcomeID    string    `json:"outcome_id"`
	OutcomeType  string    `json:"outcome_type"`
	ClaimID      string    `json:"claim_id,omitempty"`
	AssignmentID string    `json:"assignment_id,omitempty"`
	PoolID       string    `json:"pool_id"`
	Group        string    `json:"group"`
	NodeID       string    `json:"node_id"`
	RangeStart   int64     `json:"range_start"`
	RangeEnd     int64     `json:"range_end"`
	ReleaseCount int       `json:"release_count,omitempty"`
	Reason       string    `json:"reason,omitempty"`
	OccurredAt   time.Time `json:"occurred_at"`
}

type CoverageRangeBlock added in v0.9.0

type CoverageRangeBlock struct {
	Blocked           bool
	Reason            string
	ClaimID           string
	OutcomeID         string
	NodeID            string
	AdvanceCheckpoint bool
}

type CoverageRangeBlockParams added in v0.9.0

type CoverageRangeBlockParams struct {
	PoolID                string
	NodeID                string
	Group                 string
	RangeStart            int64
	RangeEnd              int64
	ProviderBackboneHash  string
	RequireProviderScope  bool
	MinBlockingTrustScore float64
	RespectRemoteClaims   bool
	SkipCompleted         bool
}

type CoverageScannerNode added in v0.9.0

type CoverageScannerNode struct {
	NodeID           string  `json:"node_id"`
	Weight           float64 `json:"weight"`
	MaxRangesPerHour int     `json:"max_ranges_per_hour"`
	LocalTrustScore  float64 `json:"local_trust_score"`
}

type CoverageSchedulerPlan added in v0.9.0

type CoverageSchedulerPlan struct {
	Suggestions []CoverageWorkSuggestion `json:"suggestions"`
	StaleClaims []CoverageClaimRecord    `json:"stale_claims"`
	Mode        string                   `json:"mode"`
}

type CoverageWorkSuggestion added in v0.9.0

type CoverageWorkSuggestion struct {
	Assignment CoverageAssignmentRecord `json:"assignment"`
	Reason     string                   `json:"reason"`
}

type CoverageWorkSuggestionParams added in v0.9.0

type CoverageWorkSuggestionParams struct {
	PoolID                string
	NodeID                string
	Mode                  string
	Limit                 int
	MinBlockingTrustScore float64
	RequireArticleRange   bool
}

type CrossGroupSubjectMultipartRegroupRequest added in v0.9.0

type CrossGroupSubjectMultipartRegroupRequest struct {
	Limit             int
	TargetWindowStart *time.Time
	TargetWindowEnd   *time.Time
}

func (CrossGroupSubjectMultipartRegroupRequest) HasTargetWindow added in v0.9.0

func (r CrossGroupSubjectMultipartRegroupRequest) HasTargetWindow() bool

type CrossGroupSubjectMultipartRegroupResult added in v0.9.0

type CrossGroupSubjectMultipartRegroupResult struct {
	Groups                int64   `json:"groups"`
	TargetBinaries        int64   `json:"target_binaries"`
	SourceBinaries        int64   `json:"source_binaries"`
	PartsMoved            int64   `json:"parts_moved"`
	DuplicatePartsDeleted int64   `json:"duplicate_parts_deleted"`
	TargetBinaryIDs       []int64 `json:"-"`
}

type DatabaseStorageGuardConfig added in v0.8.0

type DatabaseStorageGuardConfig struct {
	Enabled        bool
	DataDirectory  string
	MinFreeBytes   int64
	MinFreePercent float64
}

type DatabaseStorageGuardEvaluation added in v0.8.0

type DatabaseStorageGuardEvaluation struct {
	Blocked bool
	Reason  string
	Status  DatabaseStorageStatus
}

func EvaluateDatabaseStorageGuard added in v0.8.0

type DatabaseStorageStatus added in v0.8.0

type DatabaseStorageStatus struct {
	DatabaseBytes         int64
	DataDirectory         string
	FilesystemFreeBytes   int64
	FilesystemTotalBytes  int64
	FilesystemFreePercent float64
	FilesystemVisible     bool
}

type DeferredArticleRangeClaim added in v0.9.0

type DeferredArticleRangeClaim struct {
	ID            int64
	ProviderID    int64
	ProviderKey   string
	NewsgroupID   int64
	GroupName     string
	ArticleLow    int64
	ArticleHigh   int64
	Reason        string
	PriorityScore float64
	Attempts      int
}

type DeferredArticleRangeRecord added in v0.8.0

type DeferredArticleRangeRecord struct {
	ProviderID               int64
	NewsgroupID              int64
	ArticleLow               int64
	ArticleHigh              int64
	PostedAtMin              *time.Time
	PostedAtMax              *time.Time
	EstimatedArticleCount    int64
	EstimatedObfuscatedCount int64
	Reason                   string
	PriorityScore            float64
}

type DeferredArticleRangeSummary added in v0.8.0

type DeferredArticleRangeSummary struct {
	ID                    int64      `json:"id"`
	ProviderID            int64      `json:"provider_id"`
	ProviderKey           string     `json:"provider_key"`
	NewsgroupID           int64      `json:"newsgroup_id"`
	GroupName             string     `json:"group_name"`
	ArticleLow            int64      `json:"article_low"`
	ArticleHigh           int64      `json:"article_high"`
	PostedAtMin           *time.Time `json:"posted_at_min,omitempty"`
	PostedAtMax           *time.Time `json:"posted_at_max,omitempty"`
	EstimatedArticleCount int64      `json:"estimated_article_count"`
	Reason                string     `json:"reason"`
	PriorityScore         float64    `json:"priority_score"`
	State                 string     `json:"state"`
	Attempts              int        `json:"attempts"`
	LastError             string     `json:"last_error"`
	UpdatedAt             time.Time  `json:"updated_at"`
}

type FederatedManifestSource added in v0.9.0

type FederatedManifestSource struct {
	ManifestID    string
	ReleaseID     string
	SourceNodeID  string
	SourceEventID string
	PoolID        string
	BaseURL       string
	TrustScore    float64
}

type FederatedManifestSourceDiagnostic added in v0.9.0

type FederatedManifestSourceDiagnostic struct {
	ManifestID    string     `json:"manifest_id"`
	ReleaseID     string     `json:"release_id"`
	SourceNodeID  string     `json:"source_node_id"`
	PoolID        string     `json:"pool_id"`
	Advertised    bool       `json:"advertised"`
	LastSuccessAt *time.Time `json:"last_success_at,omitempty"`
	LastFailureAt *time.Time `json:"last_failure_at,omitempty"`
	FailureCount  int        `json:"failure_count"`
	AvgLatencyMS  int        `json:"avg_latency_ms"`
	TrustScore    float64    `json:"trust_score"`
	UpdatedAt     time.Time  `json:"updated_at"`
}

type FederatedReleaseCardSearchParams added in v0.9.0

type FederatedReleaseCardSearchParams struct {
	Query  string
	IMDBID string
	TVDBID int64
	Pools  []string
	Limit  int
}

type FederatedReleaseCardSummary added in v0.9.0

type FederatedReleaseCardSummary struct {
	ReleaseID          string
	ManifestID         string
	Title              string
	NormalizedTitle    string
	NewznabCategories  []int
	SizeBytes          int64
	PostedAt           *time.Time
	BestScore          float64
	AvailabilityScore  float64
	TrustScore         float64
	Resolvable         bool
	SourceEventID      string
	PoolID             string
	SourceNodeID       string
	ManifestConfidence float64
}

type FederatedReleaseSourceDiagnostic added in v0.9.0

type FederatedReleaseSourceDiagnostic struct {
	ReleaseID               string     `json:"release_id"`
	ManifestID              string     `json:"manifest_id"`
	Title                   string     `json:"title"`
	SourceNodeID            string     `json:"source_node_id"`
	SourceEventID           string     `json:"source_event_id"`
	PoolID                  string     `json:"pool_id"`
	TrustScore              float64    `json:"trust_score"`
	AvailabilityScore       float64    `json:"availability_score"`
	ManifestConfidenceScore float64    `json:"manifest_confidence_score"`
	Resolvable              bool       `json:"resolvable"`
	PostedAt                *time.Time `json:"posted_at,omitempty"`
	FirstSeenAt             time.Time  `json:"first_seen_at"`
	LastSeenAt              time.Time  `json:"last_seen_at"`
}

type FederatedScoreRecomputeResult added in v0.9.0

type FederatedScoreRecomputeResult struct {
	PoolID        string `json:"pool_id"`
	SourceUpdates int64  `json:"source_updates"`
	CardUpdates   int64  `json:"card_updates"`
}

type FederationActivityQuery added in v0.9.0

type FederationActivityQuery struct {
	PoolID string
	NodeID string
	Job    string
	Since  time.Time
	Limit  int
}

type FederationAdmissionRecord added in v0.9.0

type FederationAdmissionRecord struct {
	ProposalEventID       string     `json:"proposal_event_id"`
	PoolID                string     `json:"pool_id"`
	GenesisEventID        string     `json:"genesis_event_id"`
	CandidateNodeID       string     `json:"candidate_node_id"`
	CandidateURL          string     `json:"candidate_url"`
	RelayNodeID           string     `json:"relay_node_id"`
	RelayURL              string     `json:"relay_url"`
	RequestedRole         string     `json:"requested_role"`
	RequestedCapabilities []string   `json:"requested_capabilities"`
	Status                string     `json:"status"`
	FinalEventID          string     `json:"final_event_id"`
	RejectionReason       string     `json:"rejection_reason"`
	ExpiresAt             *time.Time `json:"expires_at,omitempty"`
	CreatedAt             time.Time  `json:"created_at"`
	UpdatedAt             time.Time  `json:"updated_at"`
}

type FederationDeliveryResult added in v0.9.0

type FederationDeliveryResult struct {
	PeerID  int64
	EventID string
	Status  string
	Error   string
}

type FederationEventDiagnostic added in v0.9.0

type FederationEventDiagnostic struct {
	EventID          string          `json:"event_id"`
	EventType        string          `json:"event_type"`
	AuthorNodeID     string          `json:"author_node_id"`
	Sequence         int64           `json:"sequence"`
	BodyHash         string          `json:"body_hash"`
	PoolIDs          json.RawMessage `json:"pool_ids"`
	Visibility       string          `json:"visibility"`
	CreatedAt        time.Time       `json:"created_at"`
	ReceivedAt       time.Time       `json:"received_at"`
	ValidationStatus string          `json:"validation_status"`
	RejectionReason  string          `json:"rejection_reason,omitempty"`
	Projected        bool            `json:"projected"`
	ProjectedAt      *time.Time      `json:"projected_at,omitempty"`
	Tombstoned       bool            `json:"tombstoned"`
}

type FederationEventDiagnosticParams added in v0.10.0

type FederationEventDiagnosticParams struct {
	PoolID           string
	NodeID           string
	EventType        string
	ValidationStatus string
	Projected        *bool
	Tombstoned       *bool
	Limit            int
}

type FederationEventRecord added in v0.9.0

type FederationEventRecord struct {
	Event              *events.SignedEvent
	Validation         *events.ValidationResult
	ValidationStatus   string
	RejectionReason    string
	CanonicalEventJSON []byte
}

type FederationEvidenceSummary added in v0.9.0

type FederationEvidenceSummary struct {
	Total       int64            `json:"total"`
	Fresh       int64            `json:"fresh"`
	Aging       int64            `json:"aging"`
	Stale       int64            `json:"stale"`
	Reporters   int64            `json:"reporters"`
	Statuses    map[string]int64 `json:"statuses"`
	LastChecked *time.Time       `json:"last_checked_at,omitempty"`
}

type FederationMemberContribution added in v0.9.0

type FederationMemberContribution struct {
	NodeID              string     `json:"node_id"`
	Alias               string     `json:"alias"`
	ReleaseCards        int64      `json:"release_cards"`
	Manifests           int64      `json:"manifests"`
	HealthAttestations  int64      `json:"health_attestations"`
	ArticleAvailability int64      `json:"article_availability"`
	CoverageEvents      int64      `json:"coverage_events"`
	TotalEvents         int64      `json:"total_events"`
	LastContributionAt  *time.Time `json:"last_contribution_at,omitempty"`
}

type FederationNodeEndpoint added in v0.10.0

type FederationNodeEndpoint struct {
	ID             int64      `json:"id"`
	NodeID         string     `json:"node_id"`
	TransportType  string     `json:"transport_type"`
	Locator        string     `json:"locator"`
	Priority       int        `json:"priority"`
	Enabled        bool       `json:"enabled"`
	PathType       string     `json:"path_type,omitempty"`
	ICEState       string     `json:"ice_state,omitempty"`
	RTTMS          int64      `json:"rtt_ms"`
	ReconnectCount int64      `json:"reconnect_count"`
	BytesSent      int64      `json:"bytes_sent"`
	BytesReceived  int64      `json:"bytes_received"`
	FailureCount   int        `json:"failure_count"`
	LastSuccessAt  *time.Time `json:"last_success_at,omitempty"`
	LastFailureAt  *time.Time `json:"last_failure_at,omitempty"`
	LastError      string     `json:"last_error,omitempty"`
	UpdatedAt      time.Time  `json:"updated_at"`
}

type FederationNodeRecord added in v0.9.0

type FederationNodeRecord struct {
	NodeID            string
	PublicKey         ed25519.PublicKey
	Alias             string
	Software          string
	SoftwareVersion   string
	BaseURL           string
	AlternateLocators []string
	Capabilities      json.RawMessage
	ModuleStatus      json.RawMessage
	ScannerCapacity   json.RawMessage
	ValidatorCapacity json.RawMessage
	ProviderScope     json.RawMessage
	ProfileJSON       json.RawMessage
	Status            string
	LastVerifiedAt    *time.Time
}

type FederationOutboxPage added in v0.9.0

type FederationOutboxPage struct {
	Events     []*events.SignedEvent
	NextCursor string
	HasMore    bool
}

type FederationOutboxParams added in v0.9.0

type FederationOutboxParams struct {
	Since            string
	PoolID           string
	EventType        string
	RequestingNodeID string
	Limit            int
}

type FederationPeerDeliveryDiagnostic added in v0.9.0

type FederationPeerDeliveryDiagnostic struct {
	PeerID        int64      `json:"peer_id"`
	PeerURL       string     `json:"peer_url"`
	EventID       string     `json:"event_id"`
	EventType     string     `json:"event_type"`
	Status        string     `json:"status"`
	Attempts      int        `json:"attempts"`
	LastAttemptAt *time.Time `json:"last_attempt_at,omitempty"`
	DeliveredAt   *time.Time `json:"delivered_at,omitempty"`
	LastError     string     `json:"last_error"`
	UpdatedAt     time.Time  `json:"updated_at"`
}

type FederationPeerDiagnostic added in v0.9.0

type FederationPeerDiagnostic struct {
	ID              int64      `json:"id"`
	NodeID          string     `json:"node_id"`
	PeerURL         string     `json:"peer_url"`
	Source          string     `json:"source"`
	Enabled         bool       `json:"enabled"`
	Status          string     `json:"status"`
	Cursor          string     `json:"cursor"`
	LastEventID     string     `json:"last_event_id"`
	FailureCount    int        `json:"failure_count"`
	LastError       string     `json:"last_error"`
	LastConnectedAt *time.Time `json:"last_connected_at,omitempty"`
	LastSyncAt      *time.Time `json:"last_sync_at,omitempty"`
	UpdatedAt       time.Time  `json:"updated_at"`
}

type FederationPeerRecord added in v0.9.0

type FederationPeerRecord struct {
	ID           int64
	NodeID       string
	PeerURL      string
	Source       string
	Enabled      bool
	Status       string
	Cursor       string
	LastEventID  string
	FailureCount int
	LastError    string
	UpdatedAt    time.Time
}

type FederationPoolHealthReport added in v0.9.0

type FederationPoolHealthReport struct {
	PoolID              string                         `json:"pool_id"`
	GeneratedAt         time.Time                      `json:"generated_at"`
	FreshBefore         time.Time                      `json:"fresh_before"`
	StaleBefore         time.Time                      `json:"stale_before"`
	ReleaseHealth       FederationEvidenceSummary      `json:"release_health"`
	ArticleAvailability FederationEvidenceSummary      `json:"article_availability"`
	Contributors        []FederationMemberContribution `json:"contributors"`
}

type FederationProtocolCompactionResult added in v0.9.0

type FederationProtocolCompactionResult struct {
	ExpiredNonces       int64 `json:"expired_nonces"`
	RejectedEvents      int64 `json:"rejected_events"`
	StaleHandshakeNodes int64 `json:"stale_handshake_nodes"`
}

type FederationRejectedEventDiagnostic added in v0.9.0

type FederationRejectedEventDiagnostic struct {
	ID              int64     `json:"id"`
	EventID         string    `json:"event_id"`
	AuthorNodeID    string    `json:"author_node_id"`
	EventType       string    `json:"event_type"`
	RejectionReason string    `json:"rejection_reason"`
	ReceivedAt      time.Time `json:"received_at"`
}

type FederationRejectedEventSummary added in v0.9.0

type FederationRejectedEventSummary struct {
	AuthorNodeID    string    `json:"author_node_id"`
	RejectionReason string    `json:"rejection_reason"`
	Total           int       `json:"total"`
	LastHour        int       `json:"last_hour"`
	LastDay         int       `json:"last_day"`
	FirstSeenAt     time.Time `json:"first_seen_at"`
	LastSeenAt      time.Time `json:"last_seen_at"`
}

type FederationReleaseLedgerItem added in v0.10.0

type FederationReleaseLedgerItem struct {
	ReleaseID               string     `json:"release_id"`
	ManifestID              string     `json:"manifest_id"`
	ProjectedTitle          string     `json:"projected_title"`
	SignedTitle             string     `json:"signed_title"`
	ProjectionMatchesSigned bool       `json:"projection_matches_signed_event"`
	SourceNodeID            string     `json:"source_node_id"`
	SourceEventID           string     `json:"source_event_id"`
	SourceBodyHash          string     `json:"source_body_hash"`
	SourceKind              string     `json:"source_kind"`
	PoolID                  string     `json:"pool_id"`
	NodeStatus              string     `json:"node_status"`
	MembershipStatus        string     `json:"membership_status"`
	PublicationState        string     `json:"publication_state"`
	PublicationEventID      string     `json:"publication_event_id,omitempty"`
	PublicationReason       string     `json:"publication_reason,omitempty"`
	PublicationChangedAt    *time.Time `json:"publication_changed_at,omitempty"`
	TombstoneTargetType     string     `json:"tombstone_target_type,omitempty"`
	TombstoneTargetID       string     `json:"tombstone_target_id,omitempty"`
	TombstoneSeverity       string     `json:"tombstone_severity,omitempty"`
	TombstoneSourceEventID  string     `json:"tombstone_source_event_id,omitempty"`
	EffectiveState          string     `json:"effective_state"`
	PostedAt                *time.Time `json:"posted_at,omitempty"`
	FirstSeenAt             time.Time  `json:"first_seen_at"`
	LastSeenAt              time.Time  `json:"last_seen_at"`
}

type FederationReleaseLedgerPage added in v0.10.0

type FederationReleaseLedgerPage struct {
	Items      []FederationReleaseLedgerItem `json:"items"`
	Count      int                           `json:"count"`
	NextCursor string                        `json:"next_cursor,omitempty"`
}

type FederationReleaseLedgerParams added in v0.10.0

type FederationReleaseLedgerParams struct {
	PoolID     string
	NodeID     string
	ReleaseID  string
	Query      string
	SourceKind string
	State      string
	Cursor     string
	Limit      int
}

type FederationRolePoolAccessRecord added in v0.9.0

type FederationRolePoolAccessRecord struct {
	RoleID             string    `json:"role_id"`
	PoolID             string    `json:"pool_id"`
	CanSearch          bool      `json:"can_search"`
	CanGet             bool      `json:"can_get"`
	CanResolveManifest bool      `json:"can_resolve_manifest"`
	CreatedAt          time.Time `json:"created_at"`
	UpdatedAt          time.Time `json:"updated_at"`
}

type FederationStorageRelation added in v0.9.0

type FederationStorageRelation struct {
	Name          string `json:"name"`
	Category      string `json:"category"`
	EstimatedRows int64  `json:"estimated_rows"`
	TotalBytes    int64  `json:"total_bytes"`
}

type FederationStorageReport added in v0.9.0

type FederationStorageReport struct {
	Available       bool                        `json:"available"`
	DatabaseBytes   int64                       `json:"database_bytes"`
	GoNZBNetBytes   int64                       `json:"gonzbnet_bytes"`
	ProtocolBytes   int64                       `json:"protocol_bytes"`
	ProjectionBytes int64                       `json:"projection_bytes"`
	EvidenceBytes   int64                       `json:"evidence_bytes"`
	Relations       []FederationStorageRelation `json:"relations"`
}

type HealthAttestationDiagnostic added in v0.9.0

type HealthAttestationDiagnostic struct {
	AttestationID         string    `json:"attestation_id"`
	ManifestID            string    `json:"manifest_id"`
	ReleaseID             string    `json:"release_id"`
	AuthorNodeID          string    `json:"author_node_id"`
	PoolID                string    `json:"pool_id"`
	CheckedAt             time.Time `json:"checked_at"`
	Status                string    `json:"status"`
	ArticlesTotal         int       `json:"articles_total"`
	ArticlesAvailable     int       `json:"articles_available"`
	MissingArticles       int       `json:"missing_articles"`
	RepairAvailable       bool      `json:"repair_available"`
	RepairConfidence      float64   `json:"repair_confidence"`
	RetentionDaysObserved int       `json:"retention_days_observed"`
	Confidence            float64   `json:"confidence"`
	AvailabilityScore     float64   `json:"availability_score"`
	Method                string    `json:"method"`
	SourceEventID         string    `json:"source_event_id"`
	UpdatedAt             time.Time `json:"updated_at"`
}

type HealthAttestationProjection added in v0.9.0

type HealthAttestationProjection struct {
	Attestation  health.Attestation
	EventID      string
	AuthorNodeID string
	PoolID       string
}

type IndexerAdminAttentionItem added in v0.8.0

type IndexerAdminAttentionItem struct {
	ReleaseID              string     `json:"release_id"`
	Title                  string     `json:"title"`
	GroupName              string     `json:"group_name"`
	Category               string     `json:"category"`
	Classification         string     `json:"classification"`
	IdentityStatus         string     `json:"identity_status"`
	TitleSource            string     `json:"title_source"`
	PayloadCompletionState string     `json:"payload_completion_state"`
	SizeBytes              int64      `json:"size_bytes"`
	PostedAt               *time.Time `json:"posted_at,omitempty"`
	UpdatedAt              time.Time  `json:"updated_at"`
	PublicVisible          bool       `json:"public_visible"`
	HasSFV                 bool       `json:"has_sfv"`
	HasPAR2                bool       `json:"has_par2"`
	HasNFO                 bool       `json:"has_nfo"`
	PredbCandidateCount    int        `json:"predb_candidate_count"`
	UnchosenPredbCount     int        `json:"unchosen_predb_count"`
	InspectionFailureCount int        `json:"inspection_failure_count"`
	LatestInspectionError  string     `json:"latest_inspection_error"`
	Priority               int        `json:"priority"`
	Reasons                []string   `json:"reasons"`
}

type IndexerAdminAttentionParams added in v0.8.0

type IndexerAdminAttentionParams struct {
	Reason string
	Limit  int
	Offset int
}

type IndexerArchiveEntrySummary added in v0.7.0

type IndexerArchiveEntrySummary struct {
	EntryName         string          `json:"entry_name"`
	IsDir             bool            `json:"is_dir"`
	UncompressedBytes int64           `json:"uncompressed_bytes"`
	CompressedBytes   int64           `json:"compressed_bytes"`
	Encrypted         bool            `json:"encrypted"`
	Comment           string          `json:"comment"`
	MediaType         string          `json:"media_type"`
	Signature         string          `json:"signature"`
	Metadata          json.RawMessage `json:"metadata_json"`
}

type IndexerArticleCohortItem added in v0.8.0

type IndexerArticleCohortItem struct {
	SourcePostedAt        time.Time  `json:"source_posted_at"`
	CohortKey             string     `json:"cohort_key"`
	ProviderID            int64      `json:"provider_id"`
	NewsgroupID           int64      `json:"newsgroup_id"`
	NewsgroupName         string     `json:"newsgroup_name"`
	CohortKind            string     `json:"cohort_kind"`
	PriorityRank          int        `json:"priority_rank"`
	AdmissionReason       string     `json:"admission_reason"`
	Score                 float64    `json:"score"`
	Status                string     `json:"status"`
	BucketStart           time.Time  `json:"bucket_start"`
	BucketEnd             time.Time  `json:"bucket_end"`
	ArticleCount          int        `json:"article_count"`
	UnassembledCount      int        `json:"unassembled_count"`
	SingletonCount        int        `json:"singleton_count"`
	YEncReadyCount        int        `json:"yenc_ready_count"`
	YEncRunningCount      int        `json:"yenc_running_count"`
	YEncDoneCount         int        `json:"yenc_done_count"`
	YEncRecoveredCount    int        `json:"yenc_recovered_count"`
	YEncNoIdentityCount   int        `json:"yenc_no_identity_count"`
	AssemblyQueueReady    int        `json:"assembly_queue_ready"`
	RecoveryQueueReady    int        `json:"recovery_queue_ready"`
	RecoveryQueueAdmitted int        `json:"recovery_queue_admitted"`
	SubjectFileName       string     `json:"subject_file_name"`
	SubjectFileIndex      int        `json:"subject_file_index"`
	SubjectFileTotal      int        `json:"subject_file_total"`
	YEncTotalParts        int        `json:"yenc_total_parts"`
	YEncFileSize          int64      `json:"yenc_file_size"`
	FirstArticleNumber    int64      `json:"first_article_number"`
	LastArticleNumber     int64      `json:"last_article_number"`
	LastScheduledAt       *time.Time `json:"last_scheduled_at,omitempty"`
	CooldownUntil         *time.Time `json:"cooldown_until,omitempty"`
	UpdatedAt             time.Time  `json:"updated_at"`
}

type IndexerArticleCohortParams added in v0.8.0

type IndexerArticleCohortParams struct {
	Kind   string
	Status string
	Limit  int
	Offset int
}

type IndexerBackfillProgress added in v0.7.2

type IndexerBackfillProgress struct {
	Items []IndexerBackfillProgressItem `json:"items"`
	Count int                           `json:"count"`
}

type IndexerBackfillProgressItem added in v0.7.2

type IndexerBackfillProgressItem struct {
	GroupName                   string     `json:"group_name"`
	ConfiguredCutoffDate        *time.Time `json:"configured_cutoff_date,omitempty"`
	CutoffReached               bool       `json:"cutoff_reached"`
	BackfillCursorArticleNumber int64      `json:"backfill_cursor_article_number"`
	LatestArticleNumber         int64      `json:"latest_article_number"`
	OldestScrapedArticleDate    *time.Time `json:"oldest_scraped_article_date,omitempty"`
	LatestScrapedArticleDate    *time.Time `json:"latest_scraped_article_date,omitempty"`
	ProviderCount               int        `json:"provider_count"`
	LastCheckpointUpdatedAt     *time.Time `json:"last_checkpoint_updated_at,omitempty"`
}

type IndexerBinaryDetail added in v0.7.0

type IndexerBinaryDetail struct {
	BinaryID           int64                                    `json:"binary_id"`
	SupersededByID     int64                                    `json:"superseded_by_id,omitempty"`
	SupersededReason   string                                   `json:"superseded_reason,omitempty"`
	SupersededAt       *time.Time                               `json:"superseded_at,omitempty"`
	ReleaseID          string                                   `json:"release_id"`
	ReleaseTitle       string                                   `json:"release_title"`
	GroupName          string                                   `json:"group_name"`
	ReleaseKey         string                                   `json:"release_key"`
	ReleaseName        string                                   `json:"release_name"`
	BinaryKey          string                                   `json:"binary_key"`
	BinaryName         string                                   `json:"binary_name"`
	FileID             int64                                    `json:"file_id"`
	FileName           string                                   `json:"file_name"`
	ProviderID         int64                                    `json:"provider_id"`
	NewsgroupID        int64                                    `json:"newsgroup_id"`
	Poster             string                                   `json:"poster"`
	PostedAt           *time.Time                               `json:"posted_at,omitempty"`
	FileIndex          int                                      `json:"file_index"`
	ExpectedFileCount  int                                      `json:"expected_file_count"`
	TotalParts         int                                      `json:"total_parts"`
	ObservedParts      int                                      `json:"observed_parts"`
	TotalBytes         int64                                    `json:"total_bytes"`
	FirstArticleNumber int64                                    `json:"first_article_number"`
	LastArticleNumber  int64                                    `json:"last_article_number"`
	MatchConfidence    float64                                  `json:"match_confidence"`
	MatchStatus        string                                   `json:"match_status"`
	GroupingEvidence   json.RawMessage                          `json:"grouping_evidence_json"`
	Encrypted          bool                                     `json:"encrypted"`
	PasswordState      string                                   `json:"password_state"`
	Inspections        []IndexerInspectionSummary               `json:"inspections"`
	Artifacts          []IndexerBinaryInspectionArtifactSummary `json:"artifacts"`
	ArchiveEntries     []IndexerArchiveEntrySummary             `json:"archive_entries"`
	MediaStreams       []IndexerMediaStreamSummary              `json:"media_streams"`
	TextEvidence       []IndexerTextEvidenceSummary             `json:"text_evidence"`
	PAR2Sets           []IndexerPAR2SetSummary                  `json:"par2_sets"`
	Parts              []IndexerBinaryPartSummary               `json:"parts"`
}

type IndexerBinaryInspectionArtifactSummary added in v0.7.0

type IndexerBinaryInspectionArtifactSummary struct {
	StageName    string          `json:"stage_name"`
	ArtifactRole string          `json:"artifact_role"`
	ArtifactName string          `json:"artifact_name"`
	ArtifactPath string          `json:"artifact_path"`
	BytesTotal   int64           `json:"bytes_total"`
	MIMEType     string          `json:"mime_type"`
	Signature    string          `json:"signature"`
	SourceKind   string          `json:"source_kind"`
	Metadata     json.RawMessage `json:"metadata_json"`
}

type IndexerBinaryListParams added in v0.8.0

type IndexerBinaryListParams struct {
	Query            string
	GroupName        string
	IdentityStrength string
	ReadinessBucket  string
	MatchStatus      string
	ReleaseState     string
	Sort             string
	Limit            int
	Offset           int
}

type IndexerBinaryPartSummary added in v0.7.0

type IndexerBinaryPartSummary struct {
	ArticleHeaderID     int64      `json:"article_header_id"`
	ProviderID          int64      `json:"provider_id"`
	NewsgroupID         int64      `json:"newsgroup_id"`
	GroupName           string     `json:"group_name"`
	ArticleNumber       int64      `json:"article_number"`
	MessageID           string     `json:"message_id"`
	Subject             string     `json:"subject"`
	Poster              string     `json:"poster"`
	DateUTC             *time.Time `json:"date_utc,omitempty"`
	PartNumber          int        `json:"part_number"`
	TotalParts          int        `json:"total_parts"`
	SegmentBytes        int64      `json:"segment_bytes"`
	FileName            string     `json:"file_name"`
	ArticleBytes        int64      `json:"article_bytes"`
	ArticleLines        int64      `json:"article_lines"`
	SubjectFileName     string     `json:"subject_file_name"`
	SubjectFileIndex    int        `json:"subject_file_index"`
	SubjectFileTotal    int        `json:"subject_file_total"`
	YEncPartNumber      int        `json:"yenc_part_number"`
	YEncTotalParts      int        `json:"yenc_total_parts"`
	YEncFileSize        int64      `json:"yenc_file_size"`
	RecoveredPartNumber int        `json:"recovered_part_number"`
	RecoveredTotalParts int        `json:"recovered_total_parts"`
	RecoveredFileSize   int64      `json:"recovered_file_size"`
	YEncRecoveryStatus  string     `json:"yenc_recovery_status"`
	YEncRecoveryReadyAt *time.Time `json:"yenc_recovery_ready_at,omitempty"`
	YEncRecoveryError   string     `json:"yenc_recovery_error,omitempty"`
	RecoveredKind       string     `json:"recovered_kind"`
	RecoveredSource     string     `json:"recovered_source"`
	RecoveredFileName   string     `json:"recovered_file_name"`
}

type IndexerBinarySummary added in v0.8.0

type IndexerBinarySummary struct {
	BinaryID          int64      `json:"binary_id"`
	ReleaseID         string     `json:"release_id"`
	ReleaseTitle      string     `json:"release_title"`
	GroupName         string     `json:"group_name"`
	ReleaseName       string     `json:"release_name"`
	BinaryName        string     `json:"binary_name"`
	FileName          string     `json:"file_name"`
	FamilyKind        string     `json:"family_kind"`
	IdentityStrength  string     `json:"identity_strength"`
	ReadinessBucket   string     `json:"readiness_bucket"`
	MatchStatus       string     `json:"match_status"`
	MatchConfidence   float64    `json:"match_confidence"`
	PostedAt          *time.Time `json:"posted_at,omitempty"`
	TotalParts        int        `json:"total_parts"`
	ObservedParts     int        `json:"observed_parts"`
	CompletionPct     float64    `json:"completion_pct"`
	TotalBytes        int64      `json:"total_bytes"`
	RecoveredSource   string     `json:"recovered_source"`
	RecoveredFileName string     `json:"recovered_file_name"`
	YEncStatus        string     `json:"yenc_status"`
	YEncPriorityRank  int        `json:"yenc_priority_rank"`
	InspectionCount   int        `json:"inspection_count"`
	UpdatedAt         time.Time  `json:"updated_at"`
}

type IndexerCrosspostBackfillResult added in v0.8.0

type IndexerCrosspostBackfillResult struct {
	BatchesProcessed int   `json:"batches_processed"`
	SourceHeaders    int64 `json:"source_headers"`
	RowsUpserted     int64 `json:"rows_upserted"`
	LastArticleID    int64 `json:"last_article_id"`
}

type IndexerCrosspostPopularityItem added in v0.8.0

type IndexerCrosspostPopularityItem struct {
	GroupName                string     `json:"group_name"`
	ObservedArticleCount     int64      `json:"observed_article_count"`
	DistinctMessageCount     int64      `json:"distinct_message_count"`
	DistinctSourceGroupCount int64      `json:"distinct_source_group_count"`
	LastSeenAt               *time.Time `json:"last_seen_at,omitempty"`
}

type IndexerCrosspostPopularityRefreshResult added in v0.8.0

type IndexerCrosspostPopularityRefreshResult struct {
	Claimed                  int64 `json:"claimed"`
	GroupsRefreshed          int64 `json:"groups_refreshed"`
	DistinctMessagesObserved int64 `json:"distinct_messages_observed"`
	DistinctSourcesObserved  int64 `json:"distinct_sources_observed"`

	// Deprecated: exact distinct helper rows are no longer materialized.
	MessagesUpserted int64 `json:"messages_upserted"`
	// Deprecated: exact distinct helper rows are no longer materialized.
	SourcesUpserted int64 `json:"sources_upserted"`
}

type IndexerDailyBucketSummary added in v0.8.0

type IndexerDailyBucketSummary struct {
	ProviderID           int64     `json:"provider_id"`
	ProviderKey          string    `json:"provider_key"`
	NewsgroupID          int64     `json:"newsgroup_id"`
	GroupName            string    `json:"group_name"`
	BucketDay            string    `json:"bucket_day"`
	Tier                 string    `json:"tier"`
	ScrapeProgressKnown  bool      `json:"scrape_progress_known"`
	ScrapeProgressPct    float64   `json:"scrape_progress_pct"`
	LowerBoundaryCrossed bool      `json:"lower_boundary_crossed"`
	UpperBoundaryCrossed bool      `json:"upper_boundary_crossed"`
	BucketArticleLow     int64     `json:"bucket_article_low"`
	BucketArticleHigh    int64     `json:"bucket_article_high"`
	ScrapeCursorLow      int64     `json:"scrape_cursor_low"`
	ScrapeCursorHigh     int64     `json:"scrape_cursor_high"`
	HeadersStaged        int64     `json:"headers_staged"`
	UnassembledHeaders   int64     `json:"unassembled_headers"`
	YEncReady            int64     `json:"yenc_ready"`
	YEncRunning          int64     `json:"yenc_running"`
	YEncDone             int64     `json:"yenc_done"`
	BinariesTotal        int64     `json:"binaries_total"`
	BinariesComplete     int64     `json:"binaries_complete"`
	BinariesWeak         int64     `json:"binaries_weak"`
	ReleasesCreated      int64     `json:"releases_created"`
	BlockerCount         int64     `json:"blocker_count"`
	LastRefreshedAt      time.Time `json:"last_refreshed_at"`
}

type IndexerDashboardStat added in v0.7.2

type IndexerDashboardStat struct {
	Key                string     `json:"key"`
	Label              string     `json:"label"`
	Description        string     `json:"description"`
	Value              int64      `json:"value"`
	Available          bool       `json:"available"`
	Exact              bool       `json:"exact"`
	Capped             bool       `json:"capped"`
	UpdatedAt          *time.Time `json:"updated_at,omitempty"`
	RefreshAttemptedAt *time.Time `json:"refresh_attempted_at,omitempty"`
	LastError          string     `json:"last_error,omitempty"`
}

type IndexerDashboardStats added in v0.7.2

type IndexerDashboardStats struct {
	Items []IndexerDashboardStat `json:"items"`
	Count int                    `json:"count"`
}

type IndexerExternalMatchSummary added in v0.7.0

type IndexerExternalMatchSummary struct {
	Source        string          `json:"source"`
	ExternalID    int64           `json:"external_id"`
	MediaType     string          `json:"media_type"`
	Title         string          `json:"title"`
	OriginalTitle string          `json:"original_title"`
	Year          int             `json:"year"`
	Confidence    float64         `json:"confidence"`
	Chosen        bool            `json:"chosen"`
	Payload       json.RawMessage `json:"payload_json"`
}

type IndexerFileArticleSummary added in v0.7.0

type IndexerFileArticleSummary struct {
	MessageID  string `json:"message_id"`
	Bytes      int64  `json:"bytes"`
	PartNumber int    `json:"part_number"`
}

type IndexerFileDetail added in v0.7.0

type IndexerFileDetail struct {
	FileID           int64                       `json:"file_id"`
	ReleaseID        string                      `json:"release_id"`
	ReleaseTitle     string                      `json:"release_title"`
	GroupName        string                      `json:"group_name"`
	BinaryID         int64                       `json:"binary_id"`
	FileName         string                      `json:"file_name"`
	SizeBytes        int64                       `json:"size_bytes"`
	FileIndex        int                         `json:"file_index"`
	IsPars           bool                        `json:"is_pars"`
	Subject          string                      `json:"subject"`
	Poster           string                      `json:"poster"`
	PostedAt         *time.Time                  `json:"posted_at,omitempty"`
	ArticleCount     int                         `json:"article_count"`
	TotalParts       int                         `json:"total_parts"`
	ObservedParts    int                         `json:"observed_parts"`
	MatchConfidence  float64                     `json:"match_confidence"`
	MatchStatus      string                      `json:"match_status"`
	GroupingEvidence json.RawMessage             `json:"grouping_evidence_json"`
	Newsgroups       []string                    `json:"newsgroups"`
	Articles         []IndexerFileArticleSummary `json:"articles"`
}

type IndexerGroupProfileSummary added in v0.8.0

type IndexerGroupProfileSummary struct {
	ProviderID      int64      `json:"provider_id"`
	ProviderKey     string     `json:"provider_key"`
	NewsgroupID     int64      `json:"newsgroup_id"`
	GroupName       string     `json:"group_name"`
	Tier            string     `json:"tier"`
	TierOverride    string     `json:"tier_override"`
	Score           float64    `json:"score"`
	RecoveryQueued  int64      `json:"recovery_queued_1d"`
	ReleasesCreated int64      `json:"releases_created_1d"`
	LastScoredAt    *time.Time `json:"last_scored_at,omitempty"`
	UpdatedAt       time.Time  `json:"updated_at"`
}

type IndexerInspectionSummary added in v0.7.0

type IndexerInspectionSummary struct {
	StageName         string          `json:"stage_name"`
	BinaryID          int64           `json:"binary_id"`
	ReleaseID         string          `json:"release_id"`
	Status            string          `json:"status"`
	ErrorText         string          `json:"error_text"`
	MaterializedBytes int64           `json:"materialized_bytes"`
	ToolProvenance    json.RawMessage `json:"tool_provenance_json"`
	Summary           json.RawMessage `json:"summary_json"`
	StartedAt         *time.Time      `json:"started_at,omitempty"`
	FinishedAt        *time.Time      `json:"finished_at,omitempty"`
	UpdatedAt         time.Time       `json:"updated_at"`
}

type IndexerIntegrityCheck added in v0.8.0

type IndexerIntegrityCheck struct {
	Relation     string `json:"relation"`
	AccessMethod string `json:"access_method"`
	MetadataOK   bool   `json:"metadata_ok"`
	AmcheckRan   bool   `json:"amcheck_ran"`
	OK           bool   `json:"ok"`
	Detail       string `json:"detail"`
}

type IndexerIntegrityRepairResult added in v0.8.0

type IndexerIntegrityRepairResult struct {
	Reindexed []string `json:"reindexed"`
}

type IndexerIntegrityReport added in v0.8.0

type IndexerIntegrityReport struct {
	AmcheckAvailable bool                    `json:"amcheck_available"`
	Checks           []IndexerIntegrityCheck `json:"checks"`
}

func (*IndexerIntegrityReport) FailureSummary added in v0.8.0

func (r *IndexerIntegrityReport) FailureSummary() string

func (*IndexerIntegrityReport) HasFailures added in v0.8.0

func (r *IndexerIntegrityReport) HasFailures() bool

type IndexerMaintenanceResult added in v0.7.0

type IndexerMaintenanceResult struct {
	AbandonedStageRuns         int64
	ClearedStageLeases         int64
	AbandonedScrapeRuns        int64
	AbandonedBinaryInspections int64
	RepairedBinaryObservations int64
	YEncWorkItemsUpserted      int64
	YEncWorkItemsRetired       int64
	BackfilledCatalogFiles     int64
	PurgedStageRuns            int64
	PurgedScrapeRuns           int64
	PurgedBinaryInspections    int64
	PurgedHeaderPayloads       int64
	PurgedGroupingEvidence     int64
	PurgedReadinessSummaries   int64
	PurgedOrphanReleases       int64
	SkippedReadinessCleanup    bool
	RefreshQueueBacklog        int64
}

type IndexerMediaStreamSummary added in v0.7.0

type IndexerMediaStreamSummary struct {
	StreamIndex        int             `json:"stream_index"`
	StreamType         string          `json:"stream_type"`
	CodecName          string          `json:"codec_name"`
	CodecLongName      string          `json:"codec_long_name"`
	Profile            string          `json:"profile"`
	Width              int             `json:"width"`
	Height             int             `json:"height"`
	Channels           int             `json:"channels"`
	Language           string          `json:"language"`
	DurationSeconds    float64         `json:"duration_seconds"`
	BitRate            int64           `json:"bit_rate"`
	DefaultDisposition bool            `json:"default_disposition"`
	ForcedDisposition  bool            `json:"forced_disposition"`
	Metadata           json.RawMessage `json:"metadata_json"`
}

type IndexerOverview added in v0.7.0

type IndexerOverview struct {
	ReleaseCount          int64 `json:"release_count"`
	BinaryCount           int64 `json:"binary_count"`
	FileCount             int64 `json:"file_count"`
	InspectionCount       int64 `json:"inspection_count"`
	ArchivedNZBCount      int64 `json:"archived_nzb_count"`
	ReadyReleaseCount     int64 `json:"ready_release_count"`
	CompletedReleaseCount int64 `json:"completed_release_count"`
	EncryptedReleaseCount int64 `json:"encrypted_release_count"`
	PasswordKnownCount    int64 `json:"password_known_count"`
	PasswordUnknownCount  int64 `json:"password_unknown_count"`
	PAR2ReleaseCount      int64 `json:"par2_release_count"`
	NFOReleaseCount       int64 `json:"nfo_release_count"`
	MediaProbedCount      int64 `json:"media_probed_count"`
	RunningStageCount     int64 `json:"running_stage_count"`
	PausedStageCount      int64 `json:"paused_stage_count"`
	FailedRunCount        int64 `json:"failed_run_count"`
}

type IndexerPAR2SetSummary added in v0.7.0

type IndexerPAR2SetSummary struct {
	SetName        string          `json:"set_name"`
	BaseName       string          `json:"base_name"`
	IsVolume       bool            `json:"is_volume"`
	VolumeNumber   int             `json:"volume_number"`
	RecoveryBlocks int             `json:"recovery_blocks"`
	SignatureOK    bool            `json:"signature_ok"`
	Metadata       json.RawMessage `json:"metadata_json"`
}

type IndexerPasswordCandidateSummary added in v0.7.0

type IndexerPasswordCandidateSummary struct {
	ID                 int64      `json:"id"`
	BinaryID           int64      `json:"binary_id"`
	ArtifactID         int64      `json:"artifact_id"`
	SourceKind         string     `json:"source_kind"`
	SourceRef          string     `json:"source_ref"`
	Confidence         float64    `json:"confidence"`
	VerificationStatus string     `json:"verification_status"`
	LastVerifiedAt     *time.Time `json:"last_verified_at,omitempty"`
	LastError          string     `json:"last_error"`
}

type IndexerPosterMaterializationResult added in v0.8.0

type IndexerPosterMaterializationResult struct {
	Claimed      int64 `json:"claimed"`
	Posters      int64 `json:"posters"`
	RefsUpserted int64 `json:"refs_upserted"`
}

type IndexerPredbMatchSummary added in v0.7.0

type IndexerPredbMatchSummary struct {
	EntryID             int64           `json:"entry_id"`
	Title               string          `json:"title"`
	Category            string          `json:"category"`
	Source              string          `json:"source"`
	Team                string          `json:"team"`
	Genre               string          `json:"genre"`
	URL                 string          `json:"url"`
	SizeKB              float64         `json:"size_kb"`
	FileCount           int             `json:"file_count"`
	PostedAt            *time.Time      `json:"posted_at,omitempty"`
	Confidence          float64         `json:"confidence"`
	Chosen              bool            `json:"chosen"`
	PayloadSizeBytes    int64           `json:"payload_size_bytes"`
	PayloadSizeSource   string          `json:"payload_size_source"`
	PredbSizeBytes      int64           `json:"predb_size_bytes"`
	SizeDeltaBytes      int64           `json:"size_delta_bytes"`
	SizeDeltaPct        float64         `json:"size_delta_pct"`
	PostedDeltaMinutes  *float64        `json:"posted_delta_minutes,omitempty"`
	ResolutionMatch     bool            `json:"resolution_match"`
	VideoCodecMatch     bool            `json:"video_codec_match"`
	AudioCodecMatch     bool            `json:"audio_codec_match"`
	AutoApplyEligible   bool            `json:"auto_apply_eligible"`
	AutoApplySkipReason string          `json:"auto_apply_skip_reason"`
	Payload             json.RawMessage `json:"payload_json"`
}

type IndexerProviderGroupInventoryItem added in v0.8.0

type IndexerProviderGroupInventoryItem struct {
	ProviderID   string `json:"provider_id"`
	ProviderName string `json:"provider_name"`
	GroupName    string `json:"group_name"`
	High         int64  `json:"high"`
	Low          int64  `json:"low"`
	Status       string `json:"status"`
	ScannedAt    string `json:"scanned_at,omitempty"`
}

type IndexerProviderGroupInventoryPage added in v0.8.0

type IndexerProviderGroupInventoryPage struct {
	Items  []IndexerProviderGroupInventoryItem
	Count  int
	Limit  int
	Offset int
}

type IndexerProviderGroupInventoryStats added in v0.8.0

type IndexerProviderGroupInventoryStats struct {
	Count      int
	LatestScan string
}

type IndexerReleaseDetail added in v0.7.0

type IndexerReleaseDetail struct {
	Release            IndexerReleaseSummary             `json:"release"`
	Newsgroups         []string                          `json:"newsgroups"`
	Files              []IndexerReleaseFileSummary       `json:"files"`
	Diagnostics        ReleaseDetailDiagnostics          `json:"diagnostics"`
	PasswordCandidates []IndexerPasswordCandidateSummary `json:"password_candidates"`
	Inspections        []IndexerInspectionSummary        `json:"inspections"`
	PredbMatches       []IndexerPredbMatchSummary        `json:"predb_matches"`
	TMDBMatches        []IndexerExternalMatchSummary     `json:"tmdb_matches"`
	TVDBMatches        []IndexerExternalMatchSummary     `json:"tvdb_matches"`
}

type IndexerReleaseFileSummary added in v0.7.0

type IndexerReleaseFileSummary struct {
	FileID          int64      `json:"file_id"`
	BinaryID        int64      `json:"binary_id"`
	FileName        string     `json:"file_name"`
	SizeBytes       int64      `json:"size_bytes"`
	FileIndex       int        `json:"file_index"`
	IsPars          bool       `json:"is_pars"`
	Subject         string     `json:"subject"`
	Poster          string     `json:"poster"`
	PostedAt        *time.Time `json:"posted_at,omitempty"`
	ArticleCount    int        `json:"article_count"`
	TotalParts      int        `json:"total_parts"`
	ObservedParts   int        `json:"observed_parts"`
	MatchConfidence float64    `json:"match_confidence"`
	MatchStatus     string     `json:"match_status"`
}

type IndexerReleaseSummary added in v0.7.0

type IndexerReleaseSummary struct {
	ReleaseID                string     `json:"release_id"`
	GUID                     string     `json:"guid"`
	SourceKind               string     `json:"source_kind"`
	ProviderID               int64      `json:"provider_id"`
	ReleaseKey               string     `json:"release_key"`
	GroupName                string     `json:"group_name"`
	Title                    string     `json:"title"`
	SourceTitle              string     `json:"source_title"`
	DeobfuscatedTitle        string     `json:"deobfuscated_title"`
	MatchedMediaTitle        string     `json:"matched_media_title"`
	OriginalMediaTitle       string     `json:"original_media_title"`
	TMDBID                   int64      `json:"tmdb_id"`
	TVDBID                   int64      `json:"tvdb_id"`
	ExternalMediaType        string     `json:"external_media_type"`
	ExternalYear             int        `json:"external_year"`
	SeasonNumber             int        `json:"season_number"`
	EpisodeNumber            int        `json:"episode_number"`
	SeasonEpisodeSource      string     `json:"season_episode_source"`
	SeasonEpisodeConfidence  float64    `json:"season_episode_confidence"`
	TitleSource              string     `json:"title_source"`
	TitleConfidence          float64    `json:"title_confidence"`
	CategoryID               int        `json:"category_id"`
	Category                 string     `json:"category"`
	Classification           string     `json:"classification"`
	Poster                   string     `json:"poster"`
	SizeBytes                int64      `json:"size_bytes"`
	PostedAt                 *time.Time `json:"posted_at,omitempty"`
	FileCount                int        `json:"file_count"`
	ExpectedFileCount        int        `json:"expected_file_count"`
	ExpectedArchiveFileCount int        `json:"expected_archive_file_count"`
	ParFileCount             int        `json:"par_file_count"`
	CompletionPct            float64    `json:"completion_pct"`
	MatchConfidence          float64    `json:"match_confidence"`
	IdentityStatus           string     `json:"identity_status"`
	Passworded               bool       `json:"passworded"`
	PasswordedKnown          bool       `json:"passworded_known"`
	PasswordedUnknown        bool       `json:"passworded_unknown"`
	PasswordState            string     `json:"password_state"`
	PreferredPasswordID      int64      `json:"preferred_password_id"`
	Encrypted                bool       `json:"encrypted"`
	HasPAR2                  bool       `json:"has_par2"`
	HasNFO                   bool       `json:"has_nfo"`
	ArchiveCount             int        `json:"archive_count"`
	VideoCount               int        `json:"video_count"`
	AudioCount               int        `json:"audio_count"`
	SamplePresent            bool       `json:"sample_present"`
	AvailabilityScore        float64    `json:"availability_score"`
	AvailabilityTier         string     `json:"availability_tier"`
	MediaQualityScore        float64    `json:"media_quality_score"`
	MediaQualityTier         string     `json:"media_quality_tier"`
	IdentityConfidenceScore  float64    `json:"identity_confidence_score"`
	RuntimeSeconds           int        `json:"runtime_seconds"`
	PrimaryResolution        string     `json:"primary_resolution"`
	PrimaryVideoCodec        string     `json:"primary_video_codec"`
	PrimaryAudioCodec        string     `json:"primary_audio_codec"`
	SubtitleLanguages        []string   `json:"subtitle_languages"`
	MediaTags                []string   `json:"media_tags"`
	MetadataUpdatedAt        *time.Time `json:"metadata_updated_at,omitempty"`
	NZBGenerationStatus      string     `json:"nzb_generation_status"`
	Hidden                   bool       `json:"hidden"`
	PublicVisible            bool       `json:"public_visible"`
	PasswordCandidateCount   int        `json:"password_candidate_count"`
	PayloadCompletionState   string     `json:"payload_completion_state"`
}

type IndexerSourceWindowAudit added in v0.8.0

type IndexerSourceWindowAudit struct {
	Bucket         string `json:"bucket"`
	Headers        int64  `json:"headers"`
	Payloads       int64  `json:"payloads"`
	AssemblyQueue  int64  `json:"assembly_queue"`
	BinaryParts    int64  `json:"binary_parts"`
	YEncWorkItems  int64  `json:"yenc_work_items"`
	ArchiveLineage int64  `json:"archive_lineage"`
	OrphanHeaders  int64  `json:"orphan_headers"`
	Risk           string `json:"risk"`
	Notes          string `json:"notes"`
}

type IndexerStageClaimRequest added in v0.7.0

type IndexerStageClaimRequest struct {
	StageName     string
	TriggerKind   string
	Owner         string
	Enabled       bool
	Interval      time.Duration
	BatchSize     int
	Concurrency   int
	Backoff       time.Duration
	LeaseDuration time.Duration
}

type IndexerStageClaimResult added in v0.7.0

type IndexerStageClaimResult struct {
	Claimed bool
	Reason  string
	Run     *IndexerStageRun
}

type IndexerStageFinishRequest added in v0.7.0

type IndexerStageFinishRequest struct {
	RunID       int64
	Owner       string
	ErrorText   string
	MetricsJSON json.RawMessage
}

type IndexerStageRepairResult added in v0.7.0

type IndexerStageRepairResult struct {
	AbandonedRuns      int64 `json:"abandoned_runs"`
	ClearedStaleLeases int64 `json:"cleared_stale_leases"`
}

type IndexerStageRun added in v0.7.0

type IndexerStageRun struct {
	ID          int64           `json:"id"`
	StageName   string          `json:"stage_name"`
	TriggerKind string          `json:"trigger_kind"`
	Status      string          `json:"status"`
	ClaimedBy   string          `json:"claimed_by"`
	StartedAt   time.Time       `json:"started_at"`
	HeartbeatAt *time.Time      `json:"heartbeat_at,omitempty"`
	FinishedAt  *time.Time      `json:"finished_at,omitempty"`
	ErrorText   string          `json:"error_text"`
	MetricsJSON json.RawMessage `json:"metrics_json"`
}

type IndexerStageRunListParams added in v0.7.0

type IndexerStageRunListParams struct {
	StageName   string
	Status      string
	TriggerKind string
	Limit       int
}

type IndexerStageState added in v0.7.0

type IndexerStageState struct {
	StageName       string     `json:"stage_name"`
	Enabled         bool       `json:"enabled"`
	Paused          bool       `json:"paused"`
	IntervalSeconds int        `json:"interval_seconds"`
	BatchSize       int        `json:"batch_size"`
	Concurrency     int        `json:"concurrency"`
	BackoffSeconds  int        `json:"backoff_seconds"`
	LeaseOwner      string     `json:"lease_owner"`
	LeaseExpiresAt  *time.Time `json:"lease_expires_at,omitempty"`
	LastHeartbeatAt *time.Time `json:"last_heartbeat_at,omitempty"`
	LastRunID       int64      `json:"last_run_id"`
	LastSuccessAt   *time.Time `json:"last_success_at,omitempty"`
	LastError       string     `json:"last_error"`
	UpdatedAt       time.Time  `json:"updated_at"`
}

type IndexerStageThroughput added in v0.7.2

type IndexerStageThroughput struct {
	Items []IndexerStageThroughputItem `json:"items"`
	Count int                          `json:"count"`
}

type IndexerStageThroughputItem added in v0.7.2

type IndexerStageThroughputItem struct {
	StageName string                         `json:"stage_name"`
	Label     string                         `json:"label"`
	ItemLabel string                         `json:"item_label"`
	Windows   []IndexerStageThroughputWindow `json:"windows"`
}

type IndexerStageThroughputWindow added in v0.7.2

type IndexerStageThroughputWindow struct {
	WindowHours        int     `json:"window_hours"`
	CompletedRuns      int     `json:"completed_runs"`
	FailedRuns         int     `json:"failed_runs"`
	ItemsProcessed     int64   `json:"items_processed"`
	ItemsPerSecond     float64 `json:"items_per_second"`
	ItemsPerMinute     float64 `json:"items_per_minute"`
	ItemsPerHour       float64 `json:"items_per_hour"`
	AvgRunDurationMS   float64 `json:"avg_run_duration_ms"`
	AvgWorkersUsed     float64 `json:"avg_workers_used,omitempty"`
	MaxWorkersUsed     int     `json:"max_workers_used,omitempty"`
	AvgGroupsScheduled float64 `json:"avg_groups_scheduled,omitempty"`
	MaxGroupsScheduled int     `json:"max_groups_scheduled,omitempty"`
	AvgRangesFetched   float64 `json:"avg_ranges_fetched,omitempty"`
	MaxRangesFetched   int     `json:"max_ranges_fetched,omitempty"`
}

type IndexerStorageAuditAgeRange added in v0.8.0

type IndexerStorageAuditAgeRange struct {
	Scope     string `json:"scope"`
	Bucket    string `json:"bucket"`
	Rows      int64  `json:"rows"`
	Risk      string `json:"risk"`
	DataUse   string `json:"data_use"`
	PurgeNote string `json:"purge_note"`
}

type IndexerStorageAuditIndex added in v0.8.0

type IndexerStorageAuditIndex struct {
	TableName   string `json:"table_name"`
	IndexName   string `json:"index_name"`
	IndexBytes  int64  `json:"index_bytes"`
	Scans       int64  `json:"scans"`
	TuplesRead  int64  `json:"tuples_read"`
	TuplesFetch int64  `json:"tuples_fetch"`
	Primary     bool   `json:"primary"`
	Unique      bool   `json:"unique"`
}

type IndexerStorageAuditReport added in v0.8.0

type IndexerStorageAuditReport struct {
	GeneratedAt   time.Time                     `json:"generated_at"`
	Tables        []IndexerStorageAuditTable    `json:"tables"`
	Indexes       []IndexerStorageAuditIndex    `json:"indexes"`
	SourceAges    []IndexerStorageAuditAgeRange `json:"source_ages"`
	SourceWindows []IndexerSourceWindowAudit    `json:"source_windows,omitempty"`
	YEncBacklog   []IndexerYEncBacklogAudit     `json:"yenc_backlog,omitempty"`
	GuardCounts   []IndexerStorageGuardCount    `json:"guard_counts"`
	CleanupMatrix []IndexerStorageCleanupAudit  `json:"cleanup_matrix"`
}

type IndexerStorageAuditTable added in v0.8.0

type IndexerStorageAuditTable struct {
	TableName       string     `json:"table_name"`
	RowEstimate     int64      `json:"row_estimate"`
	TotalBytes      int64      `json:"total_bytes"`
	TableBytes      int64      `json:"table_bytes"`
	IndexBytes      int64      `json:"index_bytes"`
	TOASTBytes      int64      `json:"toast_bytes"`
	DeadTuples      int64      `json:"dead_tuples"`
	LastVacuum      *time.Time `json:"last_vacuum,omitempty"`
	LastAutovacuum  *time.Time `json:"last_autovacuum,omitempty"`
	LastAnalyze     *time.Time `json:"last_analyze,omitempty"`
	LastAutoAnalyze *time.Time `json:"last_autoanalyze,omitempty"`
}

type IndexerStorageCleanupAudit added in v0.8.0

type IndexerStorageCleanupAudit struct {
	TaskKey              string           `json:"task_key"`
	Label                string           `json:"label"`
	Risk                 string           `json:"risk"`
	Implemented          bool             `json:"implemented"`
	EstimatedRowsByTable map[string]int64 `json:"estimated_rows_by_table,omitempty"`
	SpaceEffect          string           `json:"space_effect"`
	SupervisorEffect     string           `json:"supervisor_effect"`
	DataEffect           string           `json:"data_effect"`
	ReleaseSafety        string           `json:"release_safety"`
}

type IndexerStorageGuardCount added in v0.8.0

type IndexerStorageGuardCount struct {
	Key   string `json:"key"`
	Label string `json:"label"`
	Rows  int64  `json:"rows"`
	Risk  string `json:"risk"`
	Notes string `json:"notes"`
}

type IndexerStorageReclaimOptions added in v0.7.3

type IndexerStorageReclaimOptions struct {
	Tables    []string
	Full      bool
	CheckOnly bool
}

type IndexerStorageReclaimResult added in v0.7.3

type IndexerStorageReclaimResult struct {
	Mode   string
	Tables []IndexerStorageReclaimTableResult
}

type IndexerStorageReclaimTableResult added in v0.7.3

type IndexerStorageReclaimTableResult struct {
	Table       string
	BeforeBytes int64
	AfterBytes  int64
}

type IndexerTextEvidenceSummary added in v0.7.0

type IndexerTextEvidenceSummary struct {
	StageName    string          `json:"stage_name"`
	EvidenceKind string          `json:"evidence_kind"`
	TextValue    string          `json:"text_value"`
	Tokens       []string        `json:"tokens"`
	Metadata     json.RawMessage `json:"metadata_json"`
}

type IndexerYEncBacklogAudit added in v0.8.0

type IndexerYEncBacklogAudit struct {
	Bucket          string `json:"bucket"`
	Status          string `json:"status"`
	PriorityRank    int    `json:"priority_rank"`
	ReadinessBucket string `json:"readiness_bucket"`
	Rows            int64  `json:"rows"`
	BlockingRows    int64  `json:"blocking_rows"`
	OldestDate      string `json:"oldest_date,omitempty"`
	NewestDate      string `json:"newest_date,omitempty"`
	Notes           string `json:"notes"`
}

type MaintenanceTaskResult added in v0.8.0

type MaintenanceTaskResult struct {
	TaskKey              string                          `json:"task_key"`
	DryRun               bool                            `json:"dry_run"`
	EstimatedRowsByTable map[string]int64                `json:"estimated_rows_by_table,omitempty"`
	DeletedRowsByTable   map[string]int64                `json:"deleted_rows_by_table,omitempty"`
	VacuumedTables       []string                        `json:"vacuumed_tables,omitempty"`
	EstimatedBytes       int64                           `json:"estimated_bytes,omitempty"`
	BeforeStorage        *MaintenanceTaskStorageSnapshot `json:"before_storage,omitempty"`
	AfterStorage         *MaintenanceTaskStorageSnapshot `json:"after_storage,omitempty"`
	Blockers             []string                        `json:"blockers,omitempty"`
	Warnings             []string                        `json:"warnings,omitempty"`
}

type MaintenanceTaskStorageSnapshot added in v0.8.0

type MaintenanceTaskStorageSnapshot struct {
	GeneratedAt            time.Time        `json:"generated_at"`
	DatabaseBytes          int64            `json:"database_bytes"`
	DataDirectory          string           `json:"data_directory,omitempty"`
	FilesystemFreeBytes    int64            `json:"filesystem_free_bytes,omitempty"`
	FilesystemTotalBytes   int64            `json:"filesystem_total_bytes,omitempty"`
	FilesystemFreePercent  float64          `json:"filesystem_free_percent,omitempty"`
	FilesystemVisible      bool             `json:"filesystem_visible"`
	TableTotalBytesByTable map[string]int64 `json:"table_total_bytes_by_table,omitempty"`
	TableLiveRowsByTable   map[string]int64 `json:"table_live_rows_by_table,omitempty"`
	TableDeadRowsByTable   map[string]int64 `json:"table_dead_rows_by_table,omitempty"`
}

type ManifestAvailabilityProjection added in v0.9.0

type ManifestAvailabilityProjection struct {
	Attestation  manifestavailability.Attestation
	EventID      string
	AuthorNodeID string
	PoolID       string
}

type NNTPRuntimeSnapshot added in v0.8.0

type NNTPRuntimeSnapshot struct {
	PublisherID string
	ModuleName  string
	Scope       string
	Payload     json.RawMessage
	UpdatedAt   time.Time
}

type NodeCapabilityView added in v0.9.0

type NodeCapabilityView struct {
	NodeID            string          `json:"node_id"`
	Alias             string          `json:"alias"`
	BaseURL           string          `json:"base_url"`
	Status            string          `json:"status"`
	Capabilities      json.RawMessage `json:"capabilities"`
	ModuleStatus      json.RawMessage `json:"module_status"`
	ScannerCapacity   json.RawMessage `json:"scanner_capacity,omitempty"`
	ValidatorCapacity json.RawMessage `json:"validator_capacity,omitempty"`
	ProviderScope     json.RawMessage `json:"provider_scope,omitempty"`
	UpdatedAt         time.Time       `json:"updated_at"`
}

type PAR2InspectionBatchRecord added in v0.8.0

type PAR2InspectionBatchRecord struct {
	StageName         string
	BinaryID          int64
	ReleaseID         string
	SourceUpdatedAt   *time.Time
	ArtifactRows      []BinaryInspectionArtifactRecord
	PAR2SetRows       []BinaryPAR2SetRecord
	PAR2TargetRows    []BinaryPAR2TargetRecord
	MaterializedBytes int64
	ToolProvenance    map[string]any
	Summary           map[string]any
}

type PAR2InspectionBatchResult added in v0.8.0

type PAR2InspectionBatchResult struct {
	FlushedCandidates int
	RowsWritten       int64
}

type PasswordVerificationCandidate added in v0.7.0

type PasswordVerificationCandidate struct {
	ID                 int64
	ReleaseID          string
	BinaryID           int64
	ArtifactID         int64
	Title              string
	SourceTitle        string
	DeobfuscatedTitle  string
	PasswordValue      string
	SourceKind         string
	SourceRef          string
	Confidence         float64
	VerificationStatus string
	LastError          string
}

type PendingFederationProjection added in v0.9.0

type PendingFederationProjection struct {
	EventID        string
	EventType      string
	ProjectionKind string
	Status         string
	Attempts       int
	LastError      string
}

type PoolAuthorizationResult added in v0.9.0

type PoolAuthorizationResult struct {
	Allowed bool
	Reason  string
}

type PoolControlEventRecord added in v0.9.0

type PoolControlEventRecord struct {
	EventID      string          `json:"event_id"`
	EventType    string          `json:"event_type"`
	AuthorNodeID string          `json:"author_node_id"`
	PoolIDs      json.RawMessage `json:"pool_ids"`
	BodyJSON     json.RawMessage `json:"body_json"`
	CreatedAt    time.Time       `json:"created_at"`
	ReceivedAt   time.Time       `json:"received_at"`
}

type PoolMemberRecord added in v0.9.0

type PoolMemberRecord struct {
	PoolID              string          `json:"pool_id"`
	NodeID              string          `json:"node_id"`
	Role                string          `json:"role"`
	Status              string          `json:"status"`
	ApprovedEventID     string          `json:"approved_event_id"`
	RevokedEventID      string          `json:"revoked_event_id"`
	AllowedCapabilities []string        `json:"allowed_capabilities"`
	LimitsJSON          json.RawMessage `json:"limits_json"`
	JoinedAt            *time.Time      `json:"joined_at,omitempty"`
	RevokedAt           *time.Time      `json:"revoked_at,omitempty"`
}

type PredbBackfillCheckpoint added in v0.7.0

type PredbBackfillCheckpoint struct {
	Provider              string
	OffsetHint            int
	OldestPostedAt        *time.Time
	OldestNormalizedTitle string
}

type PredbBackfillWindow added in v0.7.0

type PredbBackfillWindow struct {
	From *time.Time
	To   *time.Time
}

type PredbEntryRecord added in v0.7.0

type PredbEntryRecord struct {
	ExternalID      int64
	NormalizedTitle string
	Title           string
	Category        string
	Source          string
	Team            string
	Genre           string
	URL             string
	SizeKB          float64
	FileCount       int
	PostedAt        *time.Time
	Payload         map[string]any
}

type PredbEntrySummary added in v0.7.0

type PredbEntrySummary struct {
	EntryID         int64
	ExternalID      int64
	NormalizedTitle string
	Title           string
	Category        string
	Source          string
	Team            string
	Genre           string
	URL             string
	SizeKB          float64
	FileCount       int
	PostedAt        *time.Time
	Payload         map[string]any
}

type PublicIndexerReleaseCapabilities added in v0.7.0

type PublicIndexerReleaseCapabilities struct {
	CanSendToDownloadClient bool `json:"can_send_to_download_client"`
}

type PublicIndexerReleaseDetail added in v0.7.0

type PublicIndexerReleaseDetail struct {
	Release      PublicIndexerReleaseSummary       `json:"release"`
	Files        []PublicIndexerReleaseFileSummary `json:"files"`
	Media        PublicIndexerReleaseMediaSummary  `json:"media"`
	External     PublicIndexerReleaseExternal      `json:"external"`
	Capabilities PublicIndexerReleaseCapabilities  `json:"capabilities"`
}

type PublicIndexerReleaseExternal added in v0.7.0

type PublicIndexerReleaseExternal struct {
	TMDBID            int64      `json:"tmdb_id,omitempty"`
	TVDBID            int64      `json:"tvdb_id,omitempty"`
	IMDBID            string     `json:"imdb_id,omitempty"`
	ExternalMediaType string     `json:"external_media_type,omitempty"`
	ExternalTitle     string     `json:"external_title,omitempty"`
	ExternalYear      int        `json:"external_year,omitempty"`
	MetadataUpdatedAt *time.Time `json:"metadata_updated_at,omitempty"`
}

type PublicIndexerReleaseFileSummary added in v0.7.0

type PublicIndexerReleaseFileSummary struct {
	FileName      string     `json:"file_name"`
	SizeBytes     int64      `json:"size_bytes"`
	FileIndex     int        `json:"file_index"`
	IsPars        bool       `json:"is_pars,omitempty"`
	PostedAt      *time.Time `json:"posted_at,omitempty"`
	ArticleCount  int        `json:"article_count"`
	TotalParts    int        `json:"total_parts"`
	ObservedParts int        `json:"observed_parts"`
}

type PublicIndexerReleaseListParams added in v0.7.0

type PublicIndexerReleaseListParams struct {
	Query             string
	SourceKind        string
	Limit             int
	Offset            int
	Sort              string
	Classification    string
	BrowseCategory    string
	BrowseSubcategory string
	CategoryIDs       []int
	HasNFO            *bool
	HasPAR2           *bool
	PasswordState     string
	AvailabilityTier  string
	MediaQualityTier  string
	CompletionMin     float64
	PostedAfter       *time.Time
	PostedBefore      *time.Time
	SizeMin           int64
	SizeMax           int64
	MetadataStatus    string
	IMDBID            string
	TVDBID            int64
	Season            int
	Episode           int
	ReadyPolicy       ReleaseReadyPolicy
}

type PublicIndexerReleaseMediaSummary added in v0.7.0

type PublicIndexerReleaseMediaSummary struct {
	RuntimeSeconds    int      `json:"runtime_seconds"`
	PrimaryResolution string   `json:"primary_resolution,omitempty"`
	PrimaryVideoCodec string   `json:"primary_video_codec,omitempty"`
	PrimaryAudioCodec string   `json:"primary_audio_codec,omitempty"`
	SubtitleLanguages []string `json:"subtitle_languages,omitempty"`
	SamplePresent     bool     `json:"sample_present"`
	ArchiveCount      int      `json:"archive_count"`
	VideoCount        int      `json:"video_count"`
	AudioCount        int      `json:"audio_count"`
}

type PublicIndexerReleaseSummary added in v0.7.0

type PublicIndexerReleaseSummary struct {
	ReleaseID         string     `json:"release_id"`
	GUID              string     `json:"guid"`
	SourceKind        string     `json:"source_kind"`
	Title             string     `json:"title"`
	PostedAt          *time.Time `json:"posted_at,omitempty"`
	AddedAt           *time.Time `json:"added_at,omitempty"`
	SizeBytes         int64      `json:"size_bytes"`
	FileCount         int        `json:"file_count"`
	CompletionPct     float64    `json:"completion_pct"`
	CategoryID        int        `json:"category_id"`
	Category          string     `json:"category"`
	Classification    string     `json:"classification"`
	HasPAR2           bool       `json:"has_par2"`
	HasNFO            bool       `json:"has_nfo"`
	PasswordState     string     `json:"password_state,omitempty"`
	AvailabilityScore float64    `json:"availability_score"`
	AvailabilityTier  string     `json:"availability_tier"`
	MediaQualityScore float64    `json:"media_quality_score"`
	MediaQualityTier  string     `json:"media_quality_tier"`
	TMDBID            int64      `json:"tmdb_id,omitempty"`
	TVDBID            int64      `json:"tvdb_id,omitempty"`
	IMDBID            string     `json:"imdb_id,omitempty"`
	ExternalMediaType string     `json:"external_media_type,omitempty"`
	ExternalTitle     string     `json:"external_title,omitempty"`
	ExternalYear      int        `json:"external_year,omitempty"`
	MetadataUpdatedAt *time.Time `json:"metadata_updated_at,omitempty"`
}

type RawStageRetentionPolicy added in v0.8.0

type RawStageRetentionPolicy struct {
	HotHours         int
	WarmHours        int
	ColdHours        int
	FailedProbeHours int
	DoneYEncHours    int
}

type ReleaseArchiveCandidate added in v0.8.0

type ReleaseArchiveCandidate struct {
	ReleaseID  string
	ProviderID int64
	Title      string
}

type ReleaseArchiveState added in v0.8.0

type ReleaseArchiveState struct {
	ReleaseID          string     `json:"release_id"`
	ArchiveStatus      string     `json:"archive_status"`
	ArchiveStore       string     `json:"archive_store"`
	ObjectStoreKind    string     `json:"object_store_kind"`
	ObjectKey          string     `json:"object_key"`
	ContentHashSHA256  string     `json:"content_hash_sha256"`
	ObjectSizeBytes    int64      `json:"object_size_bytes"`
	ContentEncoding    string     `json:"content_encoding"`
	SourceModule       string     `json:"source_module"`
	ArchivedAt         *time.Time `json:"archived_at,omitempty"`
	PurgeEligibleAt    *time.Time `json:"purge_eligible_at,omitempty"`
	PurgeCompletedAt   *time.Time `json:"purge_completed_at,omitempty"`
	LastArchiveError   string     `json:"last_archive_error"`
	PreviewObjectKey   string     `json:"preview_object_key,omitempty"`
	PreviewContentType string     `json:"preview_content_type,omitempty"`
	PreviewSourceKind  string     `json:"preview_source_kind,omitempty"`
	PreviewUpdatedAt   *time.Time `json:"preview_updated_at,omitempty"`
}

type ReleaseArchiveStoredRecord added in v0.8.0

type ReleaseArchiveStoredRecord struct {
	ReleaseID         string
	ArchiveStore      string
	ObjectStoreKind   string
	ObjectKey         string
	ContentHashSHA256 string
	ObjectSizeBytes   int64
	ContentEncoding   string
	SourceModule      string
}

type ReleaseCandidate

type ReleaseCandidate struct {
	ProviderID                     int64
	NewsgroupID                    int64
	KeyKind                        string
	SourceReleaseKey               string
	ReleaseFamilyKey               string
	ReleaseKey                     string
	ReleaseName                    string
	PostedAt                       *time.Time
	BinaryCount                    int
	CompleteBinaryCount            int
	CompleteMainPayloadBinaryCount int
	ExpectedFileCount              int
	ExpectedArchiveFileCount       int
	ExpectedFileCoveragePct        float64
	ArchiveFileCoveragePct         float64
	ReadinessBucket                string
	TotalBytes                     int64
}

grouped release candidate used by release formation.

type ReleaseCandidateAck added in v0.7.1

type ReleaseCandidateAck struct {
	ProviderID  int64
	NewsgroupID int64
	KeyKind     string
	FamilyKey   string
}

type ReleaseCandidateSelectionOptions added in v0.7.3

type ReleaseCandidateSelectionOptions struct {
	MinExpectedFileCoveragePct float64
}

type ReleaseDetailDiagnostics added in v0.8.0

type ReleaseDetailDiagnostics struct {
	PayloadComplete                 bool    `json:"payload_complete"`
	PayloadCompletenessKnown        bool    `json:"payload_completeness_known"`
	PayloadCompletionPct            float64 `json:"payload_completion_pct"`
	KnownBinaryCompletionPct        float64 `json:"known_binary_completion_pct"`
	ExpectedFileCountComplete       bool    `json:"expected_file_count_complete"`
	ExpectedFileCountKnown          bool    `json:"expected_file_count_known"`
	ExpectedArchiveFileCountKnown   bool    `json:"expected_archive_file_count_known"`
	MissingExpectedFileCount        int     `json:"missing_expected_file_count"`
	MissingExpectedArchiveFileCount int     `json:"missing_expected_archive_file_count"`
	HasPAR2Manifest                 bool    `json:"has_par2_manifest"`
	HasSFV                          bool    `json:"has_sfv"`
	ReadinessNote                   string  `json:"readiness_note"`
}

type ReleaseEnrichmentCandidate added in v0.7.0

type ReleaseEnrichmentCandidate struct {
	ReleaseID               string
	Title                   string
	SourceTitle             string
	DeobfuscatedTitle       string
	MatchedMediaTitle       string
	TitleSource             string
	Classification          string
	IdentityStatus          string
	MatchConfidence         float64
	IdentityConfidenceScore float64
	TMDBID                  int64
	TVDBID                  int64
	ExternalMediaType       string
	ExternalYear            int
	SeasonNumber            int
	EpisodeNumber           int
	PostedAt                *time.Time
	SizeBytes               int64
	PayloadSizeBytes        int64
	PayloadSizeSource       string
	RuntimeSeconds          int
	PrimaryResolution       string
	PrimaryVideoCodec       string
	PrimaryAudioCodec       string
}

type ReleaseEnrichmentUpdate added in v0.7.0

type ReleaseEnrichmentUpdate struct {
	ReleaseID               string
	MatchedMediaTitle       string
	OriginalMediaTitle      string
	TMDBID                  int64
	TVDBID                  int64
	ExternalMediaType       string
	ExternalYear            int
	SeasonNumber            int
	EpisodeNumber           int
	SeasonEpisodeSource     string
	SeasonEpisodeConfidence float64
	IdentityStatus          string
	IdentityConfidenceScore float64
	MetadataUpdatedAt       *time.Time
}

type ReleaseFileArticleRecord

type ReleaseFileArticleRecord struct {
	ArticleHeaderID int64
	PartNumber      int
}

article mapping row per release file.

type ReleaseFileRecord

type ReleaseFileRecord struct {
	BinaryID  int64
	FileName  string
	SizeBytes int64
	FileIndex int
	IsPars    bool
	Subject   string
	Poster    string
	PostedAt  *time.Time
	Articles  []ReleaseFileArticleRecord
}

release file upsert input.

type ReleaseInspectionUpdate added in v0.7.0

type ReleaseInspectionUpdate struct {
	ReleaseID                string
	Encrypted                *bool
	HasPAR2                  *bool
	HasNFO                   *bool
	Passworded               *bool
	PasswordedKnown          *bool
	PasswordedUnknown        *bool
	PasswordState            string
	PreferredPasswordID      *int64
	ArchiveCount             *int
	VideoCount               *int
	AudioCount               *int
	ExpectedFileCount        *int
	ExpectedArchiveFileCount *int
	RuntimeSeconds           *int
	SamplePresent            *bool
	PrimaryResolution        string
	PrimaryVideoCodec        string
	PrimaryAudioCodec        string
	SubtitleLanguages        []string
	MediaTags                []string
	MediaQualityScore        *float64
	MediaQualityTier         string
	MetadataUpdatedAt        *time.Time
}

type ReleaseManualIdentityUpdate added in v0.8.0

type ReleaseManualIdentityUpdate struct {
	ReleaseID               string
	Title                   string
	TitleSource             string
	PredbEntryID            int64
	ExternalMediaType       string
	ExternalYear            int
	SeasonNumber            int
	EpisodeNumber           int
	Classification          string
	IdentityStatus          string
	IdentityConfidenceScore float64
	Notes                   string
	MetadataUpdatedAt       *time.Time
}

type ReleaseNZBGenerateCandidate added in v0.8.0

type ReleaseNZBGenerateCandidate struct {
	ReleaseID  string
	ProviderID int64
	Title      string
}

type ReleaseOverrideRecord added in v0.7.0

type ReleaseOverrideRecord struct {
	ReleaseID              string     `json:"release_id"`
	DisplayTitle           string     `json:"display_title"`
	ClassificationOverride string     `json:"classification_override"`
	TMDBIDOverride         int64      `json:"tmdb_id_override"`
	TVDBIDOverride         int64      `json:"tvdb_id_override"`
	IMDBIDOverride         string     `json:"imdb_id_override"`
	Hidden                 bool       `json:"hidden"`
	Notes                  string     `json:"notes"`
	Tags                   []string   `json:"tags"`
	CreatedAt              *time.Time `json:"created_at,omitempty"`
	UpdatedAt              *time.Time `json:"updated_at,omitempty"`
}

type ReleasePasswordCandidateRecord added in v0.7.0

type ReleasePasswordCandidateRecord struct {
	ReleaseID          string
	BinaryID           int64
	ArtifactID         int64
	PasswordValue      string
	SourceKind         string
	SourceRef          string
	Confidence         float64
	VerificationStatus string
	LastVerifiedAt     *time.Time
	LastError          string
}

type ReleasePredbMatchRecord added in v0.7.0

type ReleasePredbMatchRecord struct {
	ReleaseID       string
	ExternalID      int64
	NormalizedTitle string
	Title           string
	Category        string
	Source          string
	Team            string
	Genre           string
	URL             string
	SizeKB          float64
	FileCount       int
	PostedAt        *time.Time
	Confidence      float64
	Chosen          bool
	Payload         map[string]any
}

type ReleasePredbUpdate added in v0.7.0

type ReleasePredbUpdate struct {
	ReleaseID               string
	Title                   string
	DeobfuscatedTitle       string
	TitleSource             string
	TitleConfidence         float64
	IdentityStatus          string
	IdentityConfidenceScore float64
	MetadataUpdatedAt       *time.Time
}

type ReleasePurgeCandidate added in v0.8.0

type ReleasePurgeCandidate struct {
	ReleaseID string
	ObjectKey string
}

type ReleasePurgeResult added in v0.8.0

type ReleasePurgeResult struct {
	ReleaseID                 string           `json:"release_id"`
	DeletedRowsByTable        map[string]int64 `json:"deleted_rows_by_table"`
	SkippedSharedBinaryRows   int64            `json:"skipped_shared_binary_rows"`
	DeletedBinaryRows         int64            `json:"deleted_binary_rows"`
	DeletedArticleHeaderRows  int64            `json:"deleted_article_header_rows"`
	DeletedArticlePayloadRows int64            `json:"deleted_article_payload_rows"`
}

type ReleaseReadyPolicy added in v0.8.0

type ReleaseReadyPolicy struct {
	MinMatchConfidence                   float64
	MinCompletionPct                     float64
	MinIdentityStatus                    string
	RequireInspection                    bool
	RequireEnrichment                    bool
	RequireClearTitle                    bool
	RequirePayloadComplete               bool
	RequireExpectedFileCountComplete     bool
	RequirePAR2                          bool
	RequireNFO                           bool
	RequireSFV                           bool
	RetainUntilExpectedFileCountComplete bool
	RetainRequirePAR2                    bool
	RetainRequireNFO                     bool
	RetainRequireSFV                     bool
}

func DefaultReleaseReadyPolicy added in v0.8.0

func DefaultReleaseReadyPolicy() ReleaseReadyPolicy

func NormalizeReleaseReadyPolicy added in v0.8.0

func NormalizeReleaseReadyPolicy(in ReleaseReadyPolicy) ReleaseReadyPolicy

type ReleaseRecord

type ReleaseRecord struct {
	ReleaseID                string
	GUID                     string
	ProviderID               int64
	SourceReleaseKey         string
	ReleaseFamilyKey         string
	ReleaseKey               string
	GroupName                string
	Title                    string
	SourceTitle              string
	DeobfuscatedTitle        string
	MatchedMediaTitle        string
	TitleSource              string
	TitleConfidence          float64
	SearchTitle              string
	CategoryID               int
	Category                 string
	Classification           string
	Poster                   string
	SizeBytes                int64
	PostedAt                 *time.Time
	FileCount                int
	ExpectedFileCount        int
	ExpectedArchiveFileCount int
	ParFileCount             int
	CompletionPct            float64
	MatchConfidence          float64
	IdentityStatus           string
	Passworded               bool
	PasswordedKnown          bool
	PasswordedUnknown        bool
	PasswordState            string
	PreferredPasswordID      int64
	Encrypted                bool
	HasPAR2                  bool
	HasNFO                   bool
	ArchiveCount             int
	VideoCount               int
	AudioCount               int
	SamplePresent            bool
	AvailabilityScore        float64
	AvailabilityTier         string
	MediaQualityScore        float64
	MediaQualityTier         string
	IdentityConfidenceScore  float64
	RuntimeSeconds           int
	PrimaryResolution        string
	PrimaryVideoCodec        string
	PrimaryAudioCodec        string
	SubtitleLanguages        []string
	MediaTags                []string
	MetadataUpdatedAt        *time.Time
}

release catalog upsert input.

type ReleaseSnapshotResult added in v0.8.0

type ReleaseSnapshotResult struct {
	ReleaseID string
	Status    string
}

type ReleaseSummaryRefreshMetrics added in v0.8.0

type ReleaseSummaryRefreshMetrics struct {
	Refreshed                    int
	Dequeued                     int
	Mode                         string
	HotAttempts                  int
	ColdAttempts                 int
	HotDequeued                  int
	ColdDequeued                 int
	DequeueDuration              time.Duration
	SummaryRefreshDuration       time.Duration
	SummaryAggregateDuration     time.Duration
	SummaryDominantDuration      time.Duration
	ReadyCandidateSyncDuration   time.Duration
	RecoveredFileSetSyncDuration time.Duration
	PhaseADuration               time.Duration
	PhaseBDuration               time.Duration
}

type ReleaseTMDBMatchRecord added in v0.7.0

type ReleaseTMDBMatchRecord struct {
	ReleaseID     string
	TMDBID        int64
	MediaType     string
	Title         string
	OriginalTitle string
	Year          int
	Confidence    float64
	Chosen        bool
	Payload       map[string]any
}

type ReleaseTVDBMatchRecord added in v0.7.0

type ReleaseTVDBMatchRecord struct {
	ReleaseID     string
	TVDBID        int64
	MediaType     string
	Title         string
	OriginalTitle string
	Year          int
	Confidence    float64
	Chosen        bool
	Payload       map[string]any
}

type ReleaseTitleCandidate added in v0.7.0

type ReleaseTitleCandidate struct {
	BinaryID   int64
	Source     string
	Value      string
	Confidence float64
}

type ReputationDiagnostic added in v0.9.0

type ReputationDiagnostic struct {
	ID              int64     `json:"id"`
	NodeID          string    `json:"node_id"`
	PoolID          string    `json:"pool_id"`
	EventID         string    `json:"event_id"`
	Delta           float64   `json:"delta"`
	Reason          string    `json:"reason"`
	LocalTrustScore float64   `json:"local_trust_score"`
	CreatedAt       time.Time `json:"created_at"`
}

type ResolutionManifestRecord added in v0.9.0

type ResolutionManifestRecord struct {
	Manifest              manifest.ResolutionManifest
	SourceNodeID          string
	FetchedFromNodeID     string
	SourceEventID         string
	PoolID                string
	CanonicalManifestJSON []byte
	GeneratedNZB          []byte
}

type ScrapeRangeObservation added in v0.8.0

type ScrapeRangeObservation struct {
	ArticleNumber int64
	DateUTC       *time.Time
}

type ScrapeTimeframeProgress added in v0.9.0

type ScrapeTimeframeProgress struct {
	TimeframeID   string     `json:"timeframe_id"`
	ProviderID    int64      `json:"provider_id"`
	NewsgroupID   int64      `json:"newsgroup_id"`
	WindowStart   time.Time  `json:"window_start"`
	WindowEnd     time.Time  `json:"window_end"`
	ArticleLow    int64      `json:"article_low"`
	ArticleHigh   int64      `json:"article_high"`
	NextArticle   int64      `json:"next_article"`
	State         string     `json:"state"`
	ResolvedAt    *time.Time `json:"resolved_at,omitempty"`
	CompletedAt   *time.Time `json:"completed_at,omitempty"`
	LastAttemptAt *time.Time `json:"last_attempt_at,omitempty"`
	LastError     string     `json:"last_error"`
	UpdatedAt     time.Time  `json:"updated_at"`
}

type ScrapeTimeframeProgressSummary added in v0.9.0

type ScrapeTimeframeProgressSummary struct {
	ScrapeTimeframeProgress
	ProviderKey string `json:"provider_key"`
	GroupName   string `json:"group_name"`
}

type SourceBucketOutcomePolicy added in v0.9.0

type SourceBucketOutcomePolicy struct {
	SourceSettleHours    int
	NoYieldGraceDays     int
	YEncTerminalAttempts int
}

type SourceBucketOutcomeReport added in v0.9.0

type SourceBucketOutcomeReport struct {
	TotalBuckets         int64                        `json:"total_buckets"`
	ActiveBuckets        int64                        `json:"active_buckets"`
	SuccessBuckets       int64                        `json:"success_buckets"`
	NoYieldBuckets       int64                        `json:"no_yield_buckets"`
	PurgeEligibleBuckets int64                        `json:"purge_eligible_buckets"`
	PurgedBuckets        int64                        `json:"purged_buckets"`
	HeadersIngested      int64                        `json:"headers_ingested"`
	OpenWorkCount        int64                        `json:"open_work_count"`
	TerminalReleaseCount int64                        `json:"terminal_release_count"`
	Items                []SourceBucketOutcomeSummary `json:"items"`
}

type SourceBucketOutcomeSummary added in v0.9.0

type SourceBucketOutcomeSummary struct {
	ProviderID           int64      `json:"provider_id"`
	ProviderKey          string     `json:"provider_key"`
	NewsgroupID          int64      `json:"newsgroup_id"`
	GroupName            string     `json:"group_name"`
	SourceDay            string     `json:"source_day"`
	State                string     `json:"state"`
	HeadersIngested      int64      `json:"headers_ingested"`
	OpenWorkCount        int64      `json:"open_work_count"`
	ExhaustedWorkCount   int64      `json:"exhausted_work_count"`
	TerminalReleaseCount int64      `json:"terminal_release_count"`
	TerminalReason       string     `json:"terminal_reason"`
	LastIngestedAt       time.Time  `json:"last_ingested_at"`
	LastProgressAt       time.Time  `json:"last_progress_at"`
	SettledAt            *time.Time `json:"settled_at,omitempty"`
	PurgeEligibleAt      *time.Time `json:"purge_eligible_at,omitempty"`
	PurgedAt             *time.Time `json:"purged_at,omitempty"`
	LastReconciledAt     *time.Time `json:"last_reconciled_at,omitempty"`
}

type Store

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

func NewMaintenanceStore added in v0.8.0

func NewMaintenanceStore(dsn string) (*Store, error)

NewMaintenanceStore opens PostgreSQL by DSN for privileged maintenance-only commands. It validates the existing schema but intentionally does not run migrations; runtime migrations belong to the normal application role.

func NewStore

func NewStore(dsn string) (*Store, error)

NewStore opens PostgreSQL by DSN and runs application-owned migrations.

func (*Store) AckReleaseCandidate added in v0.7.0

func (s *Store) AckReleaseCandidate(ctx context.Context, providerID, newsgroupID int64, keyKind, familyKey string) error

func (*Store) AckReleaseCandidates added in v0.7.1

func (s *Store) AckReleaseCandidates(ctx context.Context, candidates []ReleaseCandidateAck) error

func (*Store) ActivePoolAdminPublicKeys added in v0.9.0

func (s *Store) ActivePoolAdminPublicKeys(ctx context.Context, poolID string) (map[string]ed25519.PublicKey, error)

func (*Store) ActivePoolWitnessPublicKeys added in v0.9.0

func (s *Store) ActivePoolWitnessPublicKeys(ctx context.Context, poolID string) (map[string]ed25519.PublicKey, error)

func (*Store) AdvanceScrapeTimeframeProgress added in v0.9.0

func (s *Store) AdvanceScrapeTimeframeProgress(ctx context.Context, timeframeID string, providerID, newsgroupID, nextArticle int64, completed bool) error

func (*Store) AppendFederationEvent added in v0.9.0

func (s *Store) AppendFederationEvent(ctx context.Context, record FederationEventRecord) error

func (*Store) AppendRejectedFederationEvent added in v0.9.0

func (s *Store) AppendRejectedFederationEvent(ctx context.Context, eventID, authorNodeID, eventType string, rawEventJSON []byte, reason string) error

func (*Store) AppendVerifiedFederationEvent added in v0.9.0

func (s *Store) AppendVerifiedFederationEvent(ctx context.Context, event *events.SignedEvent, validation *events.ValidationResult) error

func (*Store) AppendVerifiedFederationEventWithProjection added in v0.9.0

func (s *Store) AppendVerifiedFederationEventWithProjection(ctx context.Context, event *events.SignedEvent, validation *events.ValidationResult, project func(context.Context) error) error

AppendVerifiedFederationEventWithProjection commits an accepted event and its required projection as one PostgreSQL transaction.

func (*Store) ApplyBinaryPAR2TargetCoverage added in v0.7.3

func (s *Store) ApplyBinaryPAR2TargetCoverage(ctx context.Context, binaryID int64, rows []BinaryPAR2TargetRecord) (*BinaryPAR2TargetCoverageResult, error)

func (*Store) ApplyBinaryRecovery added in v0.7.0

func (s *Store) ApplyBinaryRecovery(ctx context.Context, in BinaryRecoveryRecord) error

func (*Store) ApplyPAR2InspectionBatch added in v0.8.0

func (s *Store) ApplyPAR2InspectionBatch(ctx context.Context, rows []PAR2InspectionBatchRecord) (*PAR2InspectionBatchResult, error)

func (*Store) ApplyReleaseEnrichmentUpdate added in v0.7.0

func (s *Store) ApplyReleaseEnrichmentUpdate(ctx context.Context, in ReleaseEnrichmentUpdate) error

func (*Store) ApplyReleaseInspectionUpdate added in v0.7.0

func (s *Store) ApplyReleaseInspectionUpdate(ctx context.Context, in ReleaseInspectionUpdate) error

func (*Store) ApplyReleaseManualIdentity added in v0.8.0

func (s *Store) ApplyReleaseManualIdentity(ctx context.Context, in ReleaseManualIdentityUpdate) error

func (*Store) ApplyReleasePredbUpdate added in v0.7.0

func (s *Store) ApplyReleasePredbUpdate(ctx context.Context, in ReleasePredbUpdate) error

func (*Store) ApplyYEncHeaderRecoveries added in v0.8.0

func (s *Store) ApplyYEncHeaderRecoveries(ctx context.Context, records []YEncHeaderRecoveryRecord) ([]YEncHeaderRecoveryResult, error)

func (*Store) ApplyYEncHeaderRecovery added in v0.7.3

func (s *Store) ApplyYEncHeaderRecovery(ctx context.Context, in YEncHeaderRecoveryRecord) (*YEncHeaderRecoveryResult, error)

func (*Store) AuthorizeFederatedManifestSource added in v0.10.0

func (s *Store) AuthorizeFederatedManifestSource(ctx context.Context, source FederatedManifestSource, authorNodeID string) error

AuthorizeFederatedManifestSource rechecks serving-node and signed-author provenance at the point a manifest is fetched or accepted.

func (*Store) BackfillIndexerCrosspostGroups added in v0.8.0

func (s *Store) BackfillIndexerCrosspostGroups(ctx context.Context, batchSize, maxBatches int) (*IndexerCrosspostBackfillResult, error)

func (*Store) BackfillMissingReleaseArchiveDetailSnapshots added in v0.8.0

func (s *Store) BackfillMissingReleaseArchiveDetailSnapshots(ctx context.Context, limit int) (int64, error)

func (*Store) BackfillMissingReleaseCatalogFiles added in v0.8.0

func (s *Store) BackfillMissingReleaseCatalogFiles(ctx context.Context, limit int) (int64, error)

func (*Store) BackfillPriorityYEncRecoveryWorkItems added in v0.8.0

func (s *Store) BackfillPriorityYEncRecoveryWorkItems(ctx context.Context, limit int) (int64, int64, error)

func (*Store) BackfillYEncRecoveryWorkItems added in v0.8.0

func (s *Store) BackfillYEncRecoveryWorkItems(ctx context.Context, limit int) (int64, int64, error)

func (*Store) BinaryEffectiveComplete added in v0.9.0

func (s *Store) BinaryEffectiveComplete(ctx context.Context, binaryID int64) (bool, error)

func (*Store) BuildCoverageSchedulerPlan added in v0.9.0

func (s *Store) BuildCoverageSchedulerPlan(ctx context.Context, params CoverageWorkSuggestionParams) (CoverageSchedulerPlan, error)

func (*Store) CanAcceptFederationEventForPools added in v0.9.0

func (s *Store) CanAcceptFederationEventForPools(ctx context.Context, authorNodeID string, poolIDs []string, eventType string) (PoolAuthorizationResult, error)

func (*Store) CanFetchResolutionManifest added in v0.9.0

func (s *Store) CanFetchResolutionManifest(ctx context.Context, manifestID, nodeID string) (bool, error)

func (*Store) CanFetchResolutionManifestForSource added in v0.10.0

func (s *Store) CanFetchResolutionManifestForSource(ctx context.Context, manifestID, releaseID, poolID, nodeID string) (bool, error)

func (*Store) CanGetFederatedReleaseForPrincipal added in v0.9.0

func (s *Store) CanGetFederatedReleaseForPrincipal(ctx context.Context, releaseID, userID string, roleIDs []string) (bool, error)

func (*Store) CheckCoverageRangeBlock added in v0.9.0

func (s *Store) CheckCoverageRangeBlock(ctx context.Context, params CoverageRangeBlockParams) (CoverageRangeBlock, error)

func (*Store) CheckCriticalIndexerIntegrity added in v0.8.0

func (s *Store) CheckCriticalIndexerIntegrity(ctx context.Context, ensureExtension bool) (*IndexerIntegrityReport, error)

func (*Store) ClaimAssemblyQueueBatch added in v0.8.0

func (s *Store) ClaimAssemblyQueueBatch(ctx context.Context, req AssemblyClaimRequest) ([]AssemblyCandidate, error)

func (*Store) ClaimAssemblyQueueBatchWithStats added in v0.8.0

func (s *Store) ClaimAssemblyQueueBatchWithStats(ctx context.Context, req AssemblyClaimRequest) ([]AssemblyCandidate, AssemblyClaimStats, error)

func (*Store) ClaimBinaryEvidenceRepairWork added in v0.9.0

func (s *Store) ClaimBinaryEvidenceRepairWork(ctx context.Context, owner string, limit int, lease time.Duration) ([]BinaryEvidenceRepairCandidate, error)

func (*Store) ClaimBinaryInspectionCandidates added in v0.7.1

func (s *Store) ClaimBinaryInspectionCandidates(ctx context.Context, req BinaryInspectionClaimRequest) ([]BinaryInspectionCandidate, error)

func (*Store) ClaimDeferredArticleRange added in v0.9.0

func (s *Store) ClaimDeferredArticleRange(ctx context.Context, owner string, lease time.Duration) (*DeferredArticleRangeClaim, error)

func (*Store) ClaimIndexerStage added in v0.7.0

func (s *Store) ClaimIndexerStage(ctx context.Context, req IndexerStageClaimRequest) (*IndexerStageClaimResult, error)

func (*Store) ClaimReleaseArchiveCandidates added in v0.8.0

func (s *Store) ClaimReleaseArchiveCandidates(ctx context.Context, limit int, policy ReleaseReadyPolicy) ([]ReleaseArchiveCandidate, error)

func (*Store) ClaimReleasePurgeCandidates added in v0.8.0

func (s *Store) ClaimReleasePurgeCandidates(ctx context.Context, limit int, policy ReleaseReadyPolicy) ([]ReleasePurgeCandidate, error)

func (*Store) ClaimUnassembledArticleHeaders added in v0.7.1

func (s *Store) ClaimUnassembledArticleHeaders(ctx context.Context, req AssemblyClaimRequest) ([]AssemblyCandidate, error)

func (*Store) ClaimValidationTasks added in v0.9.0

func (s *Store) ClaimValidationTasks(ctx context.Context, nodeID, poolID string, limit int) ([]ValidationTask, error)

func (*Store) CleanupStaleAssemblyQueueRows added in v0.8.0

func (s *Store) CleanupStaleAssemblyQueueRows(ctx context.Context, limit int) (int, error)

func (*Store) Close

func (s *Store) Close() error

func (*Store) CompactBinaryEvidenceDiagnostics added in v0.9.0

func (s *Store) CompactBinaryEvidenceDiagnostics(ctx context.Context, before time.Time) error

func (*Store) CompactFederationActivityRollups added in v0.9.0

func (s *Store) CompactFederationActivityRollups(ctx context.Context, now time.Time) error

func (*Store) CompactFederationProtocolState added in v0.9.0

func (s *Store) CompactFederationProtocolState(
	ctx context.Context,
	now time.Time,
	handshakeBefore time.Time,
	rejectedBefore time.Time,
) (FederationProtocolCompactionResult, error)

CompactFederationProtocolState removes bounded-lifetime protocol records. Accepted events and their projections are intentionally retained.

func (*Store) CompleteBinaryEvidenceRepairWork added in v0.9.0

func (s *Store) CompleteBinaryEvidenceRepairWork(ctx context.Context, binaryID int64, completed bool, errText string) error

func (*Store) CompleteBinaryInspection added in v0.7.0

func (s *Store) CompleteBinaryInspection(ctx context.Context, in BinaryInspectionRecord) error

func (*Store) CompleteDeferredArticleRange added in v0.9.0

func (s *Store) CompleteDeferredArticleRange(ctx context.Context, id int64, owner string) error

func (*Store) CompleteIndexerStageRun added in v0.7.0

func (s *Store) CompleteIndexerStageRun(ctx context.Context, req IndexerStageFinishRequest) error

func (*Store) CompleteValidationTask added in v0.9.0

func (s *Store) CompleteValidationTask(ctx context.Context, taskID int64, status, message string) error

func (*Store) ConfigurePartitionProvisioning added in v0.9.0

func (s *Store) ConfigurePartitionProvisioning(ddlLockTimeout time.Duration)

ConfigurePartitionProvisioning applies the lock budget used by each individual parent/day DDL transaction.

func (*Store) ConfigureYEncRecoveryAdmission added in v0.8.0

func (s *Store) ConfigureYEncRecoveryAdmission(ctx context.Context, cfg YEncRecoveryAdmissionConfig) error

func (*Store) CountBlockingYEncRecoveryBacklog added in v0.8.0

func (s *Store) CountBlockingYEncRecoveryBacklog(ctx context.Context) (int64, error)

func (*Store) CountClaimableAssembleBacklog added in v0.8.0

func (s *Store) CountClaimableAssembleBacklog(ctx context.Context) (int64, error)

func (*Store) CountInspectDiscoveryReadyQueue added in v0.8.0

func (s *Store) CountInspectDiscoveryReadyQueue(ctx context.Context) (int64, error)

func (*Store) CountInspectionReadyQueue added in v0.8.0

func (s *Store) CountInspectionReadyQueue(ctx context.Context, stageName string) (int64, error)

func (*Store) CountPendingBinaryInspectionBacklog added in v0.8.0

func (s *Store) CountPendingBinaryInspectionBacklog(ctx context.Context, stageName string) (int64, error)

func (*Store) CountPendingInspectArchiveBinaries added in v0.8.0

func (s *Store) CountPendingInspectArchiveBinaries(ctx context.Context) (int64, error)

func (*Store) CountPendingInspectMediaBinaries added in v0.7.2

func (s *Store) CountPendingInspectMediaBinaries(ctx context.Context) (int64, error)

func (*Store) CountPendingPAR2InspectionBacklog added in v0.8.0

func (s *Store) CountPendingPAR2InspectionBacklog(ctx context.Context) (int64, error)

func (*Store) CountPendingReleaseCandidateFamilies added in v0.7.2

func (s *Store) CountPendingReleaseCandidateFamilies(ctx context.Context) (int64, error)

func (*Store) CountPendingYEncRecoveryBinaries added in v0.8.0

func (s *Store) CountPendingYEncRecoveryBinaries(ctx context.Context) (int64, error)

func (*Store) CountPendingYEncRecoveryBinariesByMaxPriority added in v0.9.0

func (s *Store) CountPendingYEncRecoveryBinariesByMaxPriority(ctx context.Context, maxPriorityRank int) (int64, error)

func (*Store) CountQueuedReleaseFamilySummaries added in v0.8.0

func (s *Store) CountQueuedReleaseFamilySummaries(ctx context.Context) (int, error)

func (*Store) CountUnassembledArticleHeaders added in v0.7.0

func (s *Store) CountUnassembledArticleHeaders(ctx context.Context) (int64, error)

func (*Store) CoverageAssignmentExists added in v0.9.0

func (s *Store) CoverageAssignmentExists(ctx context.Context, assignmentID string) (bool, error)

func (*Store) DB

func (s *Store) DB() *sql.DB

func (*Store) DatabaseStorageStatus added in v0.8.0

func (s *Store) DatabaseStorageStatus(ctx context.Context) (*DatabaseStorageStatus, error)

func (*Store) DeleteAuxiliaryOnlySiblingReleases added in v0.8.0

func (s *Store) DeleteAuxiliaryOnlySiblingReleases(ctx context.Context, providerID, newsgroupID int64, baseStem string, keepReleaseIDs []string) error

func (*Store) DeleteFederationPeer added in v0.9.0

func (s *Store) DeleteFederationPeer(ctx context.Context, peerID int64) (bool, error)

func (*Store) DeleteFederationRolePoolAccess added in v0.9.0

func (s *Store) DeleteFederationRolePoolAccess(ctx context.Context, poolID, roleID string) (bool, error)

func (*Store) DeleteStaleReleasesForSourceKey added in v0.7.0

func (s *Store) DeleteStaleReleasesForSourceKey(ctx context.Context, providerID int64, keyKind, releaseFamilyKey string, keepGroupNames []string) error

func (*Store) DryRunPartitionDefaultRehomeTask added in v0.8.0

func (s *Store) DryRunPartitionDefaultRehomeTask(ctx context.Context, batchSize int) (*MaintenanceTaskResult, error)

func (*Store) DryRunPartitionRetentionTask added in v0.8.0

func (s *Store) DryRunPartitionRetentionTask(ctx context.Context, batchSize int) (*MaintenanceTaskResult, error)

func (*Store) DryRunRawStageRetentionTask added in v0.8.0

func (s *Store) DryRunRawStageRetentionTask(ctx context.Context, batchSize int, policy RawStageRetentionPolicy) (*MaintenanceTaskResult, error)

func (*Store) DryRunReleaseSourcePurge added in v0.8.0

func (s *Store) DryRunReleaseSourcePurge(ctx context.Context, limit int, policy ReleaseReadyPolicy) (*MaintenanceTaskResult, error)

func (*Store) DryRunSimpleMaintenanceTask added in v0.8.0

func (s *Store) DryRunSimpleMaintenanceTask(ctx context.Context, taskKey string, batchSize int) (*MaintenanceTaskResult, error)

func (*Store) EnqueueFederationValidationTask added in v0.9.0

func (s *Store) EnqueueFederationValidationTask(ctx context.Context, request ValidationTaskRequest) (bool, error)

func (*Store) EnsureNewsgroup

func (s *Store) EnsureNewsgroup(ctx context.Context, groupName string) (int64, error)

EnsureNewsgroup creates/updates a newsgroup row and returns its id.

func (*Store) EnsureProvider

func (s *Store) EnsureProvider(ctx context.Context, providerKey, displayName string) (int64, error)

EnsureProvider creates/updates a provider row and returns its id.

func (*Store) EnsureScrapeTimeframeProgress added in v0.9.0

func (s *Store) EnsureScrapeTimeframeProgress(ctx context.Context, timeframeID string, providerID, newsgroupID int64, windowStart, windowEnd time.Time) (*ScrapeTimeframeProgress, error)

func (*Store) EstimateUnassembledArticleHeaders added in v0.8.0

func (s *Store) EstimateUnassembledArticleHeaders(ctx context.Context) (int64, error)

func (*Store) ExistingScrapeSourceDays added in v0.9.0

func (s *Store) ExistingScrapeSourceDays(ctx context.Context, sourcePostedAt []time.Time) (map[string]bool, error)

ExistingScrapeSourceDays reports which requested UTC source days already have the complete scrape-owned partition bundle. Callers use this to ensure existing sparse days do not consume the per-pass new-day admission budget.

func (*Store) ExpectedSchemaVersion

func (s *Store) ExpectedSchemaVersion() int

func (*Store) FailBinaryInspection added in v0.7.0

func (s *Store) FailBinaryInspection(ctx context.Context, in BinaryInspectionRecord) error

func (*Store) FailDeferredArticleRange added in v0.9.0

func (s *Store) FailDeferredArticleRange(ctx context.Context, id int64, owner, cause string, maxAttempts int) error

func (*Store) FailIndexerStageRun added in v0.7.0

func (s *Store) FailIndexerStageRun(ctx context.Context, req IndexerStageFinishRequest) error

func (*Store) FailScrapeTimeframeProgress added in v0.9.0

func (s *Store) FailScrapeTimeframeProgress(ctx context.Context, timeframeID string, providerID, newsgroupID int64, cause string) error

func (*Store) FederationEventExists added in v0.9.0

func (s *Store) FederationEventExists(ctx context.Context, eventID string) (bool, error)

func (*Store) FederationNodeTrustScore added in v0.9.0

func (s *Store) FederationNodeTrustScore(ctx context.Context, nodeID string) (float64, error)

func (*Store) FinalizeFederationAdmission added in v0.9.0

func (s *Store) FinalizeFederationAdmission(ctx context.Context, proposalEventID, finalEventID, status, reason string) error

func (*Store) FindAcceptedYEncEvidence added in v0.9.0

func (s *Store) FindAcceptedYEncEvidence(ctx context.Context, messageIDs []string, localOnly bool, limit int) ([]YEncEvidenceRecord, error)

func (*Store) FindFederatedManifestSource added in v0.9.0

func (s *Store) FindFederatedManifestSource(ctx context.Context, releaseID string) (*FederatedManifestSource, error)

func (*Store) FindFederationEventByBodyHash added in v0.9.0

func (s *Store) FindFederationEventByBodyHash(ctx context.Context, authorNodeID, eventType, bodyHash, poolID string) (string, error)

func (*Store) FindLocalBinarySegments added in v0.9.0

func (s *Store) FindLocalBinarySegments(ctx context.Context, scheme, matchID string, parts []int, anchors []string, limit int) ([]evidence.Segment, error)

func (*Store) FindScrapedArticleRangeForDateWindow added in v0.9.0

func (s *Store) FindScrapedArticleRangeForDateWindow(ctx context.Context, providerID, newsgroupID int64, windowStart, windowEnd time.Time) (int64, int64, bool, error)

func (*Store) FinishScrapeRun

func (s *Store) FinishScrapeRun(ctx context.Context, runID int64, status, errorText string) error

FinishScrapeRun closes a scrape_run row.

func (*Store) GetBackfillCheckpoint

func (s *Store) GetBackfillCheckpoint(ctx context.Context, providerID, newsgroupID int64) (int64, error)

separate backward cursor for historical scrape mode. Returns 0 when no backfill checkpoint exists yet.

func (*Store) GetBackfillCheckpointState added in v0.7.0

func (s *Store) GetBackfillCheckpointState(ctx context.Context, providerID, newsgroupID int64) (*BackfillCheckpointState, error)

func (*Store) GetCachedFederatedNZBByReleaseID added in v0.9.0

func (s *Store) GetCachedFederatedNZBByReleaseID(ctx context.Context, releaseID string) ([]byte, bool, error)

func (*Store) GetCatalogBinaryFile added in v0.7.3

func (s *Store) GetCatalogBinaryFile(ctx context.Context, binaryID int64) (*CatalogReleaseFile, error)

func (*Store) GetCatalogReleaseByID

func (s *Store) GetCatalogReleaseByID(ctx context.Context, releaseID string) (*domain.Release, error)

CHANGED: PG release catalog read by id for later resolver work.

func (*Store) GetCheckpoint

func (s *Store) GetCheckpoint(ctx context.Context, providerID, newsgroupID int64) (int64, error)

GetCheckpoint returns the last article number for provider+group. Returns 0 when no checkpoint exists.

func (*Store) GetFederatedNZBSHA256ByReleaseID added in v0.10.0

func (s *Store) GetFederatedNZBSHA256ByReleaseID(ctx context.Context, releaseID string) (string, bool, error)

func (*Store) GetFederatedReleaseCardForPrincipal added in v0.10.0

func (s *Store) GetFederatedReleaseCardForPrincipal(ctx context.Context, releaseID, userID string, roleIDs []string) (*releasecard.ReleaseCard, bool, error)

GetFederatedReleaseCardForPrincipal returns the signed ReleaseCard behind a currently authorized projection. It deliberately rebuilds the card from the verified event instead of trusting mutable projection or aggregator-cache metadata.

func (*Store) GetFederationAdmission added in v0.9.0

func (s *Store) GetFederationAdmission(ctx context.Context, proposalEventID string) (FederationAdmissionRecord, error)

func (*Store) GetFederationEvent added in v0.9.0

func (s *Store) GetFederationEvent(ctx context.Context, eventID string) (*events.SignedEvent, error)

func (*Store) GetFederationNodePublicKey added in v0.9.0

func (s *Store) GetFederationNodePublicKey(ctx context.Context, nodeID string) (ed25519.PublicKey, error)

func (*Store) GetFederationNodeTransportPublicKey added in v0.10.0

func (s *Store) GetFederationNodeTransportPublicKey(ctx context.Context, nodeID string) (ed25519.PublicKey, error)

GetFederationNodeTransportPublicKey includes blocked nodes so the traversal layer can still reject identity substitution before application policy independently rejects all pool access for the blocked identity.

func (*Store) GetFederationPoolHealthReport added in v0.9.0

func (s *Store) GetFederationPoolHealthReport(ctx context.Context, poolID string, now time.Time) (FederationPoolHealthReport, error)

func (*Store) GetFederationStorageReport added in v0.9.0

func (s *Store) GetFederationStorageReport(ctx context.Context) (FederationStorageReport, error)

func (*Store) GetGoNZBNetLocalRelease added in v0.9.0

func (s *Store) GetGoNZBNetLocalRelease(ctx context.Context, releaseID string, policy ReleaseReadyPolicy) (releasecard.LocalRelease, error)

func (*Store) GetIndexerBackfillProgress added in v0.7.2

func (s *Store) GetIndexerBackfillProgress(ctx context.Context) (*IndexerBackfillProgress, error)

func (*Store) GetIndexerBinaryDetail added in v0.7.0

func (s *Store) GetIndexerBinaryDetail(ctx context.Context, binaryID int64) (*IndexerBinaryDetail, error)

func (*Store) GetIndexerCrosspostNewsgroupPopularity added in v0.8.0

func (s *Store) GetIndexerCrosspostNewsgroupPopularity(ctx context.Context, limit int) ([]IndexerCrosspostPopularityItem, error)

func (*Store) GetIndexerDashboardStats added in v0.7.2

func (s *Store) GetIndexerDashboardStats(ctx context.Context) (*IndexerDashboardStats, error)

func (*Store) GetIndexerFileDetail added in v0.7.0

func (s *Store) GetIndexerFileDetail(ctx context.Context, fileID int64) (*IndexerFileDetail, error)

func (*Store) GetIndexerOverview added in v0.7.0

func (s *Store) GetIndexerOverview(ctx context.Context) (*IndexerOverview, error)

func (*Store) GetIndexerProviderGroupInventoryStats added in v0.8.0

func (s *Store) GetIndexerProviderGroupInventoryStats(ctx context.Context) (IndexerProviderGroupInventoryStats, error)

func (*Store) GetIndexerReleaseDetail added in v0.7.0

func (s *Store) GetIndexerReleaseDetail(ctx context.Context, releaseID string) (*IndexerReleaseDetail, error)

func (*Store) GetIndexerStageRun added in v0.7.0

func (s *Store) GetIndexerStageRun(ctx context.Context, runID int64) (*IndexerStageRun, error)

func (*Store) GetIndexerStageThroughput added in v0.7.2

func (s *Store) GetIndexerStageThroughput(ctx context.Context) (*IndexerStageThroughput, error)

func (*Store) GetIndexerStorageAudit added in v0.8.0

func (s *Store) GetIndexerStorageAudit(ctx context.Context) (*IndexerStorageAuditReport, error)

func (*Store) GetLatestCheckpoint

func (s *Store) GetLatestCheckpoint(ctx context.Context, providerID, newsgroupID int64) (int64, error)

explicit latest/forward checkpoint accessor for Milestone 8.5.

func (*Store) GetLatestNNTPSnapshot added in v0.8.0

func (s *Store) GetLatestNNTPSnapshot(ctx context.Context, moduleName string) (*NNTPRuntimeSnapshot, error)

func (*Store) GetPoolCheckpointEvent added in v0.9.0

func (s *Store) GetPoolCheckpointEvent(ctx context.Context, poolID string) (*events.SignedEvent, error)

func (*Store) GetPoolGenesisEvent added in v0.9.0

func (s *Store) GetPoolGenesisEvent(ctx context.Context, poolID string) (*events.SignedEvent, error)

func (*Store) GetPredbBackfillCheckpoint added in v0.7.0

func (s *Store) GetPredbBackfillCheckpoint(ctx context.Context, provider string) (*PredbBackfillCheckpoint, error)

func (*Store) GetPredbBackfillWindow added in v0.7.0

func (s *Store) GetPredbBackfillWindow(ctx context.Context) (*PredbBackfillWindow, error)

func (*Store) GetPredbEntryWindow added in v0.7.0

func (s *Store) GetPredbEntryWindow(ctx context.Context) (*PredbBackfillWindow, error)

func (*Store) GetPublicIndexerReleaseDetail added in v0.7.0

func (s *Store) GetPublicIndexerReleaseDetail(ctx context.Context, releaseID string) (*PublicIndexerReleaseDetail, error)

func (*Store) GetPublicIndexerReleaseDetailWithPolicy added in v0.8.0

func (s *Store) GetPublicIndexerReleaseDetailWithPolicy(ctx context.Context, releaseID string, policy ReleaseReadyPolicy) (*PublicIndexerReleaseDetail, error)

func (*Store) GetReleaseArchiveState added in v0.8.0

func (s *Store) GetReleaseArchiveState(ctx context.Context, releaseID string) (*ReleaseArchiveState, error)

func (*Store) GetReleaseOverride added in v0.7.0

func (s *Store) GetReleaseOverride(ctx context.Context, releaseID string) (*ReleaseOverrideRecord, error)

func (*Store) GetResolutionManifest added in v0.9.0

func (s *Store) GetResolutionManifest(ctx context.Context, manifestID string) (*manifest.ResolutionManifest, error)

func (*Store) GetResolutionManifestEvent added in v0.9.0

func (s *Store) GetResolutionManifestEvent(ctx context.Context, manifestID, poolID string) (*events.SignedEvent, error)

func (*Store) GetSourceBucketOutcomeReport added in v0.9.0

func (s *Store) GetSourceBucketOutcomeReport(ctx context.Context, limit int) (*SourceBucketOutcomeReport, error)

func (*Store) GetTrustPool added in v0.9.0

func (s *Store) GetTrustPool(ctx context.Context, poolID string) (TrustPoolRecord, error)

func (*Store) GetTrustPoolPolicy added in v0.9.0

func (s *Store) GetTrustPoolPolicy(ctx context.Context, poolID string) (pools.PoolPolicy, error)

func (*Store) GetYEncRecoveryAdmissionSnapshot added in v0.8.0

func (s *Store) GetYEncRecoveryAdmissionSnapshot(ctx context.Context) (*YEncRecoveryAdmissionSnapshot, error)

func (*Store) HasBackfillCutoffReachedForGroup added in v0.7.2

func (s *Store) HasBackfillCutoffReachedForGroup(ctx context.Context, newsgroupID int64, untilDate time.Time) (bool, error)

func (*Store) HeartbeatIndexerStageRun added in v0.7.0

func (s *Store) HeartbeatIndexerStageRun(ctx context.Context, runID int64, owner string, leaseDuration time.Duration) error

func (*Store) ImportPeerSegments added in v0.9.0

func (s *Store) ImportPeerSegments(ctx context.Context, binaryID int64, poolID, nodeID, bundleID string, segments []evidence.Segment) (int, int, error)

func (*Store) InsertArticleHeaders

func (s *Store) InsertArticleHeaders(ctx context.Context, providerID, newsgroupID int64, headers []ArticleHeader) (int64, error)

InsertArticleHeaders inserts header rows plus transient ingest payload side rows.

func (*Store) IsActiveFederationPoolMember added in v0.9.0

func (s *Store) IsActiveFederationPoolMember(ctx context.Context, nodeID string) (bool, error)

func (*Store) IsActivePoolAdmin added in v0.9.0

func (s *Store) IsActivePoolAdmin(ctx context.Context, poolID, nodeID string) (bool, error)

func (*Store) IsActivePoolMember added in v0.9.0

func (s *Store) IsActivePoolMember(ctx context.Context, poolID, nodeID string) (bool, error)

func (*Store) IsActivePoolMemberWithCapability added in v0.9.0

func (s *Store) IsActivePoolMemberWithCapability(ctx context.Context, poolID, nodeID, required string) (bool, error)

func (*Store) IsFederationPoolMember added in v0.9.0

func (s *Store) IsFederationPoolMember(ctx context.Context, nodeID string) (bool, error)

func (*Store) LastYEncRecoveryApplyStats added in v0.8.0

func (s *Store) LastYEncRecoveryApplyStats() YEncRecoveryApplyStats

func (*Store) LastYEncRecoverySelectionStats added in v0.8.0

func (s *Store) LastYEncRecoverySelectionStats() YEncRecoverySelectionStats

func (*Store) ListActivePoolIDsForNode added in v0.9.0

func (s *Store) ListActivePoolIDsForNode(ctx context.Context, nodeID string) ([]string, error)

func (*Store) ListActivePoolIDsForNodeCapabilities added in v0.9.0

func (s *Store) ListActivePoolIDsForNodeCapabilities(ctx context.Context, nodeID string, required []string) ([]string, error)

func (*Store) ListActivePoolMemberEndpoints added in v0.9.0

func (s *Store) ListActivePoolMemberEndpoints(ctx context.Context, poolID string) ([]admission.MemberEndpoint, error)

func (*Store) ListArticleAvailabilityDiagnostics added in v0.9.0

func (s *Store) ListArticleAvailabilityDiagnostics(ctx context.Context, poolID string, limit int) ([]ArticleAvailabilityDiagnostic, error)

func (*Store) ListAutoReformReleaseCandidates added in v0.8.0

func (s *Store) ListAutoReformReleaseCandidates(ctx context.Context, limit int, minReformAge time.Duration) ([]ReleaseCandidate, error)

func (*Store) ListBinariesForReleaseCandidate

func (s *Store) ListBinariesForReleaseCandidate(ctx context.Context, providerID, newsgroupID int64, keyKind, releaseFamilyKey string) ([]BinarySummary, error)

CHANGED: fetch binaries that belong to one release candidate.

func (*Store) ListBinaryEvidenceDiagnostics added in v0.9.0

func (s *Store) ListBinaryEvidenceDiagnostics(ctx context.Context, poolID string, limit int) ([]BinaryEvidenceDiagnosticRecord, error)

func (*Store) ListBinaryEvidencePeers added in v0.9.0

func (s *Store) ListBinaryEvidencePeers(ctx context.Context, localNodeID string, limit int) ([]BinaryEvidencePeer, error)

func (*Store) ListBinaryInspectionCandidates added in v0.7.0

func (s *Store) ListBinaryInspectionCandidates(ctx context.Context, stageName string, limit int) ([]BinaryInspectionCandidate, error)

func (*Store) ListBinaryInspectionCandidatesWithOptions added in v0.8.0

func (s *Store) ListBinaryInspectionCandidatesWithOptions(ctx context.Context, stageName string, limit int, opts BinaryInspectionCandidateOptions) ([]BinaryInspectionCandidate, error)

func (*Store) ListBinaryPartArticles

func (s *Store) ListBinaryPartArticles(ctx context.Context, binaryID int64) ([]ReleaseFileArticleRecord, error)

CHANGED: fetch article ids/part numbers for one binary so release file article refs can be derived on demand.

func (*Store) ListBinaryPartArticlesBatch added in v0.7.1

func (s *Store) ListBinaryPartArticlesBatch(ctx context.Context, binaryIDs []int64) (map[int64][]ReleaseFileArticleRecord, error)

CHANGED: fetch article ids/part numbers for a set of binaries in one query.

func (*Store) ListCatalogBinaryArticles added in v0.7.3

func (s *Store) ListCatalogBinaryArticles(ctx context.Context, binaryID int64) ([]CatalogArticleRef, error)

func (*Store) ListCatalogBinaryNewsgroups added in v0.7.3

func (s *Store) ListCatalogBinaryNewsgroups(ctx context.Context, binaryID int64) ([]string, error)

func (*Store) ListCatalogReleaseFileArticles

func (s *Store) ListCatalogReleaseFileArticles(ctx context.Context, releaseFileID int64) ([]CatalogArticleRef, error)

CHANGED: list article refs for one release_file row via release_files -> binary_parts.

func (*Store) ListCatalogReleaseFiles

func (s *Store) ListCatalogReleaseFiles(ctx context.Context, releaseID string) ([]CatalogReleaseFile, error)

CHANGED: list release files for one formed PG release.

func (*Store) ListCatalogReleaseNewsgroups

func (s *Store) ListCatalogReleaseNewsgroups(ctx context.Context, releaseID string) ([]string, error)

CHANGED: list newsgroups attached to a formed release.

func (*Store) ListCoverageDashboard added in v0.9.0

func (s *Store) ListCoverageDashboard(ctx context.Context, poolID string) (CoverageDashboard, error)

func (*Store) ListCoverageGroupCatalog added in v0.9.0

func (s *Store) ListCoverageGroupCatalog(ctx context.Context, poolID string) ([]CoverageGroupCatalogItem, error)

func (*Store) ListCoverageScannerNodes added in v0.9.0

func (s *Store) ListCoverageScannerNodes(ctx context.Context, poolID string, minTrustScore float64) ([]CoverageScannerNode, error)

func (*Store) ListDeferredArticleRanges added in v0.8.0

func (s *Store) ListDeferredArticleRanges(ctx context.Context, state string, limit int) ([]DeferredArticleRangeSummary, error)

func (*Store) ListEnabledFederationPeers added in v0.9.0

func (s *Store) ListEnabledFederationPeers(ctx context.Context) ([]FederationPeerRecord, error)

func (*Store) ListExistingReleaseCandidates added in v0.7.0

func (s *Store) ListExistingReleaseCandidates(ctx context.Context, limit, offset int) ([]ReleaseCandidate, error)

func (*Store) ListExistingReleaseCandidatesForReleaseIDs added in v0.8.0

func (s *Store) ListExistingReleaseCandidatesForReleaseIDs(ctx context.Context, releaseIDs []string) ([]ReleaseCandidate, error)

func (*Store) ListFederatedManifestSourceDiagnostics added in v0.9.0

func (s *Store) ListFederatedManifestSourceDiagnostics(ctx context.Context, poolID string, limit int) ([]FederatedManifestSourceDiagnostic, error)

func (*Store) ListFederatedReleaseSourceDiagnostics added in v0.9.0

func (s *Store) ListFederatedReleaseSourceDiagnostics(ctx context.Context, poolID string, limit int) ([]FederatedReleaseSourceDiagnostic, error)

func (*Store) ListFederationActivityRollups added in v0.9.0

func (s *Store) ListFederationActivityRollups(ctx context.Context, query FederationActivityQuery) ([]activity.Rollup, error)

func (*Store) ListFederationAdmissions added in v0.9.0

func (s *Store) ListFederationAdmissions(ctx context.Context, poolID, status string, limit int) ([]FederationAdmissionRecord, error)

func (*Store) ListFederationApprovalFragments added in v0.9.0

func (s *Store) ListFederationApprovalFragments(ctx context.Context, proposalEventID string) ([]admission.ApprovalFragment, error)

func (*Store) ListFederationEventDiagnostics added in v0.9.0

func (s *Store) ListFederationEventDiagnostics(ctx context.Context, params FederationEventDiagnosticParams) ([]FederationEventDiagnostic, error)

func (*Store) ListFederationNodeCapabilities added in v0.9.0

func (s *Store) ListFederationNodeCapabilities(ctx context.Context) ([]NodeCapabilityView, error)

func (*Store) ListFederationNodeEndpoints added in v0.10.0

func (s *Store) ListFederationNodeEndpoints(ctx context.Context, nodeID string, enabledOnly bool) ([]FederationNodeEndpoint, error)

func (*Store) ListFederationOutboxEvents added in v0.9.0

func (s *Store) ListFederationOutboxEvents(ctx context.Context, params FederationOutboxParams) (FederationOutboxPage, error)

func (*Store) ListFederationPeerDeliveryDiagnostics added in v0.9.0

func (s *Store) ListFederationPeerDeliveryDiagnostics(ctx context.Context, limit int) ([]FederationPeerDeliveryDiagnostic, error)

func (*Store) ListFederationPeerDiagnostics added in v0.9.0

func (s *Store) ListFederationPeerDiagnostics(ctx context.Context, limit int) ([]FederationPeerDiagnostic, error)

func (*Store) ListFederationRejectedEventDiagnostics added in v0.9.0

func (s *Store) ListFederationRejectedEventDiagnostics(ctx context.Context, limit int) ([]FederationRejectedEventDiagnostic, error)

func (*Store) ListFederationRejectedEventSummary added in v0.9.0

func (s *Store) ListFederationRejectedEventSummary(ctx context.Context, limit int) ([]FederationRejectedEventSummary, error)

func (*Store) ListFederationReleaseLedger added in v0.10.0

func (s *Store) ListFederationReleaseLedger(ctx context.Context, params FederationReleaseLedgerParams) (FederationReleaseLedgerPage, error)

func (*Store) ListFederationRolePoolAccess added in v0.9.0

func (s *Store) ListFederationRolePoolAccess(ctx context.Context, poolID string) ([]FederationRolePoolAccessRecord, error)

func (*Store) ListFederationSearchPoolsForPrincipal added in v0.9.0

func (s *Store) ListFederationSearchPoolsForPrincipal(ctx context.Context, userID string, roleIDs []string) ([]string, error)

func (*Store) ListGoNZBNetLocalReleaseCandidates added in v0.9.0

func (s *Store) ListGoNZBNetLocalReleaseCandidates(ctx context.Context, limit int, policy ReleaseReadyPolicy) ([]releasecard.LocalRelease, error)

func (*Store) ListGoNZBNetScanOutputCandidates added in v0.9.0

func (s *Store) ListGoNZBNetScanOutputCandidates(ctx context.Context, poolID string, requireSignedManifest bool, limit int) ([]releasecard.LocalRelease, error)

func (*Store) ListHealthAttestationDiagnostics added in v0.9.0

func (s *Store) ListHealthAttestationDiagnostics(ctx context.Context, poolID string, limit int) ([]HealthAttestationDiagnostic, error)

func (*Store) ListIndexerAdminAttention added in v0.8.0

func (s *Store) ListIndexerAdminAttention(ctx context.Context, params IndexerAdminAttentionParams) ([]IndexerAdminAttentionItem, int, error)

func (*Store) ListIndexerArticleCohorts added in v0.8.0

func (s *Store) ListIndexerArticleCohorts(ctx context.Context, params IndexerArticleCohortParams) ([]IndexerArticleCohortItem, int, error)

func (*Store) ListIndexerBinaries added in v0.8.0

func (s *Store) ListIndexerBinaries(ctx context.Context, params IndexerBinaryListParams) ([]IndexerBinarySummary, int, error)

func (*Store) ListIndexerDailyBucketStats added in v0.8.0

func (s *Store) ListIndexerDailyBucketStats(ctx context.Context, limit int) ([]IndexerDailyBucketSummary, error)

func (*Store) ListIndexerGroupProfiles added in v0.8.0

func (s *Store) ListIndexerGroupProfiles(ctx context.Context, limit int) ([]IndexerGroupProfileSummary, error)

func (*Store) ListIndexerProviderGroupInventoryCandidates added in v0.8.0

func (s *Store) ListIndexerProviderGroupInventoryCandidates(ctx context.Context, query string, patternHints []string) ([]IndexerProviderGroupInventoryItem, error)

func (*Store) ListIndexerProviderGroupInventoryPage added in v0.8.0

func (s *Store) ListIndexerProviderGroupInventoryPage(ctx context.Context, query string, limit, offset int, sortKey, direction string) (IndexerProviderGroupInventoryPage, error)

func (*Store) ListIndexerReleases added in v0.7.0

func (s *Store) ListIndexerReleases(ctx context.Context, params AdminIndexerReleaseListParams) ([]IndexerReleaseSummary, int, error)

func (*Store) ListIndexerStageRuns added in v0.7.0

func (s *Store) ListIndexerStageRuns(ctx context.Context, stageName string, limit int) ([]IndexerStageRun, error)

func (*Store) ListIndexerStageRunsFiltered added in v0.7.0

func (s *Store) ListIndexerStageRunsFiltered(ctx context.Context, params IndexerStageRunListParams) ([]IndexerStageRun, error)

func (*Store) ListIndexerStageStates added in v0.7.0

func (s *Store) ListIndexerStageStates(ctx context.Context) ([]IndexerStageState, error)

func (*Store) ListPasswordVerificationCandidates added in v0.7.0

func (s *Store) ListPasswordVerificationCandidates(ctx context.Context, limit int) ([]PasswordVerificationCandidate, error)

func (*Store) ListPendingFederationProjections added in v0.9.0

func (s *Store) ListPendingFederationProjections(ctx context.Context, limit int) ([]PendingFederationProjection, error)

func (*Store) ListPoolCheckpointLeaves added in v0.9.0

func (s *Store) ListPoolCheckpointLeaves(ctx context.Context, poolID string, limit int) ([]pools.CheckpointLeaf, error)

func (*Store) ListPoolControlEvents added in v0.9.0

func (s *Store) ListPoolControlEvents(ctx context.Context, poolID string, limit int) ([]PoolControlEventRecord, error)

func (*Store) ListPoolMembers added in v0.9.0

func (s *Store) ListPoolMembers(ctx context.Context, poolID string) ([]PoolMemberRecord, error)

func (*Store) ListPredbEntriesForWindow added in v0.7.0

func (s *Store) ListPredbEntriesForWindow(ctx context.Context, from, to *time.Time, categoryHint string, limit int) ([]PredbEntrySummary, error)

func (*Store) ListPublicIndexerReleases added in v0.7.0

func (s *Store) ListPublicIndexerReleases(ctx context.Context, params PublicIndexerReleaseListParams) ([]PublicIndexerReleaseSummary, int, error)

func (*Store) ListRecentNNTPSnapshots added in v0.8.0

func (s *Store) ListRecentNNTPSnapshots(ctx context.Context, moduleName string, since time.Time) ([]NNTPRuntimeSnapshot, error)

func (*Store) ListReleaseCandidates

func (s *Store) ListReleaseCandidates(ctx context.Context, limit int, opts ReleaseCandidateSelectionOptions) ([]ReleaseCandidate, error)

CHANGED: return release groups whose binaries are new or changed since last formation.

func (*Store) ListReleaseEnrichmentCandidates added in v0.7.0

func (s *Store) ListReleaseEnrichmentCandidates(ctx context.Context, stageName string, limit int) ([]ReleaseEnrichmentCandidate, error)

func (*Store) ListReleaseNZBGenerateCandidates added in v0.8.0

func (s *Store) ListReleaseNZBGenerateCandidates(ctx context.Context, limit int, policy ReleaseReadyPolicy) ([]ReleaseNZBGenerateCandidate, error)

func (*Store) ListReleaseTitleCandidates added in v0.7.0

func (s *Store) ListReleaseTitleCandidates(ctx context.Context, binaryIDs []int64) ([]ReleaseTitleCandidate, error)

func (*Store) ListReputationDiagnostics added in v0.9.0

func (s *Store) ListReputationDiagnostics(ctx context.Context, limit int) ([]ReputationDiagnostic, error)

func (*Store) ListScrapeTimeframeProgress added in v0.9.0

func (s *Store) ListScrapeTimeframeProgress(ctx context.Context, limit int) ([]ScrapeTimeframeProgressSummary, error)

func (*Store) ListStaleCoverageRangeClaims added in v0.9.0

func (s *Store) ListStaleCoverageRangeClaims(ctx context.Context, poolID string, limit int) ([]CoverageClaimRecord, error)

func (*Store) ListStaleCoverageTimeWindowClaims added in v0.9.0

func (s *Store) ListStaleCoverageTimeWindowClaims(ctx context.Context, poolID string, limit int) ([]CoverageClaimRecord, error)

func (*Store) ListTombstones added in v0.9.0

func (s *Store) ListTombstones(ctx context.Context, activeOnly bool) ([]TombstoneRecord, error)

func (*Store) ListTrustPools added in v0.9.0

func (s *Store) ListTrustPools(ctx context.Context) ([]TrustPoolRecord, error)

func (*Store) ListUnassembledArticleHeaders

func (s *Store) ListUnassembledArticleHeaders(ctx context.Context, limit int) ([]AssemblyCandidate, error)

func (*Store) ListUndeliveredFederationEvents added in v0.9.0

func (s *Store) ListUndeliveredFederationEvents(ctx context.Context, peerID int64, nodeID string, limit int) ([]*events.SignedEvent, error)

func (*Store) ListValidationGaps added in v0.9.0

func (s *Store) ListValidationGaps(ctx context.Context, poolID string, limit int) ([]ValidationGap, error)

func (*Store) ListValidationTaskDiagnostics added in v0.9.0

func (s *Store) ListValidationTaskDiagnostics(ctx context.Context, limit int) ([]ValidationTaskDiagnostic, error)

func (*Store) ListYEncRecoveryCandidates added in v0.7.3

func (s *Store) ListYEncRecoveryCandidates(ctx context.Context, limit int) ([]YEncRecoveryCandidate, error)

func (*Store) ListYEncRecoveryCandidatesWithOptions added in v0.8.0

func (s *Store) ListYEncRecoveryCandidatesWithOptions(ctx context.Context, limit int, opts YEncRecoverySelectionOptions) ([]YEncRecoveryCandidate, error)

func (*Store) MarkFederationPeerSyncFailure added in v0.9.0

func (s *Store) MarkFederationPeerSyncFailure(ctx context.Context, peerID int64, errText string) error

func (*Store) MarkFederationPeerSyncSuccess added in v0.9.0

func (s *Store) MarkFederationPeerSyncSuccess(ctx context.Context, peerID int64, nodeID, cursor, lastEventID string) error

func (*Store) MarkGoNZBNetScanOutputPublished added in v0.9.0

func (s *Store) MarkGoNZBNetScanOutputPublished(ctx context.Context, scanID, eventID, poolID string) error

func (*Store) MarkReleaseArchiveFailed added in v0.8.0

func (s *Store) MarkReleaseArchiveFailed(ctx context.Context, releaseID, errText string) error

func (*Store) MarkReleaseArchiveStored added in v0.8.0

func (s *Store) MarkReleaseArchiveStored(ctx context.Context, in ReleaseArchiveStoredRecord) error

func (*Store) MaterializeArticleHeaderPosters added in v0.8.0

func (s *Store) MaterializeArticleHeaderPosters(ctx context.Context, limit int) (*IndexerPosterMaterializationResult, error)

func (*Store) MaterializeCoverageStaleClaimPenalties added in v0.9.0

func (s *Store) MaterializeCoverageStaleClaimPenalties(ctx context.Context, poolID string) (int64, error)

func (*Store) NextFederationEventSequence added in v0.9.0

func (s *Store) NextFederationEventSequence(ctx context.Context, authorNodeID string) (int64, *string, error)

func (*Store) ObserveScrapeRange added in v0.8.0

func (s *Store) ObserveScrapeRange(ctx context.Context, providerID, newsgroupID int64, from, to int64, observations []ScrapeRangeObservation) error

func (*Store) PauseIndexerStage added in v0.7.0

func (s *Store) PauseIndexerStage(ctx context.Context, stageName string) error

func (*Store) PersistReleaseSnapshot added in v0.8.0

func (s *Store) PersistReleaseSnapshot(ctx context.Context, in ReleaseRecord, files []ReleaseFileRecord, newsgroupIDs []int64) (ReleaseSnapshotResult, error)

func (*Store) Ping

func (s *Store) Ping(ctx context.Context) error

func (*Store) PoolMemberHasCapability added in v0.9.0

func (s *Store) PoolMemberHasCapability(ctx context.Context, poolID, nodeID string, required []string) (bool, error)

func (*Store) ProjectArticleAvailabilityAttestation added in v0.9.0

func (s *Store) ProjectArticleAvailabilityAttestation(ctx context.Context, projection ArticleAvailabilityProjection) error

func (*Store) ProjectChecksumAttestation added in v0.9.0

func (s *Store) ProjectChecksumAttestation(ctx context.Context, projection ChecksumAttestationProjection) error

func (*Store) ProjectCoverageEvent added in v0.9.0

func (s *Store) ProjectCoverageEvent(ctx context.Context, event *events.SignedEvent) error

func (*Store) ProjectFederationPoolEvent added in v0.9.0

func (s *Store) ProjectFederationPoolEvent(ctx context.Context, event *events.SignedEvent) error

func (*Store) ProjectHealthAttestation added in v0.9.0

func (s *Store) ProjectHealthAttestation(ctx context.Context, projection HealthAttestationProjection) error

func (*Store) ProjectManifestAvailability added in v0.9.0

func (s *Store) ProjectManifestAvailability(ctx context.Context, projection ManifestAvailabilityProjection) error

func (*Store) ProjectReleasePublicationState added in v0.10.0

func (s *Store) ProjectReleasePublicationState(ctx context.Context, projection publicationstate.Projection) error

ProjectReleasePublicationState applies only to the event author's source. Sequence ordering makes replay and out-of-order sync deterministic.

func (*Store) ProjectTombstone added in v0.9.0

func (s *Store) ProjectTombstone(ctx context.Context, projection TombstoneProjection) error

func (*Store) ProjectTrustAttestation added in v0.9.0

func (s *Store) ProjectTrustAttestation(ctx context.Context, projection TrustAttestationProjection) error

func (*Store) ProjectValidatorCapacity added in v0.9.0

func (s *Store) ProjectValidatorCapacity(ctx context.Context, projection ValidatorCapacityProjection) error

func (*Store) PromoteBaseStemCandidatesForReleaseFamily added in v0.7.3

func (s *Store) PromoteBaseStemCandidatesForReleaseFamily(ctx context.Context, providerID, newsgroupID int64, releaseFamilyKey string) error

func (*Store) ProvisionSourceWorkPartitions added in v0.8.0

func (s *Store) ProvisionSourceWorkPartitions(ctx context.Context, _ int, daysAhead int) error

func (*Store) PublishUploaderSubmission added in v0.10.0

func (s *Store) PublishUploaderSubmission(ctx context.Context, submission uploader.Submission) error

PublishUploaderSubmission projects one approved completed-NZB submission into the terminal release catalog. It deliberately does not create scrape, binary, inspection, or release-formation records.

func (*Store) PurgeArchivedReleaseSources added in v0.8.0

func (s *Store) PurgeArchivedReleaseSources(ctx context.Context, releaseID string) (*ReleasePurgeResult, error)

PurgeArchivedReleaseSources performs terminal cleanup after archive durability and durable catalog retention are already satisfied. Delete order is intentional: 1. validate purge contract and lock archive state 2. delete shared-safe binary lineage by binary owner tables first via binary FK cascade root 3. delete release-scoped transitional bridge/runtime rows 4. delete article payload/header rows that are no longer referenced by any remaining binary parts 5. delete release archive lineage tracking rows 6. mark the release archive state as purged

func (*Store) PurgeArticleHeaderPayloads added in v0.8.0

func (s *Store) PurgeArticleHeaderPayloads(ctx context.Context) (int64, error)

func (*Store) RecomputeFederatedScores added in v0.9.0

func (s *Store) RecomputeFederatedScores(ctx context.Context, poolID string) (FederatedScoreRecomputeResult, error)

func (*Store) ReconcileSourceBucketOutcomes added in v0.9.0

func (s *Store) ReconcileSourceBucketOutcomes(ctx context.Context, batchSize int, policy SourceBucketOutcomePolicy) (*MaintenanceTaskResult, error)

ReconcileSourceBucketOutcomes refreshes durable per-provider/group/day outcome state. It never deletes source data.

func (*Store) ReconcileUploaderSubmissions added in v0.10.0

func (s *Store) ReconcileUploaderSubmissions(ctx context.Context, submissions []uploader.Submission) error

ReconcileUploaderSubmissions republishes all approved submissions and then removes projections that no longer have an approved authoritative row.

func (*Store) RecordBinaryEvidenceDiagnostic added in v0.9.0

func (s *Store) RecordBinaryEvidenceDiagnostic(ctx context.Context, item BinaryEvidenceDiagnostic) error

func (*Store) RecordFederatedManifestSourceFailure added in v0.9.0

func (s *Store) RecordFederatedManifestSourceFailure(ctx context.Context, source FederatedManifestSource) error

func (*Store) RecordFederatedManifestSourceSuccess added in v0.9.0

func (s *Store) RecordFederatedManifestSourceSuccess(ctx context.Context, source FederatedManifestSource) error

func (*Store) RecordFederationEndpointResultByLocator added in v0.10.0

func (s *Store) RecordFederationEndpointResultByLocator(ctx context.Context, locator string, success bool, rttMS, bytesSent, bytesReceived int64, errText string) error

func (*Store) RecordFederationNodeEndpointResult added in v0.10.0

func (s *Store) RecordFederationNodeEndpointResult(ctx context.Context, nodeID, locator string, success bool, pathType, iceState string, rttMS, reconnects, bytesSent, bytesReceived int64, errText string) error

func (*Store) RecordFederationPeerDelivery added in v0.9.0

func (s *Store) RecordFederationPeerDelivery(ctx context.Context, result FederationDeliveryResult) error

func (*Store) RecordFederationProjectionFailure added in v0.9.0

func (s *Store) RecordFederationProjectionFailure(ctx context.Context, eventID, eventType, projectionKind string, cause error) error

func (*Store) RecordYEncRecoveryNoop added in v0.8.0

func (s *Store) RecordYEncRecoveryNoop(ctx context.Context, articleHeaderID int64) error

func (*Store) RecordYEncRecoveryNoopBatch added in v0.8.0

func (s *Store) RecordYEncRecoveryNoopBatch(ctx context.Context, articleHeaderIDs []int64) error

func (*Store) RecordYEncRecoveryNotFound added in v0.7.2

func (s *Store) RecordYEncRecoveryNotFound(ctx context.Context, articleHeaderID int64) error

func (*Store) RecordYEncRecoveryNotFoundBatch added in v0.8.0

func (s *Store) RecordYEncRecoveryNotFoundBatch(ctx context.Context, articleHeaderIDs []int64) error

func (*Store) RecordYEncRecoveryTransientFailure added in v0.8.0

func (s *Store) RecordYEncRecoveryTransientFailure(ctx context.Context, articleHeaderID int64) error

func (*Store) RecordYEncRecoveryTransientFailureBatch added in v0.8.0

func (s *Store) RecordYEncRecoveryTransientFailureBatch(ctx context.Context, articleHeaderIDs []int64) error

func (*Store) RefreshBinaryExchangeIdentities added in v0.9.0

func (s *Store) RefreshBinaryExchangeIdentities(ctx context.Context, limit int) (int, error)

func (*Store) RefreshBinaryStats

func (s *Store) RefreshBinaryStats(ctx context.Context, binaryID int64) error

CHANGED: recompute binary aggregate stats after parts were inserted.

func (*Store) RefreshBinaryStatsBatch added in v0.7.1

func (s *Store) RefreshBinaryStatsBatch(ctx context.Context, binaryIDs []int64) error

func (*Store) RefreshBinaryStatsForPeerEvidence added in v0.9.0

func (s *Store) RefreshBinaryStatsForPeerEvidence(ctx context.Context, binaryID int64) error

func (*Store) RefreshCrosspostPopularity added in v0.8.0

func (s *Store) RefreshCrosspostPopularity(ctx context.Context, limit int) (*IndexerCrosspostPopularityRefreshResult, error)

func (*Store) RefreshIndexerDailyBucketStats added in v0.8.0

func (s *Store) RefreshIndexerDailyBucketStats(ctx context.Context, days int) (int64, error)

func (*Store) RefreshIndexerDashboardStats added in v0.7.2

func (s *Store) RefreshIndexerDashboardStats(ctx context.Context) (*IndexerDashboardStats, error)

func (*Store) RefreshIndexerGroupProfiles added in v0.8.0

func (s *Store) RefreshIndexerGroupProfiles(ctx context.Context) (int64, error)

func (*Store) RefreshInspectDiscoveryReadyQueue added in v0.8.0

func (s *Store) RefreshInspectDiscoveryReadyQueue(ctx context.Context, limit int) (*BinaryInspectionReadyQueueRefreshResult, error)

func (*Store) RefreshInspectionReadyQueue added in v0.8.0

func (s *Store) RefreshInspectionReadyQueue(ctx context.Context, stageName string, limit int) (*BinaryInspectionReadyQueueRefreshResult, error)

func (*Store) RefreshQueuedReleaseFamilySummaries added in v0.8.0

func (s *Store) RefreshQueuedReleaseFamilySummaries(ctx context.Context, limit int) (int, error)

func (*Store) RefreshQueuedReleaseFamilySummariesWithMetrics added in v0.8.0

func (s *Store) RefreshQueuedReleaseFamilySummariesWithMetrics(ctx context.Context, limit int) (ReleaseSummaryRefreshMetrics, error)

func (*Store) RefreshReleaseArchiveDetailSnapshot added in v0.8.0

func (s *Store) RefreshReleaseArchiveDetailSnapshot(ctx context.Context, releaseID string) error

func (*Store) RefreshYEncRecoveryAdmissionSnapshot added in v0.8.0

func (s *Store) RefreshYEncRecoveryAdmissionSnapshot(ctx context.Context) (*YEncRecoveryAdmissionSnapshot, error)

func (*Store) RefundBodyRequestBudget added in v0.9.0

func (s *Store) RefundBodyRequestBudget(ctx context.Context, budgetKey string, requests int) error

func (*Store) RegisterFederationHandshake added in v0.9.0

func (s *Store) RegisterFederationHandshake(ctx context.Context, node FederationNodeRecord, nonce string, expiresAt time.Time) (bool, error)

RegisterFederationHandshake records a verified identity and consumes its nonce atomically. A replay or persistence failure leaves neither half of the handshake committed.

func (*Store) RegroupCrossGroupSubjectMultipartBinaries added in v0.9.0

func (s *Store) RegroupCrossGroupSubjectMultipartBinaries(ctx context.Context, req CrossGroupSubjectMultipartRegroupRequest) (*CrossGroupSubjectMultipartRegroupResult, error)

RegroupCrossGroupSubjectMultipartBinaries combines a strongly identified multipart file whose segments were distributed across multiple newsgroups. It deliberately excludes weak identities, published binaries, old matches, and sets that do not gain any unique part numbers by being combined.

func (*Store) RegroupSubjectMultipartBinaries added in v0.8.0

func (s *Store) RegroupSubjectMultipartBinaries(ctx context.Context, limit int) (*SubjectMultipartRegroupResult, error)

RegroupSubjectMultipartBinaries repairs binaries that were previously split by contextual fallback even though the NNTP Subject carried complete file and part counters. It is intentionally conservative and only touches binary-owned projection tables.

func (*Store) ReindexCriticalIndexerIndexes added in v0.8.0

func (s *Store) ReindexCriticalIndexerIndexes(ctx context.Context) (*IndexerIntegrityRepairResult, error)

func (*Store) ReopenArchivedReleaseForRegeneration added in v0.8.0

func (s *Store) ReopenArchivedReleaseForRegeneration(ctx context.Context, releaseID string) error

func (*Store) RepairIndexerStageRuntime added in v0.7.0

func (s *Store) RepairIndexerStageRuntime(ctx context.Context) (*IndexerStageRepairResult, error)

func (*Store) RepairStaleBinaryObservationStats added in v0.8.0

func (s *Store) RepairStaleBinaryObservationStats(ctx context.Context, limit int) (int64, error)

func (*Store) ReplaceBinaryArchiveEntries added in v0.7.0

func (s *Store) ReplaceBinaryArchiveEntries(ctx context.Context, binaryID int64, rows []BinaryArchiveEntryRecord) error

func (*Store) ReplaceBinaryInspectionArtifacts added in v0.7.0

func (s *Store) ReplaceBinaryInspectionArtifacts(ctx context.Context, stageName string, binaryID int64, rows []BinaryInspectionArtifactRecord) error

func (*Store) ReplaceBinaryMediaStreams added in v0.7.0

func (s *Store) ReplaceBinaryMediaStreams(ctx context.Context, binaryID int64, rows []BinaryMediaStreamRecord) error

func (*Store) ReplaceBinaryPAR2Sets added in v0.7.0

func (s *Store) ReplaceBinaryPAR2Sets(ctx context.Context, binaryID int64, rows []BinaryPAR2SetRecord) error

func (*Store) ReplaceBinaryPAR2Targets added in v0.7.3

func (s *Store) ReplaceBinaryPAR2Targets(ctx context.Context, binaryID int64, rows []BinaryPAR2TargetRecord) error

func (*Store) ReplaceBinaryTextEvidence added in v0.7.0

func (s *Store) ReplaceBinaryTextEvidence(ctx context.Context, stageName string, binaryID int64, rows []BinaryTextEvidenceRecord) error

func (*Store) ReplaceIndexerProviderGroupInventory added in v0.8.0

func (s *Store) ReplaceIndexerProviderGroupInventory(ctx context.Context, rows []IndexerProviderGroupInventoryItem) error

func (*Store) ReplaceReleaseFiles

func (s *Store) ReplaceReleaseFiles(ctx context.Context, releaseID string, files []ReleaseFileRecord) error

CHANGED: replace release_files atomically for one release.

func (*Store) ReplaceReleaseNewsgroups

func (s *Store) ReplaceReleaseNewsgroups(ctx context.Context, releaseID string, newsgroupIDs []int64) error

CHANGED: replace release_newsgroups atomically for one release.

func (*Store) ReplaceReleasePredbMatches added in v0.7.0

func (s *Store) ReplaceReleasePredbMatches(ctx context.Context, releaseID string, rows []ReleasePredbMatchRecord) error

func (*Store) ReplaceReleaseTMDBMatches added in v0.7.0

func (s *Store) ReplaceReleaseTMDBMatches(ctx context.Context, releaseID string, rows []ReleaseTMDBMatchRecord) error

func (*Store) ReplaceReleaseTVDBMatches added in v0.7.0

func (s *Store) ReplaceReleaseTVDBMatches(ctx context.Context, releaseID string, rows []ReleaseTVDBMatchRecord) error

func (*Store) ReserveBodyRequestBudget added in v0.9.0

func (s *Store) ReserveBodyRequestBudget(ctx context.Context, budgetKey string, limit int64, requested int) (BodyRequestBudgetSnapshot, int, error)

func (*Store) ResetReleaseEnrichmentState added in v0.7.0

func (s *Store) ResetReleaseEnrichmentState(ctx context.Context, releaseID string) error

func (*Store) ResetReleaseInspectionState added in v0.7.0

func (s *Store) ResetReleaseInspectionState(ctx context.Context, releaseID string) error

func (*Store) ResolveBinaryExchangeIdentity added in v0.9.0

func (s *Store) ResolveBinaryExchangeIdentity(ctx context.Context, scheme, matchID string, anchors []string) (int64, error)

func (*Store) ResolveFederationNodeEndpoint added in v0.10.0

func (s *Store) ResolveFederationNodeEndpoint(ctx context.Context, nodeID string) (*FederationNodeEndpoint, error)

func (*Store) ResolveFederationProjection added in v0.9.0

func (s *Store) ResolveFederationProjection(ctx context.Context, eventID string) error

func (*Store) ResolveScrapeTimeframeProgress added in v0.9.0

func (s *Store) ResolveScrapeTimeframeProgress(ctx context.Context, timeframeID string, providerID, newsgroupID, articleLow, articleHigh int64, empty bool) error

func (*Store) ResumeIndexerStage added in v0.7.0

func (s *Store) ResumeIndexerStage(ctx context.Context, stageName string) error

func (*Store) RevokePoolMember added in v0.9.0

func (s *Store) RevokePoolMember(ctx context.Context, poolID, nodeID, eventID string, effectiveAt *time.Time) error

func (*Store) RunArticleCohortScheduler added in v0.8.0

func (s *Store) RunArticleCohortScheduler(ctx context.Context, req ArticleCohortSchedulerRequest) (*ArticleCohortSchedulerResult, error)

func (*Store) RunIndexerMaintenance added in v0.7.0

func (s *Store) RunIndexerMaintenance(ctx context.Context) (*IndexerMaintenanceResult, error)

func (*Store) RunIndexerStorageReclaim added in v0.7.3

func (s *Store) RunIndexerStorageReclaim(ctx context.Context, options IndexerStorageReclaimOptions) (*IndexerStorageReclaimResult, error)

func (*Store) RunMigrations

func (s *Store) RunMigrations() error

func (*Store) RunPartitionDefaultRehomeTask added in v0.8.0

func (s *Store) RunPartitionDefaultRehomeTask(ctx context.Context, batchSize int) (*MaintenanceTaskResult, error)

func (*Store) RunPartitionRetentionTask added in v0.8.0

func (s *Store) RunPartitionRetentionTask(ctx context.Context, batchSize int) (*MaintenanceTaskResult, error)

func (*Store) RunRawStageRetentionTask added in v0.8.0

func (s *Store) RunRawStageRetentionTask(ctx context.Context, batchSize int, policy RawStageRetentionPolicy) (*MaintenanceTaskResult, error)

func (*Store) RunReleaseSourcePurge added in v0.8.0

func (s *Store) RunReleaseSourcePurge(ctx context.Context, limit int, policy ReleaseReadyPolicy) (*MaintenanceTaskResult, error)

func (*Store) RunSimpleMaintenanceTask added in v0.8.0

func (s *Store) RunSimpleMaintenanceTask(ctx context.Context, taskKey string, batchSize int) (*MaintenanceTaskResult, error)

func (*Store) SchemaVersion

func (s *Store) SchemaVersion(ctx context.Context) (int, error)

func (*Store) SearchCatalogReleases

func (s *Store) SearchCatalogReleases(ctx context.Context, query string, limit int) ([]*domain.Release, error)

CHANGED: PG release catalog search for later aggregator/resolver integration.

func (*Store) SearchFederatedReleaseCards added in v0.9.0

func (s *Store) SearchFederatedReleaseCards(ctx context.Context, params FederatedReleaseCardSearchParams) ([]FederatedReleaseCardSummary, error)

func (*Store) SeedBinaryEvidenceRepairWork added in v0.9.0

func (s *Store) SeedBinaryEvidenceRepairWork(ctx context.Context, limit int) (int, error)

func (*Store) SetBackfillCheckpointState added in v0.7.0

func (s *Store) SetBackfillCheckpointState(ctx context.Context, providerID, newsgroupID int64, untilDate *time.Time, cutoffReached bool, stoppedReason string) error

func (*Store) SetFederationNodeStatus added in v0.9.0

func (s *Store) SetFederationNodeStatus(ctx context.Context, nodeID, status string) (bool, error)

func (*Store) SetFederationPeerEnabled added in v0.9.0

func (s *Store) SetFederationPeerEnabled(ctx context.Context, peerID int64, enabled bool) error

func (*Store) SetGoNZBNetEndpointPolicy added in v0.10.0

func (s *Store) SetGoNZBNetEndpointPolicy(preferDirect, traversalEnabled bool, coordinatorHosts []string)

func (*Store) SetGoNZBNetManifestCachePolicy added in v0.9.0

func (s *Store) SetGoNZBNetManifestCachePolicy(maxBytes int64, ttlDays int)

SetGoNZBNetManifestCachePolicy applies the runtime limits used by the federation manifest cache. A non-positive value disables that constraint.

func (*Store) SetReleaseArchivePreview added in v0.8.0

func (s *Store) SetReleaseArchivePreview(ctx context.Context, releaseID, objectKey, contentType, sourceKind string) error

func (*Store) StartBinaryInspection added in v0.7.0

func (s *Store) StartBinaryInspection(ctx context.Context, stageName string, binaryID int64, releaseID string, sourceUpdatedAt *time.Time) error

func (*Store) StartScrapeRun

func (s *Store) StartScrapeRun(ctx context.Context, providerID int64) (int64, error)

StartScrapeRun creates a running scrape_run row.

func (*Store) StoreFederationApprovalFragment added in v0.9.0

func (s *Store) StoreFederationApprovalFragment(ctx context.Context, fragment admission.ApprovalFragment) error

func (*Store) StoreFederationNonce added in v0.9.0

func (s *Store) StoreFederationNonce(ctx context.Context, nodeID, nonce string, expiresAt time.Time) (bool, error)

func (*Store) StoreResolutionManifest added in v0.9.0

func (s *Store) StoreResolutionManifest(ctx context.Context, record ResolutionManifestRecord) error

func (*Store) SuggestCoverageWork added in v0.9.0

func (s *Store) SuggestCoverageWork(ctx context.Context, params CoverageWorkSuggestionParams) ([]CoverageWorkSuggestion, error)

func (*Store) UpdateReleasePasswordCandidateStatus added in v0.7.0

func (s *Store) UpdateReleasePasswordCandidateStatus(ctx context.Context, candidateID int64, status string, verifiedAt *time.Time, lastError string) error

func (*Store) UpdateTrustPoolCheckpoint added in v0.9.0

func (s *Store) UpdateTrustPoolCheckpoint(ctx context.Context, poolID, eventID, merkleRoot string) error

func (*Store) UpsertBackfillCheckpoint

func (s *Store) UpsertBackfillCheckpoint(ctx context.Context, providerID, newsgroupID, backfillArticleNumber int64) error

persist backward/historical scrape cursor independently of latest cursor.

func (*Store) UpsertBinaries added in v0.8.0

func (s *Store) UpsertBinaries(ctx context.Context, records []BinaryRecord) ([]int64, error)

func (*Store) UpsertBinary

func (s *Store) UpsertBinary(ctx context.Context, in BinaryRecord) (int64, error)

CHANGED: create/update a binary grouping row.

func (*Store) UpsertBinaryPart

func (s *Store) UpsertBinaryPart(ctx context.Context, in BinaryPartRecord) error

CHANGED: add/update one binary part row.

func (*Store) UpsertBinaryParts added in v0.7.1

func (s *Store) UpsertBinaryParts(ctx context.Context, records []BinaryPartRecord) error

UpsertBinaryParts adds or updates binary parts in one transaction and deletes completed rows from the assemble-owned queue.

func (*Store) UpsertCheckpoint

func (s *Store) UpsertCheckpoint(ctx context.Context, providerID, newsgroupID, lastArticleNumber int64) error

UpsertCheckpoint stores/advances checkpoint for provider+group.

func (*Store) UpsertDeferredArticleRange added in v0.8.0

func (s *Store) UpsertDeferredArticleRange(ctx context.Context, in DeferredArticleRangeRecord) error

func (*Store) UpsertFederatedReleaseCardProjection added in v0.9.0

func (s *Store) UpsertFederatedReleaseCardProjection(ctx context.Context, projection releasecard.Projection) error

func (*Store) UpsertFederationActivityRollups added in v0.9.0

func (s *Store) UpsertFederationActivityRollups(ctx context.Context, items []activity.Rollup) error

func (*Store) UpsertFederationAdmission added in v0.9.0

func (s *Store) UpsertFederationAdmission(ctx context.Context, record FederationAdmissionRecord) error

func (*Store) UpsertFederationNode added in v0.9.0

func (s *Store) UpsertFederationNode(ctx context.Context, node FederationNodeRecord) error

func (*Store) UpsertFederationNodeEndpoint added in v0.10.0

func (s *Store) UpsertFederationNodeEndpoint(ctx context.Context, endpoint FederationNodeEndpoint) error

func (*Store) UpsertFederationNodeIdentity added in v0.9.0

func (s *Store) UpsertFederationNodeIdentity(ctx context.Context, nodeID string, publicKey ed25519.PublicKey) error

func (*Store) UpsertFederationPeerURL added in v0.9.0

func (s *Store) UpsertFederationPeerURL(ctx context.Context, peerURL string) (int64, error)

func (*Store) UpsertFederationRolePoolAccess added in v0.9.0

func (s *Store) UpsertFederationRolePoolAccess(ctx context.Context, record FederationRolePoolAccessRecord) error

func (*Store) UpsertGoNZBNetScanOutput added in v0.9.0

func (s *Store) UpsertGoNZBNetScanOutput(ctx context.Context, release releasecard.LocalRelease) error

func (*Store) UpsertIndexerGroupProfile added in v0.8.0

func (s *Store) UpsertIndexerGroupProfile(ctx context.Context, providerID, newsgroupID int64, tier, reason string) error

func (*Store) UpsertLatestCheckpoint

func (s *Store) UpsertLatestCheckpoint(ctx context.Context, providerID, newsgroupID, lastArticleNumber int64) error

explicit latest/forward checkpoint upsert for Milestone 8.5.

func (*Store) UpsertNNTPSnapshot added in v0.8.0

func (s *Store) UpsertNNTPSnapshot(ctx context.Context, publisherID, moduleName, scope string, payload []byte) error

func (*Store) UpsertNZBCache

func (s *Store) UpsertNZBCache(ctx context.Context, releaseID, generationStatus, hashSHA256, lastError string) error

CHANGED: seed/update PG nzb cache metadata row for a release.

func (*Store) UpsertPoolMember added in v0.9.0

func (s *Store) UpsertPoolMember(ctx context.Context, member PoolMemberRecord) error

func (*Store) UpsertPredbBackfillCheckpoint added in v0.7.0

func (s *Store) UpsertPredbBackfillCheckpoint(ctx context.Context, in PredbBackfillCheckpoint) error

func (*Store) UpsertPredbEntries added in v0.7.0

func (s *Store) UpsertPredbEntries(ctx context.Context, rows []PredbEntryRecord) error

func (*Store) UpsertRelease

func (s *Store) UpsertRelease(ctx context.Context, in ReleaseRecord) (string, error)

CHANGED: create/update a release row and keep its id stable.

func (*Store) UpsertReleaseOverride added in v0.7.0

func (s *Store) UpsertReleaseOverride(ctx context.Context, in ReleaseOverrideRecord) error

func (*Store) UpsertReleasePasswordCandidate added in v0.7.0

func (s *Store) UpsertReleasePasswordCandidate(ctx context.Context, in ReleasePasswordCandidateRecord) (int64, error)

func (*Store) UpsertTrustPool added in v0.9.0

func (s *Store) UpsertTrustPool(ctx context.Context, pool TrustPoolRecord) error

func (*Store) UpsertYEncHeaderEvidence added in v0.9.0

func (s *Store) UpsertYEncHeaderEvidence(ctx context.Context, records []YEncEvidenceRecord) (int, int, error)

func (*Store) ValidateFederationPoolControlEvent added in v0.9.0

func (s *Store) ValidateFederationPoolControlEvent(ctx context.Context, event *events.SignedEvent) error

func (*Store) ValidateSchema

func (s *Store) ValidateSchema(ctx context.Context) error

func (*Store) WithdrawUploaderSubmission added in v0.10.0

func (s *Store) WithdrawUploaderSubmission(ctx context.Context, releaseID string) error

WithdrawUploaderSubmission removes only the terminal uploader projection. The authoritative uploader submission and its audit history remain intact.

type SubjectMultipartRegroupResult added in v0.8.0

type SubjectMultipartRegroupResult struct {
	Groups                int64 `json:"groups"`
	TargetBinaries        int64 `json:"target_binaries"`
	SourceBinaries        int64 `json:"source_binaries"`
	PartsMoved            int64 `json:"parts_moved"`
	DuplicatePartsDeleted int64 `json:"duplicate_parts_deleted"`
}

type TombstoneProjection added in v0.9.0

type TombstoneProjection struct {
	Tombstone    moderation.Tombstone
	EventID      string
	AuthorNodeID string
}

type TombstoneRecord added in v0.9.0

type TombstoneRecord struct {
	ID                int64      `json:"id"`
	TargetType        string     `json:"target_type"`
	TargetID          string     `json:"target_id"`
	PoolID            string     `json:"pool_id,omitempty"`
	Reason            string     `json:"reason"`
	Severity          string     `json:"severity"`
	SourceEventID     string     `json:"source_event_id"`
	Active            bool       `json:"active"`
	ApprovalCount     int        `json:"approval_count"`
	ApprovalsRequired int        `json:"approvals_required"`
	EffectiveAt       time.Time  `json:"effective_at"`
	ExpiresAt         *time.Time `json:"expires_at,omitempty"`
	CreatedAt         time.Time  `json:"created_at"`
	UpdatedAt         time.Time  `json:"updated_at"`
}

type TrustAttestationProjection added in v0.9.0

type TrustAttestationProjection struct {
	Attestation  trust.Attestation
	EventID      string
	AuthorNodeID string
	PoolID       string
}

type TrustPoolRecord added in v0.9.0

type TrustPoolRecord struct {
	PoolID                     string          `json:"pool_id"`
	DisplayName                string          `json:"display_name"`
	Description                string          `json:"description"`
	GenesisEventID             string          `json:"genesis_event_id"`
	PolicyJSON                 json.RawMessage `json:"policy_json"`
	MembershipThreshold        int             `json:"membership_threshold"`
	ModerationThreshold        int             `json:"moderation_threshold"`
	CheckpointWitnessThreshold int             `json:"checkpoint_witness_threshold"`
	AcceptMode                 string          `json:"accept_mode"`
	MinNodeTrustScore          float64         `json:"min_node_trust_score"`
	AcceptedEventTypes         []string        `json:"accepted_event_types"`
	Enabled                    bool            `json:"enabled"`
	Visibility                 string          `json:"visibility"`
	JoinMode                   string          `json:"join_mode"`
	AdmissionEnabled           bool            `json:"admission_enabled"`
	CreatedAt                  time.Time       `json:"created_at"`
	UpdatedAt                  time.Time       `json:"updated_at"`
}

type ValidationGap added in v0.9.0

type ValidationGap struct {
	ReleaseID                  string     `json:"release_id"`
	ManifestID                 string     `json:"manifest_id"`
	PoolID                     string     `json:"pool_id"`
	SourceNodeID               string     `json:"source_node_id"`
	LastValidationTaskAt       *time.Time `json:"last_validation_task_at,omitempty"`
	ValidationAttestationCount int        `json:"validation_attestation_count"`
}

type ValidationTask added in v0.9.0

type ValidationTask struct {
	TaskID        int64
	ManifestID    string
	ReleaseID     string
	SourceNodeID  string
	SourceEventID string
	PoolID        string
	Attempts      int
}

type ValidationTaskDiagnostic added in v0.9.0

type ValidationTaskDiagnostic struct {
	TaskID          int64      `json:"task_id"`
	ManifestID      string     `json:"manifest_id"`
	ReleaseID       string     `json:"release_id"`
	SourceNodeID    string     `json:"source_node_id"`
	SourceEventID   string     `json:"source_event_id"`
	PoolID          string     `json:"pool_id"`
	Status          string     `json:"status"`
	Priority        int        `json:"priority"`
	Attempts        int        `json:"attempts"`
	LastError       string     `json:"last_error"`
	ClaimedByNodeID string     `json:"claimed_by_node_id"`
	ClaimedAt       *time.Time `json:"claimed_at,omitempty"`
	DueAt           time.Time  `json:"due_at"`
	CompletedAt     *time.Time `json:"completed_at,omitempty"`
	CreatedAt       time.Time  `json:"created_at"`
	UpdatedAt       time.Time  `json:"updated_at"`
}

type ValidationTaskRequest added in v0.9.0

type ValidationTaskRequest struct {
	ManifestID    string
	ReleaseID     string
	PoolID        string
	SourceNodeID  string
	SourceEventID string
	Priority      int
	DueAt         *time.Time
}

type ValidatorCapacityProjection added in v0.9.0

type ValidatorCapacityProjection struct {
	Capacity     validation.ValidatorCapacity
	EventID      string
	AuthorNodeID string
}

type YEncEvidenceRecord added in v0.9.0

type YEncEvidenceRecord struct {
	SourcePostedAt  time.Time
	MessageID       string
	FileName        string
	PartNumber      int
	TotalParts      int
	FileSize        int64
	PartBegin       int64
	PartEnd         int64
	Provenance      string
	SourcePoolID    string
	SourceNodeID    string
	SourceBundleID  string
	AcceptanceState string
}

type YEncHeaderRecoveryRecord added in v0.7.3

type YEncHeaderRecoveryRecord struct {
	BinaryID          int64
	ArticleHeaderID   int64
	SourceReleaseKey  string
	ReleaseFamilyKey  string
	FileSetKey        string
	FileFamilyKey     string
	IdentityStrength  string
	IdentityReason    string
	SubjectSetToken   string
	SubjectSetKind    string
	FamilyKind        string
	BaseStem          string
	IsAuxiliary       bool
	IsMainPayload     bool
	ReleaseKey        string
	ReleaseName       string
	BinaryKey         string
	BinaryName        string
	FileName          string
	FileIndex         int
	ExpectedFileCount int
	PartNumber        int
	TotalParts        int
	FileSize          int64
	MatchConfidence   float64
	MatchStatus       string
	GroupingEvidence  map[string]any
}

type YEncHeaderRecoveryResult added in v0.7.3

type YEncHeaderRecoveryResult struct {
	BinaryID       int64
	TargetBinaryID int64
	Merged         bool
}

type YEncRecoveryAdmissionConfig added in v0.8.0

type YEncRecoveryAdmissionConfig struct {
	RecoveryProfile               string
	SoftQueueHours                int
	HardQueueMultiplier           int
	AbsoluteHardQueueCap          int64
	BootstrapProbesPerHour        float64
	EWMAWindowMinutes             int
	Priority0OverflowCap          int64
	Priority0ReservoirBatches     int
	NearTimeCohortBucketMinutes   int
	LatestReservePercent          int
	BalancedBodyRequestsPerHour   int64
	ExhaustiveBodyRequestsPerHour int64
	DiscoveryBodyRequestsPerHour  int64
}

type YEncRecoveryAdmissionSnapshot added in v0.8.0

type YEncRecoveryAdmissionSnapshot struct {
	RecoveryProfile     string     `json:"recovery_profile"`
	ProbesPerHourEWMA   float64    `json:"probes_per_hour_ewma"`
	SoftCap             int64      `json:"soft_cap"`
	HardCap             int64      `json:"hard_cap"`
	OpenReady           int64      `json:"open_ready"`
	OpenRunning         int64      `json:"open_running"`
	OpenTotal           int64      `json:"open_total"`
	RemainingToHard     int64      `json:"remaining_to_hard"`
	OldestReadyAt       *time.Time `json:"oldest_ready_at,omitempty"`
	NewestReadyAt       *time.Time `json:"newest_ready_at,omitempty"`
	CalculatedAt        time.Time  `json:"calculated_at"`
	BodyBudgetKey       string     `json:"body_budget_key"`
	BodyRequestsPerHour int64      `json:"body_requests_per_hour"`
	BodyRequestsUsed    int64      `json:"body_requests_used"`
	BodyRequestsRemain  int64      `json:"body_requests_remaining"`
	BodyBudgetStartedAt *time.Time `json:"body_budget_started_at,omitempty"`
}

type YEncRecoveryApplyStats added in v0.8.0

type YEncRecoveryApplyStats struct {
	Records                     int
	Results                     int
	Merged                      int
	InternalBatches             int
	NormalizeDuration           time.Duration
	TotalDuration               time.Duration
	BeginDuration               time.Duration
	StageDuration               time.Duration
	OrderDuration               time.Duration
	IdentityLockDuration        time.Duration
	MutationDuration            time.Duration
	SeedLoadDuration            time.Duration
	TargetFindDuration          time.Duration
	PairLockDuration            time.Duration
	TargetUpdateDuration        time.Duration
	TargetUpdateSkipped         int
	PartsMergeDuration          time.Duration
	ReleaseFilesMergeDuration   time.Duration
	SourceDeleteDuration        time.Duration
	SourceSupersedeDuration     time.Duration
	IngestPayloadUpdateDuration time.Duration
	WorkItemDoneUpdateDuration  time.Duration
	StatsRefreshDuration        time.Duration
	SummaryDirtyDuration        time.Duration
	CommitDuration              time.Duration
}

type YEncRecoveryCandidate added in v0.7.3

type YEncRecoveryCandidate struct {
	BinaryID                        int64
	ArticleHeaderID                 int64
	ProviderID                      int64
	NewsgroupID                     int64
	NewsgroupName                   string
	ArticleNumber                   int64
	MessageID                       string
	Subject                         string
	Poster                          string
	DateUTC                         *time.Time
	Bytes                           int64
	Lines                           int
	Xref                            string
	FileName                        string
	FileIndex                       int
	FileTotal                       int
	YEncPart                        int
	YEncTotal                       int
	YEncFileSize                    int64
	RawOverview                     map[string]any
	YEncRecoveryMissingCount        int
	YEncRecoveryRetryAfter          *time.Time
	CurrentBinaryKey                string
	CurrentReleaseFamilyKey         string
	CurrentBaseStem                 string
	CurrentReadinessBucket          string
	StructuredIdentityBinaryMatched bool
	PriorityRank                    int
	AdmissionReason                 string
	GroupTier                       string
	RecoveryLane                    string
	FairnessBucketStart             *time.Time
	FairnessBucketEnd               *time.Time
}

func (YEncRecoveryCandidate) CloneRawOverview added in v0.7.3

func (c YEncRecoveryCandidate) CloneRawOverview() map[string]any

func (YEncRecoveryCandidate) FetchGroups added in v0.7.3

func (c YEncRecoveryCandidate) FetchGroups() []string

type YEncRecoverySelectionOptions added in v0.8.0

type YEncRecoverySelectionOptions struct {
	TargetWindowStart   *time.Time
	TargetWindowEnd     *time.Time
	TargetWindowPercent int
	NewestPercent       int
	Priority0Only       bool
	DisableGenericSeed  bool
	BodyBudgetKey       string
	BodyRequestsPerHour int64
}

func (YEncRecoverySelectionOptions) HasTargetWindow added in v0.8.0

func (o YEncRecoverySelectionOptions) HasTargetWindow() bool

func (YEncRecoverySelectionOptions) HasValidSplit added in v0.8.0

func (o YEncRecoverySelectionOptions) HasValidSplit() bool

type YEncRecoverySelectionStats added in v0.8.0

type YEncRecoverySelectionStats struct {
	BatchRequested    int
	BatchSelected     int
	ReadyCount        int
	Priority0Ready    int
	PrioritySeedLimit int
	PrioritySeeded    int64
	PriorityRetired   int64
	GenericSeedLimit  int
	GenericSeeded     int64
	GenericRetired    int64
	SeedDuration      time.Duration
	WindowedRequested int
	NewestRequested   int
	SelectedWindowed  int
	SelectedNewest    int
	BucketsScanned    int
	EmptyBuckets      int
	BodyBudgetLimit   int64
	BodyBudgetUsed    int64
	BodyBudgetRemain  int64
}

Source Files

Jump to

Keyboard shortcuts

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