However, everything seems really slow now... 950ms for a page request? Something is wrong, just not sure what yet.
137 lines
4.4 KiB
Go
137 lines
4.4 KiB
Go
package handlers
|
|
|
|
// DEPRECATED: As of September 4th, 2025.
|
|
// const CREATE_ERROR_HTML = `
|
|
// <p id="response" class="text-sm text-red-500 px-4 py-1 bg-red-100 rounded-full w-fit">
|
|
// Uh oh! Something went wrong when creating your recipe. Please try again. %s
|
|
// </p>
|
|
// `
|
|
|
|
// DEPRECATED: As of September 4th, 2025.
|
|
// func CreateRecipe(ctx *gin.Context) {
|
|
// deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
//
|
|
// recipe, err := deps.RecipeService.CreateRecipe(ctx)
|
|
// if err != nil {
|
|
// components.RenderErrorBanner(ctx, err.Error())
|
|
// ctx.String(http.StatusOK, CREATE_ERROR_HTML, err.Error())
|
|
// return
|
|
// }
|
|
//
|
|
// // Send HTMX redirection
|
|
// url := fmt.Sprintf(domain.WEB_RECIPE, recipe.Id)
|
|
// ctx.Header("HX-Redirect", url)
|
|
// ctx.Status(http.StatusCreated)
|
|
// }
|
|
|
|
// toBits converts an array of stringified numbers into a single summed value
|
|
//
|
|
// DEPRECATED: As of September 4th, 2025.
|
|
// func toBits(arr []string) (bits int) {
|
|
// for _, x := range arr {
|
|
// num, _ := strconv.Atoi(x)
|
|
// bits += num
|
|
// }
|
|
// return
|
|
// }
|
|
|
|
// DEPRECATED: As of September 4th, 2025.
|
|
// func SearchRecipes(ctx *gin.Context) {
|
|
// deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
//
|
|
// // create filters
|
|
// filters := domainRecipe.SearchFilters{
|
|
// Search: ctx.PostForm("search"), // string, search query for titles
|
|
// MealType: toBits(ctx.PostFormArray("meal")),
|
|
// Time: toBits(ctx.PostFormArray("time")),
|
|
// Difficulty: toBits(ctx.PostFormArray("difficulty")),
|
|
// ServingSize: toBits(ctx.PostFormArray("serving")),
|
|
// }
|
|
//
|
|
// // Set the filters into the cookies, so they can be reloaded
|
|
// if bytes, err := json.Marshal(filters); err == nil {
|
|
// domain.SetCookie(ctx, "search-filters", string(bytes), time.Hour*24)
|
|
// // ctx.SetCookie(
|
|
// // "search-filters",
|
|
// // string(bytes),
|
|
// // int(time.Now().Add(24*time.Hour).Sub(time.Now()).Seconds()),
|
|
// // "/",
|
|
// // true,
|
|
// // )
|
|
// }
|
|
//
|
|
// redirect := ctx.PostForm("redirect")
|
|
// if redirect == "true" {
|
|
// ctx.Header("HX-Redirect", domain.WEB_SEARCH)
|
|
// ctx.Status(http.StatusOK)
|
|
// return
|
|
// }
|
|
//
|
|
// // Get user if logged in, so we can get favorite status
|
|
// var userId *int = nil
|
|
// if domain.IsLoggedIn(ctx) {
|
|
// id := ctx.MustGet("userId").(int)
|
|
// userId = &id
|
|
// }
|
|
//
|
|
// // TODO: Not sure if we need to ensure the user is valid here
|
|
//
|
|
// // We don't care about favorite status, so use false
|
|
// recipes, err := deps.RecipeService.SearchRecipes(filters, userId, false)
|
|
// if err != nil {
|
|
// components.RenderErrorBanner(ctx, err.Error())
|
|
// ctx.JSON(http.StatusOK, gin.H{"error": err.Error()})
|
|
// }
|
|
//
|
|
// // Render content as the response
|
|
// ctx.Status(200)
|
|
// templates.ResultList(recipes).Render(ctx.Request.Context(), ctx.Writer)
|
|
// }
|
|
|
|
// DEPRECATED: As of September 4th, 2025.
|
|
// func SearchRecipesFavorites(ctx *gin.Context) {
|
|
// deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
//
|
|
// // create filters
|
|
// filters := domainRecipe.SearchFilters{
|
|
// Search: ctx.PostForm("search"), // string, search query for titles
|
|
// MealType: toBits(ctx.PostFormArray("meal")),
|
|
// Time: toBits(ctx.PostFormArray("time")),
|
|
// Difficulty: toBits(ctx.PostFormArray("difficulty")),
|
|
// ServingSize: toBits(ctx.PostFormArray("serving")),
|
|
// }
|
|
//
|
|
// // Set the filters into the cookies, so they can be reloaded
|
|
// if bytes, err := json.Marshal(filters); err == nil {
|
|
// domain.SetCookie(ctx, "search-filters", string(bytes), time.Hour*24)
|
|
// // ctx.SetCookie(
|
|
// // "search-filters",
|
|
// // string(bytes),
|
|
// // int(time.Now().Add(24*time.Hour).Sub(time.Now()).Seconds()),
|
|
// // "/",
|
|
// // "", // TODO: Need an actual domain
|
|
// // false, // TODO: True in prod
|
|
// // true,
|
|
// // )
|
|
// }
|
|
//
|
|
// // TODO: Error here if they're not logged in?
|
|
// // Get user data (they should be logged in)
|
|
// if !domain.IsLoggedIn(ctx) {
|
|
// components.RenderErrorBanner(ctx, "User is not logged in. User will be nil.")
|
|
// ctx.JSON(http.StatusOK, gin.H{"error": "User is not logged in. User will be nil."})
|
|
// }
|
|
//
|
|
// userId := ctx.MustGet("userId").(int)
|
|
//
|
|
// recipes, err := deps.RecipeService.SearchRecipes(filters, &userId, true)
|
|
// if err != nil {
|
|
// components.RenderErrorBanner(ctx, err.Error())
|
|
// ctx.JSON(http.StatusOK, gin.H{"error": err.Error()})
|
|
// }
|
|
//
|
|
// // Render content as the response
|
|
// ctx.Status(200)
|
|
// templates.FavoriteList(recipes).Render(ctx.Request.Context(), ctx.Writer)
|
|
// }
|