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>
This commit is contained in:
dbastrikin
2026-03-15 22:12:07 +02:00
parent 6548f868c3
commit 6594013b53
58 changed files with 73 additions and 73 deletions

View File

@@ -4,26 +4,26 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
"github.com/food-ai/backend/internal/infra/config" "github.com/food-ai/backend/internal/infra/config"
"github.com/food-ai/backend/internal/diary" "github.com/food-ai/backend/internal/domain/diary"
"github.com/food-ai/backend/internal/dish" "github.com/food-ai/backend/internal/domain/dish"
"github.com/food-ai/backend/internal/adapters/openai" "github.com/food-ai/backend/internal/adapters/openai"
"github.com/food-ai/backend/internal/home" "github.com/food-ai/backend/internal/domain/home"
"github.com/food-ai/backend/internal/ingredient" "github.com/food-ai/backend/internal/domain/ingredient"
"github.com/food-ai/backend/internal/menu" "github.com/food-ai/backend/internal/domain/menu"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/adapters/pexels" "github.com/food-ai/backend/internal/adapters/pexels"
"github.com/food-ai/backend/internal/product" "github.com/food-ai/backend/internal/domain/product"
"github.com/food-ai/backend/internal/recipe" "github.com/food-ai/backend/internal/domain/recipe"
"github.com/food-ai/backend/internal/recognition" "github.com/food-ai/backend/internal/domain/recognition"
"github.com/food-ai/backend/internal/recommendation" "github.com/food-ai/backend/internal/domain/recommendation"
"github.com/food-ai/backend/internal/savedrecipe" "github.com/food-ai/backend/internal/domain/savedrecipe"
"github.com/food-ai/backend/internal/cuisine" "github.com/food-ai/backend/internal/domain/cuisine"
"github.com/food-ai/backend/internal/infra/server" "github.com/food-ai/backend/internal/infra/server"
"github.com/food-ai/backend/internal/tag" "github.com/food-ai/backend/internal/domain/tag"
"github.com/food-ai/backend/internal/units" "github.com/food-ai/backend/internal/domain/units"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
) )

View File

@@ -5,23 +5,23 @@ package main
import ( import (
"net/http" "net/http"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
"github.com/food-ai/backend/internal/adapters/firebase" "github.com/food-ai/backend/internal/adapters/firebase"
"github.com/food-ai/backend/internal/infra/config" "github.com/food-ai/backend/internal/infra/config"
"github.com/food-ai/backend/internal/diary" "github.com/food-ai/backend/internal/domain/diary"
"github.com/food-ai/backend/internal/dish" "github.com/food-ai/backend/internal/domain/dish"
"github.com/food-ai/backend/internal/home" "github.com/food-ai/backend/internal/domain/home"
"github.com/food-ai/backend/internal/ingredient" "github.com/food-ai/backend/internal/domain/ingredient"
"github.com/food-ai/backend/internal/menu" "github.com/food-ai/backend/internal/domain/menu"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/adapters/openai" "github.com/food-ai/backend/internal/adapters/openai"
"github.com/food-ai/backend/internal/adapters/pexels" "github.com/food-ai/backend/internal/adapters/pexels"
"github.com/food-ai/backend/internal/product" "github.com/food-ai/backend/internal/domain/product"
"github.com/food-ai/backend/internal/recipe" "github.com/food-ai/backend/internal/domain/recipe"
"github.com/food-ai/backend/internal/recognition" "github.com/food-ai/backend/internal/domain/recognition"
"github.com/food-ai/backend/internal/recommendation" "github.com/food-ai/backend/internal/domain/recommendation"
"github.com/food-ai/backend/internal/savedrecipe" "github.com/food-ai/backend/internal/domain/savedrecipe"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
"github.com/google/wire" "github.com/google/wire"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
) )

View File

@@ -7,20 +7,20 @@
package main package main
import ( import (
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
"github.com/food-ai/backend/internal/adapters/firebase" "github.com/food-ai/backend/internal/adapters/firebase"
"github.com/food-ai/backend/internal/infra/config" "github.com/food-ai/backend/internal/infra/config"
"github.com/food-ai/backend/internal/diary" "github.com/food-ai/backend/internal/domain/diary"
"github.com/food-ai/backend/internal/dish" "github.com/food-ai/backend/internal/domain/dish"
"github.com/food-ai/backend/internal/home" "github.com/food-ai/backend/internal/domain/home"
"github.com/food-ai/backend/internal/ingredient" "github.com/food-ai/backend/internal/domain/ingredient"
"github.com/food-ai/backend/internal/menu" "github.com/food-ai/backend/internal/domain/menu"
"github.com/food-ai/backend/internal/product" "github.com/food-ai/backend/internal/domain/product"
"github.com/food-ai/backend/internal/recipe" "github.com/food-ai/backend/internal/domain/recipe"
"github.com/food-ai/backend/internal/recognition" "github.com/food-ai/backend/internal/domain/recognition"
"github.com/food-ai/backend/internal/recommendation" "github.com/food-ai/backend/internal/domain/recommendation"
"github.com/food-ai/backend/internal/savedrecipe" "github.com/food-ai/backend/internal/domain/savedrecipe"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"net/http" "net/http"
) )

View File

@@ -11,7 +11,7 @@ import (
firebaseAuth "firebase.google.com/go/v4/auth" firebaseAuth "firebase.google.com/go/v4/auth"
"google.golang.org/api/option" "google.golang.org/api/option"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
) )
// Auth is the Firebase-backed implementation of auth.TokenVerifier. // Auth is the Firebase-backed implementation of auth.TokenVerifier.

View File

@@ -4,7 +4,7 @@ import (
"context" "context"
"fmt" "fmt"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
) )
type Service struct { type Service struct {

View File

@@ -11,10 +11,10 @@ import (
"time" "time"
"github.com/food-ai/backend/internal/adapters/ai" "github.com/food-ai/backend/internal/adapters/ai"
"github.com/food-ai/backend/internal/dish" "github.com/food-ai/backend/internal/domain/dish"
"github.com/food-ai/backend/internal/infra/locale" "github.com/food-ai/backend/internal/infra/locale"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
) )

View File

@@ -10,7 +10,7 @@ import (
"github.com/food-ai/backend/internal/adapters/ai" "github.com/food-ai/backend/internal/adapters/ai"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/ingredient" "github.com/food-ai/backend/internal/domain/ingredient"
) )
// IngredientRepository is the subset of ingredient.Repository used by this handler. // IngredientRepository is the subset of ingredient.Repository used by this handler.

View File

@@ -11,7 +11,7 @@ import (
"github.com/food-ai/backend/internal/adapters/ai" "github.com/food-ai/backend/internal/adapters/ai"
"github.com/food-ai/backend/internal/infra/locale" "github.com/food-ai/backend/internal/infra/locale"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
) )
// PhotoSearcher can search for a photo by text query. // PhotoSearcher can search for a photo by text query.

View File

@@ -6,7 +6,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/food-ai/backend/internal/dish" "github.com/food-ai/backend/internal/domain/dish"
"github.com/food-ai/backend/internal/infra/locale" "github.com/food-ai/backend/internal/infra/locale"
"github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"

View File

@@ -4,7 +4,7 @@ import (
"context" "context"
"time" "time"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
) )
type MockUserRepository struct { type MockUserRepository struct {

View File

@@ -4,20 +4,20 @@ import (
"encoding/json" "encoding/json"
"net/http" "net/http"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
"github.com/food-ai/backend/internal/diary" "github.com/food-ai/backend/internal/domain/diary"
"github.com/food-ai/backend/internal/dish" "github.com/food-ai/backend/internal/domain/dish"
"github.com/food-ai/backend/internal/home" "github.com/food-ai/backend/internal/domain/home"
"github.com/food-ai/backend/internal/ingredient" "github.com/food-ai/backend/internal/domain/ingredient"
"github.com/food-ai/backend/internal/language" "github.com/food-ai/backend/internal/domain/language"
"github.com/food-ai/backend/internal/menu" "github.com/food-ai/backend/internal/domain/menu"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/recipe" "github.com/food-ai/backend/internal/domain/recipe"
"github.com/food-ai/backend/internal/product" "github.com/food-ai/backend/internal/domain/product"
"github.com/food-ai/backend/internal/recognition" "github.com/food-ai/backend/internal/domain/recognition"
"github.com/food-ai/backend/internal/recommendation" "github.com/food-ai/backend/internal/domain/recommendation"
"github.com/food-ai/backend/internal/savedrecipe" "github.com/food-ai/backend/internal/domain/savedrecipe"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
) )

View File

@@ -11,11 +11,11 @@ import (
"testing" "testing"
"time" "time"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
"github.com/food-ai/backend/internal/auth/mocks" "github.com/food-ai/backend/internal/domain/auth/mocks"
"github.com/food-ai/backend/internal/infra/middleware" "github.com/food-ai/backend/internal/infra/middleware"
"github.com/food-ai/backend/internal/testutil" "github.com/food-ai/backend/internal/testutil"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
) )

View File

@@ -4,7 +4,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
) )
func TestGenerateAccessToken(t *testing.T) { func TestGenerateAccessToken(t *testing.T) {

View File

@@ -6,10 +6,10 @@ import (
"testing" "testing"
"time" "time"
"github.com/food-ai/backend/internal/auth" "github.com/food-ai/backend/internal/domain/auth"
"github.com/food-ai/backend/internal/auth/mocks" "github.com/food-ai/backend/internal/domain/auth/mocks"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
umocks "github.com/food-ai/backend/internal/user/mocks" umocks "github.com/food-ai/backend/internal/domain/user/mocks"
) )
func newTestService(verifier *mocks.MockTokenVerifier, repo *umocks.MockUserRepository) *auth.Service { func newTestService(verifier *mocks.MockTokenVerifier, repo *umocks.MockUserRepository) *auth.Service {

View File

@@ -6,7 +6,7 @@ import (
"context" "context"
"testing" "testing"
"github.com/food-ai/backend/internal/ingredient" "github.com/food-ai/backend/internal/domain/ingredient"
"github.com/food-ai/backend/internal/infra/locale" "github.com/food-ai/backend/internal/infra/locale"
"github.com/food-ai/backend/internal/testutil" "github.com/food-ai/backend/internal/testutil"
) )

View File

@@ -6,7 +6,7 @@ import (
"context" "context"
"testing" "testing"
"github.com/food-ai/backend/internal/recipe" "github.com/food-ai/backend/internal/domain/recipe"
"github.com/food-ai/backend/internal/testutil" "github.com/food-ai/backend/internal/testutil"
) )

View File

@@ -4,7 +4,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
) )
func ptr[T any](v T) *T { return &v } func ptr[T any](v T) *T { return &v }

View File

@@ -9,7 +9,7 @@ import (
"time" "time"
"github.com/food-ai/backend/internal/testutil" "github.com/food-ai/backend/internal/testutil"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
) )
func TestRepository_UpsertByFirebaseUID_Insert(t *testing.T) { func TestRepository_UpsertByFirebaseUID_Insert(t *testing.T) {

View File

@@ -7,7 +7,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/food-ai/backend/internal/user" "github.com/food-ai/backend/internal/domain/user"
) )
func ptrStr(s string) *string { return &s } func ptrStr(s string) *string { return &s }

BIN
examples/dishes/dish1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
examples/dishes/dish2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB