Improved errors logging

This commit is contained in:
roberto 2025-03-23 12:00:44 +01:00
parent 5faf356118
commit 4a50e61fd6
8 changed files with 237 additions and 68 deletions

View file

@ -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)
}
}

View file

@ -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())
}

View file

@ -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 {

View file

@ -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)
}
}
}

View file

@ -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 {

View file

@ -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)
}

View file

@ -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("</div>")
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("</div>")
fullBuf.WriteTo(w)
_, err = fullBuf.WriteTo(w)
if err != nil {
app.logError("Building quickbox update form buffer on post : ", err)
}
w.WriteHeader(http.StatusUnprocessableEntity)
}

View file

@ -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) {