blog/backend/internal/adapter/controller/query_posts_controller.go
SquidSpirit a4394eea9e
All checks were successful
Frontend CI / build (push) Successful in 1m56s
BLOG-43 feat: get all posts
2025-03-28 00:02:34 +08:00

34 lines
925 B
Go

package controller
import (
"git.squidspirit.com/squid/blog.git/backend/internal/adapter/controller/graphdto"
"git.squidspirit.com/squid/blog.git/backend/internal/application"
"git.squidspirit.com/squid/blog.git/backend/internal/domain"
"github.com/thoas/go-funk"
)
type QueryPostsController interface {
Handle() ([]*graphdto.Post, error)
}
type queryPostsControllerImpl struct {
getAllPostsUseCase application.GetAllPostsUseCase
}
func NewQueryPostsController(getAllPostsUseCase application.GetAllPostsUseCase) QueryPostsController {
return &queryPostsControllerImpl{
getAllPostsUseCase: getAllPostsUseCase,
}
}
func (c *queryPostsControllerImpl) Handle() ([]*graphdto.Post, error) {
entities, err := c.getAllPostsUseCase.Execute()
if err != nil {
return nil, err
}
return funk.Map(entities, func(entity *domain.Post) *graphdto.Post {
return graphdto.NewPostDTO(entity)
}).([]*graphdto.Post), nil
}