Files
food-ai/backend/cmd/server/wire.go
dbastrikin 6594013b53 refactor: introduce internal/domain/ layer, rename model.go → entity.go
Move all business-logic packages from internal/ root into internal/domain/:
  auth, cuisine, diary, dish, home, ingredient, language, menu, product,
  recipe, recognition, recommendation, savedrecipe, tag, units, user

Rename model.go → entity.go in packages that hold domain entities:
  diary, dish, home, ingredient, menu, product, recipe, savedrecipe, user

Update all import paths accordingly (adapters, infra/server, cmd/server,
tests). No logic changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 22:12:07 +02:00

117 lines
3.2 KiB
Go

//go:build wireinject
package main
import (
"net/http"
"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/infra/middleware"
"github.com/food-ai/backend/internal/adapters/openai"
"github.com/food-ai/backend/internal/adapters/pexels"
"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/google/wire"
"github.com/jackc/pgx/v5/pgxpool"
)
func initRouter(appConfig *config.Config, pool *pgxpool.Pool) (http.Handler, error) {
wire.Build(
// Config extractors
newOpenAIAPIKey,
newPexelsAPIKey,
newJWTSecret,
newJWTAccessDuration,
newJWTRefreshDuration,
newAllowedOrigins,
newFirebaseCredentialsFile,
// Auth
firebase.NewAuthOrNoop,
newJWTManager,
newJWTAdapter,
newAuthMiddleware,
auth.NewService,
auth.NewHandler,
// User
user.NewRepository,
user.NewService,
user.NewHandler,
// External clients
newOpenAIClient,
newPexelsClient,
// Ingredient
ingredient.NewRepository,
ingredient.NewHandler,
// Product
product.NewRepository,
product.NewHandler,
// Dish
dish.NewRepository,
dish.NewHandler,
// Recipe
recipe.NewRepository,
recipe.NewHandler,
// Saved recipes
savedrecipe.NewRepository,
savedrecipe.NewHandler,
// Menu
menu.NewRepository,
menu.NewHandler,
// Diary
diary.NewRepository,
diary.NewHandler,
// Home
home.NewHandler,
// Recognition & Recommendation
recognition.NewHandler,
recommendation.NewHandler,
// List handlers (DB-backed, injected into router)
newUnitsListHandler,
newCuisineListHandler,
newTagListHandler,
// Router
newRouter,
// Interface bindings
wire.Bind(new(user.UserRepository), new(*user.Repository)),
wire.Bind(new(menu.PhotoSearcher), new(*pexels.Client)),
wire.Bind(new(menu.UserLoader), new(*user.Repository)),
wire.Bind(new(menu.ProductLister), new(*product.Repository)),
wire.Bind(new(menu.RecipeSaver), new(*dish.Repository)),
wire.Bind(new(recommendation.PhotoSearcher), new(*pexels.Client)),
wire.Bind(new(recommendation.UserLoader), new(*user.Repository)),
wire.Bind(new(recommendation.ProductLister), new(*product.Repository)),
wire.Bind(new(recognition.IngredientRepository), new(*ingredient.Repository)),
wire.Bind(new(recognition.Recognizer), new(*openai.Client)),
wire.Bind(new(menu.MenuGenerator), new(*openai.Client)),
wire.Bind(new(recommendation.RecipeGenerator), new(*openai.Client)),
wire.Bind(new(middleware.AccessTokenValidator), new(*jwtAdapter)),
)
return nil, nil
}