From 4a50e61fd69a37b9c54ced223aa2e3c30dcb0344 Mon Sep 17 00:00:00 2001 From: roberto Date: Sun, 23 Mar 2025 12:00:44 +0100 Subject: [PATCH] Improved errors logging --- cmd/web/categories_handler.go | 31 ++++++-- cmd/web/errors.go | 4 + cmd/web/handlers.go | 10 ++- cmd/web/items_handlers.go | 142 ++++++++++++++++++++++++++-------- cmd/web/main.go | 7 +- cmd/web/notebooks_handlers.go | 28 +++++-- cmd/web/quickbox_handlers.go | 38 ++++++--- cmd/web/types_handlers.go | 45 ++++++++--- 8 files changed, 237 insertions(+), 68 deletions(-) diff --git a/cmd/web/categories_handler.go b/cmd/web/categories_handler.go index c7d644b..83243b7 100644 --- a/cmd/web/categories_handler.go +++ b/cmd/web/categories_handler.go @@ -41,7 +41,10 @@ func (form *categoryForm) Validate(w http.ResponseWriter, r *http.Request, app * if err != nil { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building category form buffer : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) return false @@ -73,7 +76,10 @@ func (app *application) categories(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building categories list buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"categories/index.tmpl", "categories/list.tmpl", "categories/list_title.tmpl"}) if err != nil { @@ -113,7 +119,10 @@ func (app *application) categoryCreate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building category create form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"categories/create_title.tmpl", "categories/form.tmpl"}) if err != nil { @@ -171,7 +180,10 @@ func (app *application) categoryCreate(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Trigger-After-Settle", `{"showMessage":""}`) w.Header().Add("HX-Replace-Url", fmt.Sprint("/type/update/", categoryId)) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building category update form buffer after post on create : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } @@ -211,7 +223,10 @@ func (app *application) categoryUpdate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building category update form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"categories/update_title.tmpl", "categories/form.tmpl"}) if err != nil { @@ -258,8 +273,10 @@ func (app *application) categoryUpdate(w http.ResponseWriter, r *http.Request) { } w.Header().Add("HX-Trigger-After-Settle", `{"showMessage":""}`) - fullBuf.WriteTo(w) - + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building category update form buffer after post on update : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } } diff --git a/cmd/web/errors.go b/cmd/web/errors.go index c0832eb..89136f6 100644 --- a/cmd/web/errors.go +++ b/cmd/web/errors.go @@ -33,3 +33,7 @@ func (app *application) notFound(w http.ResponseWriter, r *http.Request) { func (app *application) badRequest(w http.ResponseWriter, err error) { http.Error(w, err.Error(), http.StatusBadRequest) } + +func (app *application) logError(message string, err error) { + app.logger.Error(message, err.Error()) +} diff --git a/cmd/web/handlers.go b/cmd/web/handlers.go index d9716e2..d2a48bb 100644 --- a/cmd/web/handlers.go +++ b/cmd/web/handlers.go @@ -29,7 +29,10 @@ func (app *application) home(w http.ResponseWriter, r *http.Request) { } currentNotebookId = r.PostForm.Get("current_notebook_id") session.Values["current_notebook_id"] = currentNotebookId - session.Save(r, w) + err = session.Save(r, w) + if err != nil { + app.logError("Save session on home : ", err) + } } var fullBuf = new(bytes.Buffer) @@ -76,7 +79,10 @@ func (app *application) home(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } } - fullBuf.WriteTo(w) + _, err := fullBuf.WriteTo(w) + if err != nil { + app.logError("Building home page buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"pages/home.tmpl", "pages/home_items.tmpl", "pages/home_title.tmpl"}) if err != nil { diff --git a/cmd/web/items_handlers.go b/cmd/web/items_handlers.go index f80795d..49d51de 100644 --- a/cmd/web/items_handlers.go +++ b/cmd/web/items_handlers.go @@ -64,8 +64,10 @@ func (form *itemForm) Validate(w http.ResponseWriter, r *http.Request, app *appl if err != nil { app.serverError(w, r, err) } - fullBuf.WriteTo(w) - + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item response buffer : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) return false } @@ -91,8 +93,10 @@ func (form *itemShareForm) Validate(w http.ResponseWriter, r *http.Request, app if err != nil { app.serverError(w, r, err) } - fullBuf.WriteTo(w) - + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item share validation response buffer : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) return false } @@ -116,7 +120,10 @@ func (app *application) itemsRelationAdd(w http.ResponseWriter, r *http.Request) app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item relation add response buffer : ", err) + } w.WriteHeader(http.StatusOK) } @@ -154,7 +161,10 @@ func (app *application) itemsSearch(w http.ResponseWriter, r *http.Request) { } } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item search response buffer : ", err) + } } w.WriteHeader(http.StatusOK) } @@ -185,7 +195,10 @@ func (app *application) itemsSearchForRelations(w http.ResponseWriter, r *http.R app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item search for relations response buffer : ", err) + } w.WriteHeader(http.StatusOK) } @@ -253,7 +266,10 @@ func (app *application) items(w http.ResponseWriter, r *http.Request) { } } - fullBuf.WriteTo(w) + _, err := fullBuf.WriteTo(w) + if err != nil { + app.logError("Building items list response buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"items/index_all.tmpl", "items/all_list.tmpl", "items/all_list_rows.tmpl", "items/add_to_dashboard.tmpl", "items/remove_from_dashboard.tmpl", "items/all_list_title.tmpl"}) if err != nil { @@ -292,7 +308,10 @@ func (app *application) items(w http.ResponseWriter, r *http.Request) { } } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building items list response buffer on post: ", err) + } } w.WriteHeader(http.StatusOK) } @@ -375,7 +394,10 @@ func (app *application) itemsType(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } } - fullBuf.WriteTo(w) + _, err := fullBuf.WriteTo(w) + if err != nil { + app.logError("Building items list by type response buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"items/index.tmpl", "items/list.tmpl", "items/list_rows.tmpl", "items/add_to_dashboard.tmpl", "items/remove_from_dashboard.tmpl", "items/list_title.tmpl"}) if err != nil { @@ -410,7 +432,10 @@ func (app *application) itemsType(w http.ResponseWriter, r *http.Request) { if err != nil { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building items list by type response buffer on post : ", err) + } } w.WriteHeader(http.StatusOK) @@ -479,7 +504,10 @@ func (app *application) itemCreate(w http.ResponseWriter, r *http.Request) { } w.Header().Add("HX-Trigger-After-Settle", `{"activateEasyMDE":"item-description"}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item create form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"items/create_title.tmpl", "items/relations.tmpl", "items/form.tmpl", "items/fields.tmpl", "items/form_jscode.tmpl", "items/shares.tmpl"}) if err != nil { @@ -546,7 +574,10 @@ func (app *application) itemCreate(w http.ResponseWriter, r *http.Request) { relatedIdS, found := strings.CutPrefix(name, "ItemRelation-New-") if found && len(values) > 0 { relatedItemId, _ := strconv.ParseInt(relatedIdS, 10, 64) - itemModel.AddRelation(item.Id, relatedItemId, values[0]) + err = itemModel.AddRelation(item.Id, relatedItemId, values[0]) + if err != nil { + app.logError("Saving relation for item : ", err) + } } } @@ -556,8 +587,10 @@ func (app *application) itemCreate(w http.ResponseWriter, r *http.Request) { item.TypeTitle = aType.Title fields, _, _ := fieldModel.ByType(typeId) - itemModel.SaveKeywords(item, &fields, fieldsValues) - + err = itemModel.SaveKeywords(item, &fields, fieldsValues) + if err != nil { + app.logError("Saving keywords for item : ", err) + } data["formAction"] = fmt.Sprint("/item/update/", itemId) data["formTarget"] = "#message" @@ -605,7 +638,10 @@ func (app *application) itemCreate(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Trigger-After-Settle", `{"activateEasyMDE":"item-description","showMessage":""}`) w.Header().Add("HX-Replace-Url", fmt.Sprint("/item/update/", itemId)) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item update form buffer after post on create : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } @@ -639,7 +675,10 @@ func (app *application) itemRead(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item read buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"items/read_title.tmpl", "items/relations_view.tmpl", "items/read.tmpl"}) if err != nil { @@ -672,7 +711,8 @@ func (app *application) itemView(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } w.Header().Add("HX-Trigger-After-Settle", `{"showModalDialog": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + app.logError("Building item view buffer : ", err) } else { err := response.Page(w, http.StatusOK, data, []string{"items/read_title.tmpl", "items/relations_view.tmpl", "items/read.tmpl"}) if err != nil { @@ -753,7 +793,10 @@ func (app *application) itemUpdate(w http.ResponseWriter, r *http.Request) { } w.Header().Add("HX-Trigger-After-Settle", `{"activateEasyMDE":"item-description"}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item update form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"items/update_title.tmpl", "items/form.tmpl", "items/fields.tmpl", "items/relations.tmpl", "items/shares.tmpl", "items/form_jscode.tmpl"}) if err != nil { @@ -818,7 +861,10 @@ func (app *application) itemUpdate(w http.ResponseWriter, r *http.Request) { relatedIdS, found := strings.CutPrefix(name, "ItemRelation-New-") if found && len(values) > 0 { relatedItemId, _ := strconv.ParseInt(relatedIdS, 10, 64) - itemModel.AddRelation(item.Id, relatedItemId, values[0]) + err = itemModel.AddRelation(item.Id, relatedItemId, values[0]) + if err != nil { + app.logError("Saving relation for item : ", err) + } } idS, found = strings.CutPrefix(name, "ItemRelation-") @@ -828,9 +874,15 @@ func (app *application) itemUpdate(w http.ResponseWriter, r *http.Request) { relatedItemId, _ := strconv.ParseInt(ids[1], 10, 64) valuesRemove, isMapContainsKey := r.PostForm["ItemRelation-ToRemove-"+idS] if isMapContainsKey && valuesRemove[0] == "1" { - itemModel.DeleteRelation(itemId, relatedItemId) + err = itemModel.DeleteRelation(itemId, relatedItemId) + if err != nil { + app.logError("Delete relation from item : ", err) + } } else { - itemModel.UpdateRelation(itemId, relatedItemId, values[0]) + err = itemModel.UpdateRelation(itemId, relatedItemId, values[0]) + if err != nil { + app.logError("Update relation for item : ", err) + } } } shareId, found := strings.CutPrefix(name, "ItemShare-ToRemove-") @@ -838,7 +890,10 @@ func (app *application) itemUpdate(w http.ResponseWriter, r *http.Request) { valuesRemove, isMapContainsKey := r.PostForm["ItemShare-ToRemove-"+shareId] if isMapContainsKey && valuesRemove[0] == "1" { shareIdInt, _ := strconv.ParseInt(shareId, 10, 64) - itemModel.DeleteShare(shareIdInt) + err = itemModel.DeleteShare(shareIdInt) + if err != nil { + app.logError("Deleting share for item : ", err) + } } } } @@ -848,8 +903,10 @@ func (app *application) itemUpdate(w http.ResponseWriter, r *http.Request) { } fields, _, _ := fieldModel.ByType(item.TypeId) - itemModel.SaveKeywords(item, &fields, fieldsValues) - + err = itemModel.SaveKeywords(item, &fields, fieldsValues) + if err != nil { + app.logError("Saving keywords for item : ", err) + } relations, _, _ := itemModel.GetRelations(item.Id) shares, _, _ := itemModel.GetShares(item.Id) @@ -905,7 +962,10 @@ func (app *application) itemUpdate(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Reswap", `beforeend`) w.Header().Add("HX-Trigger-After-Settle", `{"showMessage": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item update form buffer after post on update : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } @@ -943,7 +1003,10 @@ func (app *application) itemShare(w http.ResponseWriter, r *http.Request) { } w.Header().Add("HX-Trigger-After-Settle", `{"showModalDialog": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item share form buffer : ", err) + } case http.MethodPost: var itemShareFromForm itemShareForm @@ -984,7 +1047,10 @@ func (app *application) itemShare(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Reswap", `beforeend`) w.Header().Add("HX-Trigger-After-Swap", `{"showMessage": "", "closeModalDialog": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item share form buffer on post : ", err) + } } } @@ -1007,7 +1073,10 @@ func (app *application) itemShareEdit(w http.ResponseWriter, r *http.Request) { } w.Header().Add("HX-Trigger-After-Swap", `{"showModalDialog": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item share edit form buffer : ", err) + } case http.MethodPost: var itemShareFromForm itemShareForm @@ -1047,7 +1116,10 @@ func (app *application) itemShareEdit(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Reswap", `beforeend`) w.Header().Add("HX-Trigger-After-Swap", `{"showMessage": "", "closeModalDialog": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building item share form buffer on post : ", err) + } } } @@ -1067,7 +1139,10 @@ func (app *application) itemAddToDashboard(w http.ResponseWriter, r *http.Reques app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building add item to the dashboard response: ", err) + } } func (app *application) itemRemoveFromDashboard(w http.ResponseWriter, r *http.Request) { @@ -1087,6 +1162,9 @@ func (app *application) itemRemoveFromDashboard(w http.ResponseWriter, r *http.R app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building remove item from the dashboard response: ", err) + } } } diff --git a/cmd/web/main.go b/cmd/web/main.go index ae688cc..7d4b28e 100644 --- a/cmd/web/main.go +++ b/cmd/web/main.go @@ -59,7 +59,12 @@ func run(logger *slog.Logger) error { if err != nil { return err } - defer db.Close() + defer func(db *database.DB) { + err := db.Close() + if err != nil { + logger.Error("Building category update form buffer after post on create : ", err) + } + }(db) mailer, err := smtp.NewMailer(cfg.smtp.host, cfg.smtp.port, cfg.smtp.username, cfg.smtp.password, cfg.smtp.from) if err != nil { diff --git a/cmd/web/notebooks_handlers.go b/cmd/web/notebooks_handlers.go index 5febe0a..673ac20 100644 --- a/cmd/web/notebooks_handlers.go +++ b/cmd/web/notebooks_handlers.go @@ -45,7 +45,10 @@ func (form *notebookForm) Validate(w http.ResponseWriter, r *http.Request, app * if err != nil { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building notebook validation response buffer : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) return false @@ -74,7 +77,10 @@ func (app *application) notebooks(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building notebooks list response buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"notebooks/index.tmpl", "notebooks/list.tmpl", "notebooks/list_title.tmpl"}) if err != nil { @@ -115,7 +121,10 @@ func (app *application) notebookCreate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building notebook create form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"notebooks/create_title.tmpl", "notebooks/form.tmpl"}) if err != nil { @@ -183,7 +192,8 @@ func (app *application) notebookCreate(w http.ResponseWriter, r *http.Request) { } w.Header().Add("HX-Replace-Url", fmt.Sprint("/notebook/update/", notebookId)) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + app.logError("Building category update form buffer after post on create : ", err) w.WriteHeader(http.StatusUnprocessableEntity) } @@ -223,7 +233,10 @@ func (app *application) notebookUpdate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building notebook update form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"notebooks/update_title.tmpl", "notebooks/form.tmpl"}) if err != nil { @@ -281,7 +294,10 @@ func (app *application) notebookUpdate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building notebook update form buffer on post : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } diff --git a/cmd/web/quickbox_handlers.go b/cmd/web/quickbox_handlers.go index b9f9d35..65fa556 100644 --- a/cmd/web/quickbox_handlers.go +++ b/cmd/web/quickbox_handlers.go @@ -55,7 +55,10 @@ func (app *application) quickboxAll(w http.ResponseWriter, r *http.Request) { if err != nil { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building quickbox list buffer : ", err) + } w.WriteHeader(http.StatusOK) } @@ -96,7 +99,10 @@ func (app *application) quickboxAdd(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Trigger", `{"quickboxNoteClear": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building quickbox add buffer : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } @@ -129,7 +135,10 @@ func (app *application) quickboxTransform(w http.ResponseWriter, r *http.Request } w.Header().Add("HX-Trigger-After-Settle", `{"showModalDialog": ""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building quickbox transform form buffer : ", err) + } case http.MethodPost: itemModel := models.NewItemModel(app.db) @@ -170,11 +179,9 @@ func (app *application) quickboxTransform(w http.ResponseWriter, r *http.Request var fields, _, _ = fieldModel.ByType(item.TypeId) fieldsValues := make(map[int64]map[int]string) - itemModel.SaveKeywords(item, &fields, fieldsValues) - + err = itemModel.SaveKeywords(item, &fields, fieldsValues) if err != nil { - app.badRequest(w, err) - return + app.logError("Quickbox save keywords : ", err) } data["messageType"] = "success" @@ -186,8 +193,10 @@ func (app *application) quickboxTransform(w http.ResponseWriter, r *http.Request triggerResponse := fmt.Sprintf(`{"closeQuickboxTransformModal":{"quickNoteId": "%d", "keepQuickNote": "%d"}}`, quicknoteId, quicknoteTransformFromForm.KeepInQuickbox) w.Header().Add("HX-Trigger-After-Settle", triggerResponse) - fullBuf.WriteTo(w) - + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building quickbox transform form buffer on post : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } } @@ -230,7 +239,11 @@ func (app *application) quickboxUpdate(w http.ResponseWriter, r *http.Request) { fullBuf.Write(buf.Bytes()) fullBuf.WriteString("") - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building quickbox update form buffer : ", err) + } + } else { err := response.Page(w, http.StatusOK, data, []string{"quicknotes/update_title.tmpl", "quicknotes/form.tmpl", "partials/message.tmpl"}) if err != nil { @@ -284,7 +297,10 @@ func (app *application) quickboxUpdate(w http.ResponseWriter, r *http.Request) { fullBuf.Write(buf.Bytes()) fullBuf.WriteString("") - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building quickbox update form buffer on post : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } diff --git a/cmd/web/types_handlers.go b/cmd/web/types_handlers.go index b431f31..4e43aba 100644 --- a/cmd/web/types_handlers.go +++ b/cmd/web/types_handlers.go @@ -47,7 +47,10 @@ func (form *typeForm) Validate(w http.ResponseWriter, r *http.Request, app *appl app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building type validation response buffer : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) return false @@ -77,7 +80,10 @@ func (app *application) types(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building types list response buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"types/index.tmpl", "types/list.tmpl", "types/list_title.tmpl"}) if err != nil { @@ -129,7 +135,10 @@ func (app *application) typeCreate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building type create form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"types/create_title.tmpl", "types/fields.tmpl", "types/form.tmpl"}) if err != nil { @@ -218,7 +227,10 @@ func (app *application) typeCreate(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Replace-Url", fmt.Sprint("/type/update/", typeId)) w.Header().Add("HX-Trigger-After-Settle", `{"showMessage":""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building notebook create form buffer on post : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } @@ -276,7 +288,10 @@ func (app *application) typeUpdate(w http.ResponseWriter, r *http.Request) { app.serverError(w, r, err) } - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building type update form buffer : ", err) + } } else { err := response.Page(w, http.StatusOK, data, []string{"types/update_title.tmpl", "types/form.tmpl", "types/fields.tmpl"}) if err != nil { @@ -354,9 +369,15 @@ func (app *application) typeUpdate(w http.ResponseWriter, r *http.Request) { for id, field := range fieldsUpdate { if field.ToRemove > 0 { - typeModel.RemoveField(id) + err = typeModel.RemoveField(id) + if err != nil { + app.logError("Removing a field from a type : ", err) + } } else { - typeModel.SaveField(&field) + err = typeModel.SaveField(&field) + if err != nil { + app.logError("Adding a field to a type : ", err) + } } } @@ -398,7 +419,10 @@ func (app *application) typeUpdate(w http.ResponseWriter, r *http.Request) { w.Header().Add("HX-Trigger-After-Settle", `{"showMessage":""}`) - fullBuf.WriteTo(w) + _, err = fullBuf.WriteTo(w) + if err != nil { + app.logError("Building type update form buffer on post : ", err) + } w.WriteHeader(http.StatusUnprocessableEntity) } @@ -421,7 +445,10 @@ func (app *application) typeFieldNew(w http.ResponseWriter, r *http.Request) { if err != nil { app.serverError(w, r, err) } - buf.WriteTo(w) + _, err = buf.WriteTo(w) + if err != nil { + app.logError("Adding new field to a type buffer : ", err) + } } func (app *application) typeDelete(w http.ResponseWriter, r *http.Request) {