This repository has no description
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import { getPayloadInstance } from './payload'import type { Post, Tag } from '@/payload-types'
export async function listPosts(opts: { limit?: number; page?: number; tag?: string } = {}) { const payload = await getPayloadInstance() const where: Record<string, unknown> = { _status: { equals: 'published' } } if (opts.tag) where['tags.slug'] = { equals: opts.tag } return payload.find({ collection: 'posts', where, sort: '-publishDate', limit: opts.limit ?? 8, page: opts.page ?? 1, depth: 1, })}
export async function getPostBySlug(slug: string): Promise<Post | undefined> { const payload = await getPayloadInstance() const r = await payload.find({ collection: 'posts', where: { slug: { equals: slug } }, limit: 1, depth: 2, }) return r.docs[0]}
export async function listAllPostSlugs(): Promise<string[]> { const payload = await getPayloadInstance() const r = await payload.find({ collection: 'posts', where: { _status: { equals: 'published' } }, limit: 0, pagination: false, }) return r.docs.map((d) => d.slug)}
export async function listAllTags(): Promise<{ tag: Tag; count: number }[]> { const payload = await getPayloadInstance() const tags = await payload.find({ collection: 'tags', limit: 0, pagination: false }) const counts = await Promise.all( tags.docs.map(async (t) => { const r = await payload.count({ collection: 'posts', where: { 'tags.slug': { equals: t.slug }, _status: { equals: 'published' } }, }) return { tag: t, count: r.totalDocs } }), ) return counts.filter((c) => c.count > 0)}