Fix every finding surfaced by the canonical .golangci.yml with golangci-lint v2.12.2 (refs #61), behavior-preserving throughout: - err113: dynamic errors replaced with package-level sentinels and %w wrapping; direct comparisons converted to errors.Is - goprintffuncname: printf-style helpers renamed with an f suffix (ui.Writer message methods, cli.ReportErrorf, database.Fatalf, vaultik stdoutf) and all call sites updated - revive: stuttering type names renamed (blob.Handler, blob.WithReader, blob.ChunkPosition, storage.URL, storage.Info), doc comments added, unused parameters blanked, package comments added - contextcheck/noctx: ctx threaded through blob.Packer (AddChunk/Flush/FinalizeBlob/PackChunks) and scanner call sites; context-aware exec and sql variants used - funlen/cyclop/gocognit/nestif/dupl: oversized or duplicated functions split into focused helpers across production and test code - paralleltest/tparallel/thelper/usetesting/testpackage: tests parallelized where safe (global log.Initialize kept in the serial phase), helpers marked, t.TempDir adopted, external test packages where only exported API is used - gosec: integer conversions clamped or justified, header timeouts added, remaining findings suppressed with per-site justifications - mnd/goconst/lll/wsl_v5/nlreturn/noinlineerr/errcheck and other mechanical findings fixed directly Remove the deprecated log.LogOptions alias (callers migrated to log.Options). make check is green.
68 lines
1.5 KiB
Go
68 lines
1.5 KiB
Go
// Package models defines shared value types describing files, chunks,
|
|
// blobs, and snapshots as they move through the backup pipeline.
|
|
package models
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// FileInfo represents a file in the backup system
|
|
type FileInfo struct {
|
|
Path string
|
|
MTime time.Time
|
|
Size int64
|
|
}
|
|
|
|
// ChunkInfo represents a content-addressed chunk
|
|
type ChunkInfo struct {
|
|
Hash string // SHA256 hash
|
|
Size int64
|
|
Offset int64 // Offset within source file
|
|
}
|
|
|
|
// ChunkRef represents a reference to a chunk in a blob or file
|
|
type ChunkRef struct {
|
|
ChunkHash string
|
|
Offset int64
|
|
Length int64
|
|
}
|
|
|
|
// BlobInfo represents an encrypted blob containing multiple chunks
|
|
type BlobInfo struct {
|
|
Hash string // SHA256 hash of the blob content (content-addressable)
|
|
CreatedAt time.Time
|
|
Size int64
|
|
ChunkCount int
|
|
}
|
|
|
|
// Snapshot represents a backup snapshot
|
|
type Snapshot struct {
|
|
ID string // ISO8601 timestamp
|
|
Hostname string
|
|
Version string
|
|
CreatedAt time.Time
|
|
FileCount int64
|
|
ChunkCount int64
|
|
BlobCount int64
|
|
TotalSize int64
|
|
MetadataSize int64
|
|
}
|
|
|
|
// SnapshotMetadata contains the full metadata for a snapshot
|
|
type SnapshotMetadata struct {
|
|
Snapshot *Snapshot
|
|
Files map[string]*FileInfo
|
|
Chunks map[string]*ChunkInfo
|
|
Blobs map[string]*BlobInfo
|
|
FileChunks map[string][]*ChunkRef // path -> chunks
|
|
BlobChunks map[string][]*ChunkRef // blob hash -> chunks
|
|
}
|
|
|
|
// Chunk represents a data chunk for processing
|
|
type Chunk struct {
|
|
Data []byte
|
|
Hash string
|
|
Offset int64
|
|
Length int64
|
|
}
|