refactor: restructure internal/ into adapters/, infra/, and app layers

- internal/gemini/ → internal/adapters/openai/ (renamed package to openai)
- internal/pexels/ → internal/adapters/pexels/
- internal/config/   → internal/infra/config/
- internal/database/ → internal/infra/database/
- internal/locale/   → internal/infra/locale/
- internal/middleware/ → internal/infra/middleware/
- internal/server/   → internal/infra/server/

All import paths and call sites updated accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
dbastrikin
2026-03-15 21:10:37 +02:00
parent b427576629
commit 19a985ad49
44 changed files with 87 additions and 87 deletions

View File

@@ -8,9 +8,9 @@ import (
"strconv"
"sync"
"github.com/food-ai/backend/internal/gemini"
"github.com/food-ai/backend/internal/locale"
"github.com/food-ai/backend/internal/middleware"
"github.com/food-ai/backend/internal/adapters/openai"
"github.com/food-ai/backend/internal/infra/locale"
"github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/user"
)
@@ -37,16 +37,16 @@ type userPreferences struct {
// Handler handles GET /recommendations.
type Handler struct {
gemini *gemini.Client
openaiClient *openai.Client
pexels PhotoSearcher
userLoader UserLoader
productLister ProductLister
}
// NewHandler creates a new Handler.
func NewHandler(geminiClient *gemini.Client, pexels PhotoSearcher, userLoader UserLoader, productLister ProductLister) *Handler {
func NewHandler(openaiClient *openai.Client, pexels PhotoSearcher, userLoader UserLoader, productLister ProductLister) *Handler {
return &Handler{
gemini: geminiClient,
openaiClient: openaiClient,
pexels: pexels,
userLoader: userLoader,
productLister: productLister,
@@ -84,7 +84,7 @@ func (h *Handler) GetRecommendations(w http.ResponseWriter, r *http.Request) {
slog.Warn("load products for recommendations", "user_id", userID, "err", err)
}
recipes, err := h.gemini.GenerateRecipes(r.Context(), req)
recipes, err := h.openaiClient.GenerateRecipes(r.Context(), req)
if err != nil {
slog.Error("generate recipes", "user_id", userID, "err", err)
writeErrorJSON(w, http.StatusServiceUnavailable, "recipe generation failed, please try again")
@@ -109,8 +109,8 @@ func (h *Handler) GetRecommendations(w http.ResponseWriter, r *http.Request) {
writeJSON(w, http.StatusOK, recipes)
}
func buildRecipeRequest(u *user.User, count int, lang string) gemini.RecipeRequest {
req := gemini.RecipeRequest{
func buildRecipeRequest(u *user.User, count int, lang string) openai.RecipeRequest {
req := openai.RecipeRequest{
Count: count,
DailyCalories: 2000, // sensible default
Lang: lang,