From 84bb08144b9d69a1fee1f80793798f88423b4950 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Wed, 24 Jan 2024 19:47:25 -0500 Subject: [PATCH] fix: add a read state so we can noop a seek when we have not done anything yet --- storage/file.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/storage/file.go b/storage/file.go index 06e710c..cb8de2e 100644 --- a/storage/file.go +++ b/storage/file.go @@ -21,10 +21,11 @@ type File struct { storage interfaces.StorageService record *models.Upload cid *encoding.CID + read bool } func NewFile(hash []byte, storage interfaces.StorageService) *File { - return &File{hash: hash, storage: storage} + return &File{hash: hash, storage: storage, read: false} } func (f *File) Exists() bool { @@ -38,6 +39,7 @@ func (f *File) Read(p []byte) (n int, err error) { if err != nil { return 0, err } + f.read = true return f.reader.Read(p) } @@ -45,6 +47,10 @@ func (f *File) Read(p []byte) (n int, err error) { func (f *File) Seek(offset int64, whence int) (int64, error) { switch whence { case io.SeekStart: + if !f.read { + return 0, nil + } + if f.reader != nil { err := f.reader.Close() if err != nil {