Files
forever-files/source/source.go

72 lines
1.7 KiB
Go

package source
import (
"fmt"
"forever-files/db"
"forever-files/types"
"log"
"os"
"path"
)
// the purpose of this package is to gather information about the source files for the backup
// it will store the information in a database
// information to gather:
// - file name
// - file path
// - file size
// - file hash
// - modified date
func GatherInfo(path string, db db.DB) error {
err := walkDir(path, db)
if err != nil {
return fmt.Errorf("error walking directory: %w", err)
}
return nil
}
func walkDir(dirPath string, db db.DB) error {
// get list of files in directory
directoryEntries, err := os.ReadDir(dirPath)
if err != nil {
return fmt.Errorf("error reading directory: %w", err)
}
for _, entry := range directoryEntries {
if entry.IsDir() {
err = walkDir(path.Join(dirPath, entry.Name()), db)
if err != nil {
return fmt.Errorf("error walking directory: %w", err)
}
} else {
// gather info
fileInfo, err := entry.Info()
if err != nil {
log.Default().Printf("error getting file info: %v", err)
continue
}
//hash, err := fileUtilities.HashFile(path.Join(dirPath, entry.Name()))
//if err != nil {
// log.Default().Printf("error hashing file: %v", err)
// continue
//}
// store info
//fmt.Printf("Name: %v, Size: %v, Modified Date: %v, Hash: %v\n", fileInfo.Name(), fileInfo.Size(), fileInfo.ModTime(), hash)
err = db.StoreFile(types.FileMetadata{
Name: fileInfo.Name(),
Path: dirPath,
Size: fileInfo.Size(),
Hash: []byte("test"),
//Hash: hash,
ModifiedDate: fileInfo.ModTime(),
BackedUp: false,
})
if err != nil {
log.Default().Printf("error storing file metadata: %v", err)
continue
}
}
}
return nil
}