diff options
author | Saumit Dinesan <justsaumit@protonmail.com> | 2023-12-21 02:17:45 +0530 |
---|---|---|
committer | Saumit Dinesan <justsaumit@protonmail.com> | 2023-12-21 02:17:45 +0530 |
commit | 4955cf750ff94d1a30982abfcb81662e80ec667a (patch) | |
tree | b7d7506a0ff5552890dad46adf7007b99a7e9e44 | |
parent | 5336a9dfad7cb482ceeb92ae0d59eeca38986c5a (diff) |
handlers - better error handling
-rw-r--r-- | handlers/handlers.go | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/handlers/handlers.go b/handlers/handlers.go index 3fb8e26..b28bda0 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -25,26 +25,36 @@ func init() { // Create the 'hashes' table if it does not exist _, err = db.Exec(` - CREATE TABLE IF NOT EXISTS hashes ( - ID TEXT PRIMARY KEY, - HashValue TEXT NOT NULL - ); - `) + CREATE TABLE IF NOT EXISTS hashes ( + ID TEXT PRIMARY KEY, + HashValue TEXT NOT NULL + ); + `) + if err != nil { + log.Fatalf("Failed to create table: %v", err) + } +} + +// handleError handles errors by logging and returning a JSON response +func handleError(c echo.Context, errMsg string, status int) error { + log.Println(errMsg) + return c.JSON(status, map[string]string{"message": errMsg}) } // AddHash handles the file upload, store and response -func AddHash(c echo.Context) error { +func AddHash(c echo.Context) (err error) { file, err := c.FormFile("FileInput") if err != nil { log.Println("Failed to bind request:", err) return c.JSON(http.StatusBadRequest, map[string]string{"message": "Invalid request"}) + return handleError(c, "Failed to bind request", http.StatusBadRequest) } // Open the file stream src, err := file.Open() if err != nil { log.Println("Failed to Open File", err) - return err + return handleError(c, "Failed to Open File", http.StatusInternalServerError) } // Close the file stream on function exit defer src.Close() @@ -52,17 +62,22 @@ func AddHash(c echo.Context) error { id, err := utils.GenerateID() if err != nil { log.Println("Failed to Generate ID", err) + return handleError(c, "Failed to Generate ID", http.StatusInternalServerError) } + log.Printf("ID generated successfully: %s", id) hash, err := utils.GenerateHash(src) if err != nil { log.Println("Failed to Generate Hash", err) + return handleError(c, "Failed to Generate Hash", http.StatusInternalServerError) } + log.Printf("Hash generated successfully: %s", hash) // Store id and hash in the database _, err = db.Exec("INSERT INTO hashes (ID, HashValue) VALUES (?, ?)", id, hash) if err != nil { log.Println("Failed to insert into database:", err) + return handleError(c, "Failed to insert into database", http.StatusInternalServerError) } data := models.FileHashPair{ @@ -70,7 +85,7 @@ func AddHash(c echo.Context) error { FileHash: hash, } - log.Println("Hash added successfully to the database") + log.Println("Hash added to the database successfully: %v", data) return c.JSON(http.StatusOK, data) } |