import { findSlugInArray } from "@/utils/slug" import { getAllPostsMeta } from "@/lib/posts" /** * Retrieves all unique categories from the posts and counts the number of posts in each category. * @returns An object where keys are category names and values are the count of posts in that category. */ export function getAllCategories(): Record { const posts = getAllPostsMeta() const categories = {} as Record posts.forEach((post) => { const category = post.category categories[category] = (categories[category] || 0) + 1 }) return categories } /** * Finds a category by its slug. * @param categorySlug - The slug of the category to find. * @returns The original category name if found, otherwise null. */ export function getCategoryBySlug(categorySlug: string): string | null { const categories = getAllCategories() return findSlugInArray(categorySlug, Object.keys(categories)) } /** * Retrieves all posts that belong to a specific category. * @param categorySlug - The slug of the category to filter posts by. * @returns An array of posts that belong to the specified category. */ export function getPostsByCategory(categorySlug: string) { const categories = getAllCategories() const category = findSlugInArray(categorySlug, Object.keys(categories)) if (!category) { return [] } return getAllPostsMeta().filter((post) => post.category === category) }