weiro/services/posts/list.go
Leon Mika 4c2ce7272d feat: add category selection to post edit form and badges to post list
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:45:28 +11:00

52 lines
1.1 KiB
Go

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)
}