Implement local SQLite index database with repositories

- Add SQLite database connection management with proper error handling
- Implement schema for files, chunks, blobs, and snapshots tables
- Create repository pattern for each database table
- Add transaction support with proper rollback handling
- Integrate database module with fx dependency injection
- Make index path configurable via VAULTIK_INDEX_PATH env var
- Add fatal error handling for database integrity issues
- Update DESIGN.md to clarify file_chunks vs chunk_files distinction
- Remove FinalHash from BlobInfo (blobs are content-addressable)
- Add file metadata support (mtime, ctime, mode, uid, gid, symlinks)
This commit is contained in:
2025-07-20 10:26:15 +02:00
parent 9de439a0a4
commit b2e85d9e76
31 changed files with 1229 additions and 83 deletions

View File

@@ -27,8 +27,7 @@ type ChunkRef struct {
// BlobInfo represents an encrypted blob containing multiple chunks
type BlobInfo struct {
Hash string // Hash of encrypted blob
FinalHash string // Hash after compression and encryption
Hash string // SHA256 hash of the blob content (content-addressable)
CreatedAt time.Time
Size int64
ChunkCount int
@@ -36,7 +35,7 @@ type BlobInfo struct {
// Snapshot represents a backup snapshot
type Snapshot struct {
ID string // ISO8601 timestamp
ID string // ISO8601 timestamp
Hostname string
Version string
CreatedAt time.Time
@@ -70,4 +69,4 @@ type DirtyPath struct {
Path string
MarkedAt time.Time
EventType string // "create", "modify", "delete"
}
}