From 2bcf3394083859af35ba4ff5344f3ffbb2becafa Mon Sep 17 00:00:00 2001 From: skidoodle Date: Mon, 19 Jan 2026 00:44:03 +0100 Subject: [PATCH] refactor: db location Signed-off-by: skidoodle --- .gitignore | 1 - internal/app/config.go | 1 + internal/app/db.go | 8 +++++++- internal/app/db_test.go | 2 +- internal/app/server_test.go | 19 +++++++++++++++---- internal/app/upload.go | 6 +++++- 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 67aedbe..a0de6f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ storage/* -# Added by goreleaser init: dist/ diff --git a/internal/app/config.go b/internal/app/config.go index 95949c6..165ce96 100644 --- a/internal/app/config.go +++ b/internal/app/config.go @@ -36,6 +36,7 @@ const ( MinRetention = 24 * time.Hour MaxRetention = 365 * 24 * time.Hour + DBDirName = "db" DBFileName = "safebin.db" DBBucketName = "files" DBBucketIndexName = "expiry_index" diff --git a/internal/app/db.go b/internal/app/db.go index d191354..2204e1f 100644 --- a/internal/app/db.go +++ b/internal/app/db.go @@ -1,6 +1,7 @@ package app import ( + "os" "path/filepath" "time" @@ -15,7 +16,12 @@ type FileMeta struct { } func InitDB(storageDir string) (*bbolt.DB, error) { - path := filepath.Join(storageDir, DBFileName) + dbDir := filepath.Join(storageDir, DBDirName) + if err := os.MkdirAll(dbDir, PermUserRWX); err != nil { + return nil, err + } + + path := filepath.Join(dbDir, DBFileName) db, err := bbolt.Open(path, 0600, &bbolt.Options{Timeout: 1 * time.Second}) if err != nil { return nil, err diff --git a/internal/app/db_test.go b/internal/app/db_test.go index 495ab7c..9c37e69 100644 --- a/internal/app/db_test.go +++ b/internal/app/db_test.go @@ -23,7 +23,7 @@ func TestInitDB(t *testing.T) { } }() - dbPath := filepath.Join(tmpDir, DBFileName) + dbPath := filepath.Join(tmpDir, DBDirName, DBFileName) if _, err := os.Stat(dbPath); os.IsNotExist(err) { t.Error("Database file was not created") } diff --git a/internal/app/server_test.go b/internal/app/server_test.go index 651be2a..18bd0ec 100644 --- a/internal/app/server_test.go +++ b/internal/app/server_test.go @@ -233,9 +233,16 @@ func TestIntegration_Upload_VerifyEncryption(t *testing.T) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) - part, _ := writer.CreateFormFile("file", "secret.txt") - part.Write(plaintext) - writer.Close() + part, err := writer.CreateFormFile("file", "secret.txt") + if err != nil { + t.Fatalf("CreateFormFile failed: %v", err) + } + if _, err := part.Write(plaintext); err != nil { + t.Fatalf("Write failed: %v", err) + } + if err := writer.Close(); err != nil { + t.Fatalf("Writer close failed: %v", err) + } req, _ := http.NewRequest("POST", server.URL+"/", body) req.Header.Set("Content-Type", writer.FormDataContentType()) @@ -243,7 +250,11 @@ func TestIntegration_Upload_VerifyEncryption(t *testing.T) { if err != nil { t.Fatal(err) } - defer resp.Body.Close() + defer func() { + if err := resp.Body.Close(); err != nil { + t.Errorf("Failed to close response body: %v", err) + } + }() respBytes, _ := io.ReadAll(resp.Body) slug := filepath.Base(strings.TrimSpace(string(respBytes))) diff --git a/internal/app/upload.go b/internal/app/upload.go index b1e4253..6beb196 100644 --- a/internal/app/upload.go +++ b/internal/app/upload.go @@ -67,7 +67,11 @@ func (app *App) HandleUpload(writer http.ResponseWriter, request *http.Request) errChan <- err }() - defer pr.Close() + defer func() { + if closeErr := pr.Close(); closeErr != nil { + app.Logger.Error("Failed to close pipe reader", "err", closeErr) + } + }() streamer, err := crypto.NewGCMStreamer(ephemeralKey) if err != nil {