Remove denormalized columns (name, calories, protein_g, fat_g, carbs_g) from meal_diary. Name is now resolved via JOIN with dishes/dish_translations; macros are computed as recipe.*_per_serving * portions at query time. - Add dish.Repository.FindOrCreateRecipe: finds or creates a minimal recipe stub seeded with AI-estimated macros - recognition/handler: resolve recipe_id synchronously per candidate; simplify enrichDishInBackground to translations-only - diary/handler: accept dish_id OR name; always resolve recipe_id via FindOrCreateRecipe before INSERT - diary/entity: DishID is now non-nullable string; CreateRequest drops macros - diary/repository: ListByDate and Create use JOIN to return computed macros - ai/types: add RecipeID field to DishCandidate - Update tests and wire_gen accordingly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
75 lines
3.5 KiB
Go
75 lines
3.5 KiB
Go
// Code generated by Wire. DO NOT EDIT.
|
|
|
|
//go:generate go run -mod=mod github.com/google/wire/cmd/wire
|
|
//go:build !wireinject
|
|
// +build !wireinject
|
|
|
|
package main
|
|
|
|
import (
|
|
"github.com/food-ai/backend/internal/domain/auth"
|
|
"github.com/food-ai/backend/internal/adapters/firebase"
|
|
"github.com/food-ai/backend/internal/infra/config"
|
|
"github.com/food-ai/backend/internal/domain/diary"
|
|
"github.com/food-ai/backend/internal/domain/dish"
|
|
"github.com/food-ai/backend/internal/domain/home"
|
|
"github.com/food-ai/backend/internal/domain/ingredient"
|
|
"github.com/food-ai/backend/internal/domain/menu"
|
|
"github.com/food-ai/backend/internal/domain/product"
|
|
"github.com/food-ai/backend/internal/domain/recipe"
|
|
"github.com/food-ai/backend/internal/domain/recognition"
|
|
"github.com/food-ai/backend/internal/domain/recommendation"
|
|
"github.com/food-ai/backend/internal/domain/savedrecipe"
|
|
"github.com/food-ai/backend/internal/domain/user"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
"net/http"
|
|
)
|
|
|
|
// Injectors from wire.go:
|
|
|
|
func initRouter(appConfig *config.Config, pool *pgxpool.Pool) (http.Handler, error) {
|
|
string2 := newFirebaseCredentialsFile(appConfig)
|
|
tokenVerifier, err := firebase.NewAuthOrNoop(string2)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
repository := user.NewRepository(pool)
|
|
mainJwtSecret := newJWTSecret(appConfig)
|
|
mainJwtAccessDuration := newJWTAccessDuration(appConfig)
|
|
mainJwtRefreshDuration := newJWTRefreshDuration(appConfig)
|
|
jwtManager := newJWTManager(mainJwtSecret, mainJwtAccessDuration, mainJwtRefreshDuration)
|
|
service := auth.NewService(tokenVerifier, repository, jwtManager)
|
|
handler := auth.NewHandler(service)
|
|
userService := user.NewService(repository)
|
|
userHandler := user.NewHandler(userService)
|
|
mainGeminiAPIKey := newOpenAIAPIKey(appConfig)
|
|
client := newOpenAIClient(mainGeminiAPIKey)
|
|
mainPexelsAPIKey := newPexelsAPIKey(appConfig)
|
|
pexelsClient := newPexelsClient(mainPexelsAPIKey)
|
|
productRepository := product.NewRepository(pool)
|
|
recommendationHandler := recommendation.NewHandler(client, pexelsClient, repository, productRepository)
|
|
dishRepository := dish.NewRepository(pool)
|
|
savedrecipeRepository := savedrecipe.NewRepository(pool, dishRepository)
|
|
savedrecipeHandler := savedrecipe.NewHandler(savedrecipeRepository)
|
|
ingredientRepository := ingredient.NewRepository(pool)
|
|
ingredientHandler := ingredient.NewHandler(ingredientRepository)
|
|
productHandler := product.NewHandler(productRepository)
|
|
recognitionHandler := recognition.NewHandler(client, ingredientRepository, dishRepository)
|
|
menuRepository := menu.NewRepository(pool)
|
|
menuHandler := menu.NewHandler(menuRepository, client, pexelsClient, repository, productRepository, dishRepository)
|
|
diaryRepository := diary.NewRepository(pool)
|
|
diaryHandler := diary.NewHandler(diaryRepository, dishRepository, dishRepository)
|
|
homeHandler := home.NewHandler(pool)
|
|
dishHandler := dish.NewHandler(dishRepository)
|
|
recipeRepository := recipe.NewRepository(pool)
|
|
recipeHandler := recipe.NewHandler(recipeRepository)
|
|
mainJwtAdapter := newJWTAdapter(jwtManager)
|
|
v := newAuthMiddleware(mainJwtAdapter)
|
|
mainAllowedOrigins := newAllowedOrigins(appConfig)
|
|
mainUnitsListHandler := newUnitsListHandler(pool)
|
|
mainCuisineListHandler := newCuisineListHandler(pool)
|
|
mainTagListHandler := newTagListHandler(pool)
|
|
httpHandler := newRouter(pool, handler, userHandler, recommendationHandler, savedrecipeHandler, ingredientHandler, productHandler, recognitionHandler, menuHandler, diaryHandler, homeHandler, dishHandler, recipeHandler, v, mainAllowedOrigins, mainUnitsListHandler, mainCuisineListHandler, mainTagListHandler)
|
|
return httpHandler, nil
|
|
}
|