add dad jokes

This commit is contained in:
2023-06-24 10:34:49 -04:00
parent b01b26b12d
commit 31a71fac7f
11 changed files with 193 additions and 46 deletions

View File

@@ -11,11 +11,13 @@ import (
"github.com/sashabaranov/go-openai"
"gitlab.com/DeveloperDurp/DurpAPI/model"
"gitlab.com/DeveloperDurp/DurpAPI/storage"
)
type Controller struct {
Cfg model.Config
dbcfg model.DBConfig
Dbcfg model.DBConfig
Db model.Repository
}
func NewController() *Controller {
@@ -23,19 +25,30 @@ func NewController() *Controller {
if err != nil {
log.Fatalf("unable to load file: %e", err)
}
controller := &Controller{}
controller.Cfg = model.Config{}
controller.dbcfg = model.DBConfig{}
controller := &Controller{
Cfg: model.Config{},
Dbcfg: model.DBConfig{},
}
err = env.Parse(&controller.Cfg)
if err != nil {
log.Fatalf("unable to parse environment variables: %e", err)
}
err = env.Parse(&controller.dbcfg)
err = env.Parse(&controller.Dbcfg)
if err != nil {
log.Fatalf("unable to parse database variables: %e", err)
}
controller.Cfg.OpenaiClient = *openai.NewClient(controller.Cfg.OpenaiApiKey)
Db, err := storage.Connect(controller.Dbcfg)
if err != nil {
panic("Failed to connect to database")
}
controller.Db = *Db
return controller
}

View File

@@ -6,6 +6,7 @@ import (
"github.com/gin-gonic/gin"
"gitlab.com/DeveloperDurp/DurpAPI/model"
"gitlab.com/DeveloperDurp/DurpAPI/service"
)
// GetDadJoke godoc
@@ -19,15 +20,40 @@ import (
// @failure 400 {object} model.Message "error"
// @Router /jokes/dadjoke [get]
func (c *Controller) GetDadJoke(ctx *gin.Context) {
joke, err := service.GetRandomDadJoke(c.Db.DB)
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"message": err})
return
}
ctx.JSON(http.StatusOK, gin.H{"message": joke})
}
// PostDadJoke godoc
//
// @Summary Generate dadjoke
// @Description create a dad joke
// @Tags DadJoke
// @Accept json
// @Produce application/json
// @Success 200 {object} model.Message "response"
// @failure 400 {object} model.Message "error"
// @Router /jokes/dadjoke [post]
func (c *Controller) PostDadJoke(ctx *gin.Context) {
var req model.DadJoke
if err := ctx.ShouldBindJSON(&req); err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"message": err})
return
}
message := "test"
// message, err := service.GetDadJoke(req)
// if err != nil {
// ctx.JSON(http.StatusInternalServerError, gin.H{"message": err})
// }
ctx.JSON(http.StatusOK, gin.H{"message": message})
entry := model.DadJoke{
JOKE: req.JOKE,
}
err := c.Db.DB.Create(&entry).Error
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"message": err})
return
}
ctx.JSON(http.StatusOK, gin.H{"message": "OK"})
}