package posts import ( "context" "lmika.dev/lmika/weiro/models" "lmika.dev/lmika/weiro/providers/db" ) type PostWithCategories struct { *models.Post Categories []*models.Category } func (s *Service) ListPosts(ctx context.Context, showDeleted bool) ([]*PostWithCategories, error) { site, ok := models.GetSite(ctx) if !ok { return nil, models.SiteRequiredError } posts, err := s.db.SelectPostsOfSite(ctx, site.ID, showDeleted, db.PagingParams{ Offset: 0, Limit: 25, }) if err != nil { return nil, err } result := make([]*PostWithCategories, len(posts)) for i, post := range posts { cats, err := s.db.SelectCategoriesOfPost(ctx, post.ID) if err != nil { return nil, err } result[i] = &PostWithCategories{Post: post, Categories: cats} } return result, nil } func (s *Service) GetPost(ctx context.Context, pid int64) (*models.Post, error) { post, _, err := s.fetchPostAndSite(ctx, pid) if err != nil { return nil, err } return post, nil } func (s *Service) GetPostCategories(ctx context.Context, postID int64) ([]*models.Category, error) { return s.db.SelectCategoriesOfPost(ctx, postID) }