diff --git a/internal/http/graph/clip_resolvers.go b/internal/http/graph/clip_resolvers.go index 7c1b4b6..65d26b7 100644 --- a/internal/http/graph/clip_resolvers.go +++ b/internal/http/graph/clip_resolvers.go @@ -31,37 +31,47 @@ func (r *clipResolver) IsLiked(ctx context.Context, obj *domain.Clip) (bool, err } func (r *clipResolver) Author(ctx context.Context, obj *domain.Clip) (*domain.User, error) { + log.Printf("Resolving author for clip %d, authorID: %d", obj.ID, obj.AuthorID) + if obj.AuthorID == 0 { - log.Printf("ERROR: Clip %d has no author ID", obj.ID) + log.Printf("WARNING: Clip %d has no authorID, returning stub", obj.ID) return &domain.User{ - ID: 0, - Username: "Unknown", - Avatar: "/img/logo.png", + ID: 0, + Username: "Unknown User", + Avatar: "/img/logo.png", + Email: "unknown@example.com", + CreatedAt: time.Now(), + UpdatedAt: time.Now(), }, nil - // Не возвращаем ошибку, чтобы не ломать весь запрос } + // Получаем пользователя из сервиса author, err := r.Services.User.GetByID(ctx, obj.AuthorID) if err != nil { log.Printf("ERROR: Failed to get author %d for clip %d: %v", obj.AuthorID, obj.ID, err) - // Возвращаем заглушку вместо ошибки return &domain.User{ - ID: obj.AuthorID, - Username: "Unknown", - Avatar: "/img/logo.png", + ID: obj.AuthorID, + Username: "Error Loading User", + Avatar: "/img/logo.png", + Email: "error@example.com", + CreatedAt: time.Now(), + UpdatedAt: time.Now(), }, nil } if author == nil { - log.Printf("ERROR: Author %d not found for clip %d", obj.AuthorID, obj.ID) + log.Printf("WARNING: Author %d not found for clip %d", obj.AuthorID, obj.ID) return &domain.User{ - ID: obj.AuthorID, - Username: "Deleted User", - Avatar: "/img/logo.png", + ID: obj.AuthorID, + Username: "Deleted User", + Avatar: "/img/logo.png", + Email: "deleted@example.com", + CreatedAt: time.Now(), + UpdatedAt: time.Now(), }, nil } + log.Printf("Successfully resolved author %d for clip %d", obj.AuthorID, obj.ID) - log.Printf("Successfully resolved author %d for clip %d", author.Avatar, author.ID, author.Username) return author, nil } @@ -248,11 +258,15 @@ func (r *queryResolver) Clips(ctx context.Context, limit *int, offset *int) ([]* clips := r.protoClipsToDomain(resp.Clips) - // Добавьте логирование для дебага + // Детальное логирование log.Printf("Retrieved %d clips from gRPC service", len(clips)) for i, clip := range clips { - log.Printf("Clip %d: ID=%d, Title=%s, VideoURL=%s, AuthorID=%d", - i, clip.ID, clip.Title, clip.VideoURL, clip.AuthorID) + log.Printf("Clip %d: ID=%d, Title=%s, AuthorID=%d", i, clip.ID, clip.Title, clip.AuthorID) + + // Проверяем, что AuthorID заполнен + if clip.AuthorID == 0 { + log.Printf("ERROR: Clip %d has AuthorID=0!", clip.ID) + } } return clips, nil