Documentation
¶
Index ¶
- type BackupWorker
- type MetadataReader
- func (mr *MetadataReader) GetDirectoryInfo(virtualPath string) (fs.FileInfo, error)
- func (mr *MetadataReader) GetFileMetadata(virtualPath string) (*metapb.FileMetadata, error)
- func (mr *MetadataReader) GetFileSegments(virtualPath string) ([]*metapb.SegmentData, error)
- func (mr *MetadataReader) GetMetadataService() *MetadataService
- func (mr *MetadataReader) IsDirectory(virtualPath string) (bool, error)
- func (mr *MetadataReader) ListDirectoryContents(virtualPath string) ([]fs.FileInfo, []*metapb.FileMetadata, error)
- func (mr *MetadataReader) PathExists(virtualPath string) (bool, error)
- type MetadataService
- func (ms *MetadataService) CalculateSegmentSize(segments []*metapb.SegmentData) int64
- func (ms *MetadataService) CleanupEmptyDirectories(virtualPath string, protected []string) error
- func (ms *MetadataService) CleanupOrphanedIDSymlinks(ctx context.Context) (int, error)
- func (ms *MetadataService) CreateDirectory(name string) error
- func (ms *MetadataService) CreateDirectoryAll(name string) error
- func (ms *MetadataService) CreateFileMetadata(fileSize int64, sourceNzbPath string, status metapb.FileStatus, ...) *metapb.FileMetadata
- func (ms *MetadataService) CreateSegmentData(startOffset, endOffset int64, messageID string) *metapb.SegmentData
- func (ms *MetadataService) DeleteDirectory(virtualPath string) error
- func (ms *MetadataService) DeleteFileMetadata(virtualPath string) error
- func (ms *MetadataService) DeleteFileMetadataWithSourceNzb(ctx context.Context, virtualPath string, deleteSourceNzb bool) error
- func (ms *MetadataService) DirectoryExists(virtualPath string) bool
- func (ms *MetadataService) FileExists(virtualPath string) bool
- func (ms *MetadataService) GetMetadataDirectoryPath(virtualPath string) string
- func (ms *MetadataService) GetMetadataFilePath(virtualPath string) string
- func (ms *MetadataService) ListDirectory(virtualPath string) ([]string, error)
- func (ms *MetadataService) ListSubdirectories(virtualPath string) ([]string, error)
- func (ms *MetadataService) MoveToCorrupted(ctx context.Context, virtualPath string) error
- func (ms *MetadataService) ReadFileMetadata(virtualPath string) (*metapb.FileMetadata, error)
- func (ms *MetadataService) RemoveIDSymlink(nzbdavID string) error
- func (ms *MetadataService) RenameFileMetadata(oldVirtualPath, newVirtualPath string) error
- func (ms *MetadataService) UpdateFileMetadata(virtualPath string, updateFunc func(*metapb.FileMetadata)) error
- func (ms *MetadataService) UpdateFileStatus(virtualPath string, status metapb.FileStatus) error
- func (ms *MetadataService) UpdateIDSymlink(nzbdavID, virtualPath string) error
- func (ms *MetadataService) ValidateSourceNzb(metadata *metapb.FileMetadata) error
- func (ms *MetadataService) WalkDirectoryFiles(virtualPath string, ...) error
- func (ms *MetadataService) WriteFileMetadata(virtualPath string, metadata *metapb.FileMetadata) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BackupWorker ¶
type BackupWorker struct {
// contains filtered or unexported fields
}
func NewBackupWorker ¶
func NewBackupWorker(configGetter config.ConfigGetter) *BackupWorker
func (*BackupWorker) Stop ¶
func (w *BackupWorker) Stop(ctx context.Context)
type MetadataReader ¶
type MetadataReader struct {
// contains filtered or unexported fields
}
MetadataReader provides read operations for the virtual filesystem
func NewMetadataReader ¶
func NewMetadataReader(service *MetadataService) *MetadataReader
NewMetadataReader creates a new metadata reader
func (*MetadataReader) GetDirectoryInfo ¶
func (mr *MetadataReader) GetDirectoryInfo(virtualPath string) (fs.FileInfo, error)
GetDirectoryInfo gets information about a real directory using os.Stat
func (*MetadataReader) GetFileMetadata ¶
func (mr *MetadataReader) GetFileMetadata(virtualPath string) (*metapb.FileMetadata, error)
GetFileMetadata gets metadata for a virtual file
func (*MetadataReader) GetFileSegments ¶
func (mr *MetadataReader) GetFileSegments(virtualPath string) ([]*metapb.SegmentData, error)
GetFileSegments retrieves usenet segments for a virtual file
func (*MetadataReader) GetMetadataService ¶
func (mr *MetadataReader) GetMetadataService() *MetadataService
GetMetadataService returns the underlying metadata service
func (*MetadataReader) IsDirectory ¶
func (mr *MetadataReader) IsDirectory(virtualPath string) (bool, error)
IsDirectory checks if a virtual path is a directory
func (*MetadataReader) ListDirectoryContents ¶
func (mr *MetadataReader) ListDirectoryContents(virtualPath string) ([]fs.FileInfo, []*metapb.FileMetadata, error)
ListDirectoryContents lists all contents in a virtual directory path Returns real directories as fs.FileInfo and virtual files as FileMetadata
func (*MetadataReader) PathExists ¶
func (mr *MetadataReader) PathExists(virtualPath string) (bool, error)
PathExists checks if a virtual path exists
type MetadataService ¶
type MetadataService struct {
// contains filtered or unexported fields
}
MetadataService provides low-level read/write operations for metadata files
func NewMetadataService ¶
func NewMetadataService(rootPath string) *MetadataService
NewMetadataService creates a new metadata service
func (*MetadataService) CalculateSegmentSize ¶
func (ms *MetadataService) CalculateSegmentSize(segments []*metapb.SegmentData) int64
CalculateSegmentSize calculates the total size from segment data
func (*MetadataService) CleanupEmptyDirectories ¶
func (ms *MetadataService) CleanupEmptyDirectories(virtualPath string, protected []string) error
CleanupEmptyDirectories recursively removes empty directories under the given virtual path. Uses a bottom-up approach to ensure parent directories are also removed if they become empty.
func (*MetadataService) CleanupOrphanedIDSymlinks ¶
func (ms *MetadataService) CleanupOrphanedIDSymlinks(ctx context.Context) (int, error)
CleanupOrphanedIDSymlinks walks the .ids/ directory and removes symlinks whose targets no longer exist. Empty shard directories are cleaned up afterwards. Returns the number of removed symlinks.
func (*MetadataService) CreateDirectory ¶
func (ms *MetadataService) CreateDirectory(name string) error
func (*MetadataService) CreateDirectoryAll ¶
func (ms *MetadataService) CreateDirectoryAll(name string) error
func (*MetadataService) CreateFileMetadata ¶
func (ms *MetadataService) CreateFileMetadata( fileSize int64, sourceNzbPath string, status metapb.FileStatus, segmentData []*metapb.SegmentData, encryption metapb.Encryption, password string, salt string, aesKey []byte, aesIv []byte, releaseDate int64, par2Files []*metapb.Par2FileReference, nzbdavId string, ) *metapb.FileMetadata
CreateFileMetadata creates a new FileMetadata with basic fields
func (*MetadataService) CreateSegmentData ¶
func (ms *MetadataService) CreateSegmentData(startOffset, endOffset int64, messageID string) *metapb.SegmentData
CreateSegmentData creates a new SegmentData with the given parameters
func (*MetadataService) DeleteDirectory ¶
func (ms *MetadataService) DeleteDirectory(virtualPath string) error
DeleteDirectory deletes a metadata directory and all its contents
func (*MetadataService) DeleteFileMetadata ¶
func (ms *MetadataService) DeleteFileMetadata(virtualPath string) error
DeleteFileMetadata deletes a metadata file
func (*MetadataService) DeleteFileMetadataWithSourceNzb ¶
func (ms *MetadataService) DeleteFileMetadataWithSourceNzb(ctx context.Context, virtualPath string, deleteSourceNzb bool) error
DeleteFileMetadataWithSourceNzb deletes a metadata file and optionally its source NZB
func (*MetadataService) DirectoryExists ¶
func (ms *MetadataService) DirectoryExists(virtualPath string) bool
DirectoryExists checks if a metadata directory exists
func (*MetadataService) FileExists ¶
func (ms *MetadataService) FileExists(virtualPath string) bool
FileExists checks if a metadata file exists for the given virtual path
func (*MetadataService) GetMetadataDirectoryPath ¶
func (ms *MetadataService) GetMetadataDirectoryPath(virtualPath string) string
GetMetadataDirectoryPath returns the filesystem path for a metadata directory
func (*MetadataService) GetMetadataFilePath ¶
func (ms *MetadataService) GetMetadataFilePath(virtualPath string) string
GetMetadataFilePath returns the filesystem path for a metadata file
func (*MetadataService) ListDirectory ¶
func (ms *MetadataService) ListDirectory(virtualPath string) ([]string, error)
ListDirectory lists all metadata files in a directory
func (*MetadataService) ListSubdirectories ¶
func (ms *MetadataService) ListSubdirectories(virtualPath string) ([]string, error)
ListSubdirectories lists all subdirectories in a metadata directory
func (*MetadataService) MoveToCorrupted ¶
func (ms *MetadataService) MoveToCorrupted(ctx context.Context, virtualPath string) error
MoveToCorrupted moves a metadata file to a special corrupted directory for safety
func (*MetadataService) ReadFileMetadata ¶
func (ms *MetadataService) ReadFileMetadata(virtualPath string) (*metapb.FileMetadata, error)
ReadFileMetadata reads file metadata from disk
func (*MetadataService) RemoveIDSymlink ¶
func (ms *MetadataService) RemoveIDSymlink(nzbdavID string) error
RemoveIDSymlink removes an ID-based symlink from the .ids/ sharded directory.
func (*MetadataService) RenameFileMetadata ¶
func (ms *MetadataService) RenameFileMetadata(oldVirtualPath, newVirtualPath string) error
RenameFileMetadata atomically renames a metadata file (and its .id sidecar) from oldVirtualPath to newVirtualPath. Uses os.Rename for atomicity on the same filesystem, falling back to read-write-delete for cross-device moves.
func (*MetadataService) UpdateFileMetadata ¶
func (ms *MetadataService) UpdateFileMetadata(virtualPath string, updateFunc func(*metapb.FileMetadata)) error
UpdateFileMetadata updates the modified timestamp of metadata
func (*MetadataService) UpdateFileStatus ¶
func (ms *MetadataService) UpdateFileStatus(virtualPath string, status metapb.FileStatus) error
UpdateFileStatus updates the status of a file in metadata
func (*MetadataService) UpdateIDSymlink ¶
func (ms *MetadataService) UpdateIDSymlink(nzbdavID, virtualPath string) error
UpdateIDSymlink creates or updates an ID-based symlink in the .ids/ sharded directory. On Windows, symlinks are not supported and this operation is skipped gracefully.
func (*MetadataService) ValidateSourceNzb ¶
func (ms *MetadataService) ValidateSourceNzb(metadata *metapb.FileMetadata) error
ValidateSourceNzb validates that the source NZB file exists and matches metadata
func (*MetadataService) WalkDirectoryFiles ¶
func (ms *MetadataService) WalkDirectoryFiles(virtualPath string, fn func(fileVirtualPath string, meta *metapb.FileMetadata) error) error
WalkDirectoryFiles walks a metadata directory and calls fn for each file's virtual path and metadata.
func (*MetadataService) WriteFileMetadata ¶
func (ms *MetadataService) WriteFileMetadata(virtualPath string, metadata *metapb.FileMetadata) error
WriteFileMetadata writes file metadata to disk