diff options
Diffstat (limited to 'controllers/pages.go')
-rw-r--r-- | controllers/pages.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/controllers/pages.go b/controllers/pages.go new file mode 100644 index 0000000..c5c5306 --- /dev/null +++ b/controllers/pages.go @@ -0,0 +1,34 @@ +package controllers + +import ( + "paperchan.club/database" + "paperchan.club/models" + "github.com/gofiber/fiber/v2" + "log" +) + +func ThreadList(c *fiber.Ctx) error { + var threads []models.Thread + db := database.DB + if err := db.Select(&threads, "SELECT a.*, (SELECT COUNT(*) FROM \"post\" AS b WHERE b.thread = a.id) AS replies FROM \"post\" AS \"a\" WHERE \"thread\" IS NULL ORDER BY (SELECT c.created_at FROM \"post\" AS c WHERE c.thread = a.id OR c.id = a.id ORDER BY c.created_at DESC LIMIT 1) DESC"); err != nil { + log.Println(err) + return c.Status(500).SendString("ERROR") + } + return c.Render("index", fiber.Map{ + "posts": threads, + }) +} + +func Thread(c *fiber.Ctx) error { + id := c.Params("id") + var posts []models.Post + db := database.DB + if err := db.Select(&posts, "SELECT * FROM \"post\" WHERE id = $1 OR thread = $1 ORDER BY created_at ASC", id); err != nil { + log.Println(err) + return c.Status(500).SendString("ERROR") + } + return c.Render("thread", fiber.Map{ + "threadId": id, + "posts": posts, + }) +} |