package admin import ( "context" "errors" "github.com/google/uuid" "github.com/jackc/pgx/v5" "github.com/yuxingu/digital-psychology/apps/api/internal/repository" ) var ErrBannerNotFound = errString("banner not found") var ErrFeedSlotNotFound = errString("feed slot not found") // ListBanners returns OpsCMS Banner catalog. func (s *Service) ListBanners(ctx context.Context) ([]repository.BannerRow, error) { items, err := s.Repo.ListBanners(ctx) if err != nil { return nil, err } if items == nil { items = []repository.BannerRow{} } return items, nil } // GetBanner loads one banner. func (s *Service) GetBanner(ctx context.Context, id uuid.UUID) (*repository.BannerRow, error) { row, err := s.Repo.GetBanner(ctx, id) if errors.Is(err, pgx.ErrNoRows) { return nil, ErrBannerNotFound } return row, err } // ListFeedSlots returns OpsCMS FeedSlot catalog. func (s *Service) ListFeedSlots(ctx context.Context) ([]repository.FeedSlotRow, error) { items, err := s.Repo.ListFeedSlots(ctx) if err != nil { return nil, err } if items == nil { items = []repository.FeedSlotRow{} } return items, nil } // GetFeedSlot loads one feed slot. func (s *Service) GetFeedSlot(ctx context.Context, id uuid.UUID) (*repository.FeedSlotRow, error) { row, err := s.Repo.GetFeedSlot(ctx, id) if errors.Is(err, pgx.ErrNoRows) { return nil, ErrFeedSlotNotFound } return row, err }