mirror of
https://github.com/hazemKrimi/personal-website.git
synced 2026-05-01 18:00:26 +00:00
Add helper functions to fetch portfolio projects data
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import matter from 'gray-matter';
|
||||
|
||||
const portfolioProjects = path.join(process.cwd(), '_portfolio');
|
||||
|
||||
export const getPortfolioProjects = () => {
|
||||
const fileNames = fs.readdirSync(portfolioProjects);
|
||||
|
||||
const allPortfolioProjectsData = fileNames.map(filename => {
|
||||
const slug = filename.replace('.mdx', '');
|
||||
|
||||
const fullPath = path.join(portfolioProjects, filename);
|
||||
const fileContents = fs.readFileSync(fullPath, 'utf8');
|
||||
const { data } = matter(fileContents);
|
||||
|
||||
const options = { month: 'long', day: 'numeric', year: 'numeric' };
|
||||
const formattedDate = new Date(data.date).toLocaleDateString('en-IN', options);
|
||||
|
||||
const frontmatter = {
|
||||
...data,
|
||||
date: formattedDate
|
||||
};
|
||||
return {
|
||||
slug,
|
||||
...frontmatter
|
||||
};
|
||||
});
|
||||
|
||||
return allPortfolioProjectsData.sort((a, b) => {
|
||||
if (new Date(a.date) < new Date(b.date)) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const getPortfolioPorjectsSlugs = () => {
|
||||
const fileNames = fs.readdirSync(portfolioProjects);
|
||||
|
||||
return fileNames.map(filename => {
|
||||
return {
|
||||
params: {
|
||||
slug: filename.replace('.mdx', '')
|
||||
}
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
export const getPortfolioProjectdata = async (slug: string) => {
|
||||
const fullPath = path.join(portfolioProjects, `${slug}.mdx`);
|
||||
const postContent = fs.readFileSync(fullPath, 'utf8');
|
||||
|
||||
return postContent;
|
||||
};
|
||||
Reference in New Issue
Block a user