From 32d80e87a09404fb3f8b5c9e9f2187182bc1311f Mon Sep 17 00:00:00 2001 From: Jason Streifling Date: Thu, 28 Mar 2024 07:34:36 +0100 Subject: [PATCH] Fixed bug in publishing issue --- cmd/model/issues.go | 3 +-- cmd/view/articles.go | 13 ------------- cmd/view/issues.go | 31 +++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 cmd/view/issues.go diff --git a/cmd/model/issues.go b/cmd/model/issues.go index dc73944..feec9a0 100644 --- a/cmd/model/issues.go +++ b/cmd/model/issues.go @@ -23,7 +23,6 @@ func (db *DB) AddIssue() (int64, error) { } func (db *DB) PublishLatestIssue() error { - var id int64 txOptions := &sql.TxOptions{Isolation: sql.LevelSerializable} updateQuery := "UPDATE issues SET published = true WHERE published = false" insertQuery := "INSERT INTO issues (published) VALUES (?)" @@ -35,7 +34,7 @@ func (db *DB) PublishLatestIssue() error { return fmt.Errorf("error starting transaction: %v", err) } - if _, err := tx.Exec(updateQuery, id); err != nil { + if _, err := tx.Exec(updateQuery); err != nil { if rollbackErr := tx.Rollback(); rollbackErr != nil { log.Fatalf("transaction error: %v, rollback error: %v", err, rollbackErr) } diff --git a/cmd/view/articles.go b/cmd/view/articles.go index ce41633..fb10bdc 100644 --- a/cmd/view/articles.go +++ b/cmd/view/articles.go @@ -354,16 +354,3 @@ func ShowCurrentArticles(db *model.DB) http.HandlerFunc { template.Must(tmpl, err).ExecuteTemplate(w, "page-content", articles) } } - -func PublishLatestIssue(db *model.DB) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - if err := db.PublishLatestIssue(); err != nil { - log.Println(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - tmpl, err := template.ParseFiles("web/templates/hub.html") - template.Must(tmpl, err).ExecuteTemplate(w, "page-content", nil) - } -} diff --git a/cmd/view/issues.go b/cmd/view/issues.go new file mode 100644 index 0000000..08af3fb --- /dev/null +++ b/cmd/view/issues.go @@ -0,0 +1,31 @@ +package view + +import ( + "html/template" + "log" + "net/http" + + "streifling.com/jason/cpolis/cmd/control" + "streifling.com/jason/cpolis/cmd/model" +) + +func PublishLatestIssue(db *model.DB, s *control.CookieStore) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if err := db.PublishLatestIssue(); err != nil { + log.Println(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + session, err := s.Get(r, "cookie") + if err != nil { + tmpl, err := template.ParseFiles("web/templates/login.html") + msg := "Session nicht mehr gültig. Bitte erneut anmelden." + template.Must(tmpl, err).ExecuteTemplate(w, "page-content", msg) + } + + tmpl, err := template.ParseFiles("web/templates/hub.html") + tmpl = template.Must(tmpl, err) + tmpl.ExecuteTemplate(w, "page-content", session.Values["role"]) + } +}