dia-gov's picture
Upload 569 files
cd6f98e verified
raw
history blame
1.28 kB
import fs from "fs";
import path from "path";
import matter from "gray-matter";
// Define the types for the data
export interface SlugData {
id: string;
date: string;
[key: string]: string;
}
const postsDirectory = path.join(process.cwd(), "posts");
export function getSortedPostsData(): SlugData[] {
const fileNames = fs.readdirSync(postsDirectory);
const allPostsData: SlugData[] = fileNames.map((fileName) => {
const id = fileName.replace(/\.mdx$/, "");
const fullPath = path.join(postsDirectory, fileName);
const fileContents = fs.readFileSync(fullPath, "utf8");
const matterResult = matter(fileContents);
return {
id,
date: matterResult.data.date as string,
...matterResult.data,
};
});
return allPostsData.sort((a, b) => {
if (a.date < b.date) {
return 1;
} else {
return -1;
}
});
}
export interface PostData {
slug: string;
content: string;
[key: string]: string;
}
export function getPostData(slug: string): PostData {
const fullPath = path.join(postsDirectory, `${slug}.mdx`);
const fileContents = fs.readFileSync(fullPath, "utf8");
const matterResult = matter(fileContents);
return {
slug,
...matterResult.data,
content: matterResult.content,
};
}