diff --git a/gin-bin b/gin-bin new file mode 100755 index 0000000..f7b811b Binary files /dev/null and b/gin-bin differ diff --git a/main.go b/main.go index 538631c..b8a8ad7 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,11 @@ import ( var db *sql.DB +type EmojiCount struct { + Emoji string + TotalCount int +} + func main() { cfg := mysql.Config{ User: os.Getenv("DBUSER"), @@ -45,36 +50,64 @@ func main() { r.Use(cors.New(corsConfig)) r.GET("/forms/emoji", func(c *gin.Context) { + postId := c.Query("postId") + var results []EmojiCount + rows, err := db.Query("SELECT emoji, COUNT(*) FROM emoji_clicks WHERE post_id = ? GROUP BY emoji;", postId) + if err != nil { + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": err.Error(), "postId": postId}) + return + } + defer rows.Close() + + for rows.Next() { + var ec EmojiCount + if err := rows.Scan(&ec.Emoji, &ec.TotalCount); err != nil { + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "error getting emoji rows", "postId": postId}) + return + } + results = append(results, ec) + } + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{ - "postId": c.Query("postId"), + "postId": c.Query("postId"), + "results": results, }) }) r.POST("/forms/emoji/post", func(c *gin.Context) { - postID := c.PostForm("postId") + postId := c.PostForm("postId") emoji := c.PostForm("emojiInput") - if postID == "" || emoji == "" { - c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "missing parameters", "postId": postID}) + if postId == "" || emoji == "" { + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "missing parameters", "postId": postId}) return } - _, err := db.Exec("INSERT INTO emoji_clicks (post_id, emoji) VALUES (?, ?)", postID, emoji) + _, err := db.Exec("INSERT INTO emoji_clicks (post_id, emoji) VALUES (?, ?)", postId, emoji) if err != nil { - c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "error writing to database", "postId": postID}) + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "error writing to database", "postId": postId}) return } - var totalCount int - - err = db.QueryRow("SELECT COUNT(*) AS total_count FROM emoji_clicks WHERE post_id = ?;", postID).Scan(&totalCount) + var results []EmojiCount + rows, err := db.Query("SELECT emoji, COUNT(*) FROM emoji_clicks WHERE post_id = ? GROUP BY emoji;", postId) if err != nil { - c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "error writing to database", "postId": postID}) + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": err.Error(), "postId": postId}) return } + defer rows.Close() - c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"postId": postID, "thumbsUpCount": totalCount}) + for rows.Next() { + var ec EmojiCount + if err := rows.Scan(&ec.Emoji, &ec.TotalCount); err != nil { + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"error": "error getting emoji rows", "postId": postId}) + return + } + results = append(results, ec) + } + + c.HTML(http.StatusOK, "emoji_form.tmpl", gin.H{"postId": postId, "results": results}) }) - r.Run(":8000") + r.Run(":3001") } diff --git a/templates/emoji_form.tmpl b/templates/emoji_form.tmpl index 6ac2f0a..8a15a35 100644 --- a/templates/emoji_form.tmpl +++ b/templates/emoji_form.tmpl @@ -1,6 +1,8 @@
- +{{ range .results }} + +{{ end }}

{{.error}}