add zip and parity stuff

This commit is contained in:
2023-07-18 18:21:12 -06:00
parent 8abb1408f0
commit f260ee1c9f
11 changed files with 403 additions and 21 deletions

View File

@ -17,6 +17,9 @@ type DB interface {
Migrate() error
StoreFile(fileMetadata types.FileMetadata) error
RemoveFile(fileMetadata types.FileMetadata) error
GetTotalSize() (int64, error)
GetFileCount() (int64, error)
GetFiles() ([]types.FileMetadata, error)
}
type store struct {
@ -90,6 +93,45 @@ func (d *store) RemoveFile(fileMetadata types.FileMetadata) error {
return nil
}
func (d *store) GetTotalSize() (int64, error) {
var size int64
query := `SELECT SUM(size) FROM files`
err := d.db.QueryRow(query).Scan(&size)
if err != nil {
return 0, fmt.Errorf("error getting size | %w", err)
}
return size, nil
}
func (d *store) GetFileCount() (int64, error) {
var count int64
query := `SELECT COUNT(*) FROM files`
err := d.db.QueryRow(query).Scan(&count)
if err != nil {
return 0, fmt.Errorf("error getting count | %w", err)
}
return count, nil
}
func (d *store) GetFiles() ([]types.FileMetadata, error) {
var files []types.FileMetadata
query := `SELECT name, path, size, hash, modifiedDate, backedUp FROM files order by path, name`
rows, err := d.db.Query(query)
if err != nil {
return nil, fmt.Errorf("error getting files | %w", err)
}
defer rows.Close()
for rows.Next() {
var file types.FileMetadata
err := rows.Scan(&file.Name, &file.Path, &file.Size, &file.Hash, &file.ModifiedDate, &file.BackedUp)
if err != nil {
return nil, fmt.Errorf("error scanning file | %w", err)
}
files = append(files, file)
}
return files, nil
}
func (d *store) Close() error {
return d.db.Close()
}