summaryrefslogtreecommitdiff
path: root/handlers
diff options
context:
space:
mode:
authorroerick <roerick@wyo.town>2025-10-17 15:32:19 -0600
committerroerick <roerick@wyo.town>2025-10-17 15:32:19 -0600
commitce61d3db96e0539c8df1886ac635e7e85dbde31f (patch)
tree8af7c0eda03b91273ebffbde5799e4436b04cac6 /handlers
initial commit, models not working
Diffstat (limited to 'handlers')
-rw-r--r--handlers/handlers.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/handlers/handlers.go b/handlers/handlers.go
new file mode 100644
index 0000000..777ae83
--- /dev/null
+++ b/handlers/handlers.go
@@ -0,0 +1,55 @@
+package handlers
+
+import (
+ "net/http"
+ "fmt"
+ "text/template"
+ "github.com/gorilla/mux"
+ "gorm.io/driver/postgres"
+ "gorm.io/gorm"
+ "wyo.town/netzah/models"
+)
+
+// CreateBlog displays the blog creation form
+func CreateBlog(w http.ResponseWriter, r *http.Request) {
+ tmpl := template.Must(template.ParseFiles("templates/create_blog.html"))
+ tmpl.Execute(w, nil)
+}
+
+// StoreBlog handles the form submission for creating a blog
+func StoreBlog(w http.ResponseWriter, r *http.Request) {
+ dsn := "host=localhost user=_postgresql password=postGRES dbname=netzah port=5432 sslmode=disable TimeZone=US/Mountain client_encoding=UTF8"
+ db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
+ if err != nil {
+ panic("failed to connect to database")
+ }
+
+
+ if r.Method == http.MethodPost {
+ var blog models.Blog
+ blog.Title = r.FormValue("title")
+ blog.Content = r.FormValue("content")
+ db.Create(&blog)
+ http.Redirect(w, r, "/blogs/"+fmt.Sprint(blog.ID), http.StatusSeeOther)
+ }
+}
+
+// GetBlog retrieves and displays a blog by ID
+func GetBlog(w http.ResponseWriter, r *http.Request) {
+ dsn := "host=localhost user=_postgresql password=postGRES dbname=netzah port=5432 sslmode=disable TimeZone=US/Mountain client_encoding=UTF8"
+ db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
+
+ if err != nil {
+ panic("failed to connect to database")
+ }
+
+ id := mux.Vars(r)["id"]
+ var blog models.Blog
+ if err := db.First(&blog, id).Error; err != nil {
+ http.NotFound(w, r)
+ return
+ }
+ tmpl := template.Must(template.ParseFiles("templates/blog.html"))
+ tmpl.Execute(w, blog)
+}
+