- 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)
21 lines
407 B
Go
21 lines
407 B
Go
package database
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Fatal prints an error message to stderr and exits with status 1
|
|
func Fatal(format string, args ...interface{}) {
|
|
fmt.Fprintf(os.Stderr, "FATAL: "+format+"\n", args...)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// CloseRows closes rows and exits on error
|
|
func CloseRows(rows *sql.Rows) {
|
|
if err := rows.Close(); err != nil {
|
|
Fatal("failed to close rows: %v", err)
|
|
}
|
|
}
|