import { promises as fs } from 'fs'; import path from 'path'; import type { Article, CaseStudy, Company, ContentData, Job, Skill } from '@/types/content'; const dataDirectory = path.join(process.cwd(), 'src', 'data', 'json'); export async function getContent(): Promise { const filePath = path.join(dataDirectory, 'content.json'); const jsonData = await fs.readFile(filePath, 'utf8'); return JSON.parse(jsonData); } export async function getArticles(): Promise { const filePath = path.join(dataDirectory, 'articles.json'); const jsonData = await fs.readFile(filePath, 'utf8'); return JSON.parse(jsonData); } export async function getCaseStudies(): Promise { const filePath = path.join(dataDirectory, 'casestudies.json'); const jsonData = await fs.readFile(filePath, 'utf8'); return JSON.parse(jsonData); } export async function getCompanies(): Promise { const filePath = path.join(dataDirectory, 'companies.json'); const jsonData = await fs.readFile(filePath, 'utf8'); return JSON.parse(jsonData); } export async function getJobs(): Promise { const filePath = path.join(dataDirectory, 'jobs.json'); const jsonData = await fs.readFile(filePath, 'utf8'); return JSON.parse(jsonData); } export async function getSkills(): Promise { const filePath = path.join(dataDirectory, 'skills.json'); const jsonData = await fs.readFile(filePath, 'utf8'); return JSON.parse(jsonData); } // Helper function to get a single item by slug export async function getItemBySlug(items: T[], slug: string): Promise { return items.find((item) => item.slug === slug); } // Helper function to get featured articles export async function getFeaturedArticles(): Promise { const articles = await getArticles(); return articles.filter((article) => article.featured); } // Helper function to get latest case studies export async function getLatestCaseStudies(limit: number = 3): Promise { const caseStudies = await getCaseStudies(); return caseStudies .sort((a, b) => new Date(b.publishedOn).getTime() - new Date(a.publishedOn).getTime()) .slice(0, limit); } // Helper function to get latest jobs export async function getLatestJobs(limit: number = 5): Promise { const jobs = await getJobs(); return jobs .sort((a, b) => { const dateA = b.endDate ? new Date(b.endDate).getTime() : Date.now(); const dateB = a.endDate ? new Date(a.endDate).getTime() : Date.now(); return dateA - dateB; }) .slice(0, limit); }