StarlioX/api/controllers/favorite.go

136 lines
3.1 KiB
Go
Raw Normal View History

2022-12-15 21:09:37 +03:00
package controllers
import (
"database/sql"
2023-06-05 18:54:14 +03:00
"github.com/Redume/Starlio/utils"
2022-12-15 21:09:37 +03:00
"github.com/gofiber/fiber/v2"
)
var GetFavorites = func(c *fiber.Ctx) error {
FavoriteTitle := c.Query("title")
type Favorite struct {
Title string `json:"title"`
Explanation string `json:"explanation"`
2022-12-17 16:23:24 +03:00
Copyright string `json:"copyright"`
2022-12-15 21:09:37 +03:00
Date string `json:"date"`
URL string `json:"url"`
HDURL string `json:"hdurl"`
MediaType string `json:"media_type"`
}
2022-12-17 16:23:24 +03:00
var title, explanation, copyright, date, url, hdurl, media_type string
db := utils.GetDatabase()
2022-12-15 21:09:37 +03:00
if FavoriteTitle != "" {
queryFavorites, err := db.Query("SELECT * FROM favorite WHERE title LIKE ?", FavoriteTitle)
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
defer func(query *sql.Rows) {
err := query.Close()
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
}(queryFavorites)
for queryFavorites.Next() {
2022-12-17 16:23:24 +03:00
err := queryFavorites.Scan(&title, &explanation, &copyright, &date, &url, &hdurl, &media_type)
2022-12-15 21:09:37 +03:00
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
return c.JSON(fiber.Map{
"title": title,
"explanation": explanation,
2022-12-17 16:23:24 +03:00
"copyright": copyright,
2022-12-15 21:09:37 +03:00
"date": date,
"url": url,
"hdurl": hdurl,
"media_type": media_type,
})
}
} else {
queryFavorite, err := db.Query("SELECT * FROM favorite")
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
defer func(query *sql.Rows) {
err := query.Close()
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
}(queryFavorite)
2022-12-15 21:14:22 +03:00
2022-12-15 21:09:37 +03:00
var favorites []Favorite
for queryFavorite.Next() {
2022-12-17 16:23:24 +03:00
err := queryFavorite.Scan(&title, &explanation, &copyright, &date, &url, &hdurl, &media_type)
2022-12-15 21:09:37 +03:00
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
favorites = append(favorites, Favorite{
Title: title,
Explanation: explanation,
2022-12-17 16:23:24 +03:00
Copyright: copyright,
2022-12-15 21:09:37 +03:00
Date: date,
URL: url,
HDURL: hdurl,
MediaType: media_type})
}
return c.JSON(favorites)
}
return c.SendString("No favorites found")
}
var AddFavorite = func(c *fiber.Ctx) error {
title := c.FormValue("title")
explanation := c.FormValue("explanation")
2022-12-17 16:23:24 +03:00
copyright := c.FormValue("copyright")
2022-12-15 21:09:37 +03:00
date := c.FormValue("date")
url := c.FormValue("url")
hdurl := c.FormValue("hdurl")
media_type := c.FormValue("media_type")
if title == "" && explanation == "" && date == "" && url == "" && hdurl == "" && media_type == "" {
utils.Respond(c, utils.Message(false, "All fields are required"))
return nil
}
db := utils.GetDatabase()
2022-12-15 21:09:37 +03:00
2022-12-17 16:23:24 +03:00
_, err := db.Exec("INSERT INTO favorite (title, explanation, copyright, date, url, hdurl, media_type) VALUES (?, ?, ?, ?, ?, ?, ?)",
2022-12-15 21:09:37 +03:00
title,
explanation,
2022-12-17 16:23:24 +03:00
copyright,
2022-12-15 21:09:37 +03:00
date,
url,
hdurl,
media_type)
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
utils.Respond(c, utils.Message(true, "Favorite added"))
return nil
}
var DeleteFavorite = func(c *fiber.Ctx) error {
title := c.FormValue("title")
db := utils.GetDatabase()
2022-12-15 21:09:37 +03:00
_, err := db.Exec("DELETE FROM favorite WHERE title = ?", title)
if err != nil {
utils.Logger(err.Error())
2022-12-15 21:09:37 +03:00
}
utils.Respond(c, utils.Message(true, "Favorite deleted"))
return nil
}