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) { err := walkDir(path, db) if err != nil { log.Fatal(err) } } 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 }