1
0
Fork 0
This repository has been archived on 2025-08-23. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
mareshq-backoffice-v1-monolith/lib/content/training.ts
2023-06-27 14:01:32 +02:00

65 lines
1.5 KiB
TypeScript

import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';
type Training = {
metadata: {
id: string;
name: string;
slug: string;
days: number;
weight: number;
draft?: boolean;
logoURL?: string;
svgIconURL?: string;
repositoryURL?: string;
priceOpen: number;
priceCorporate: number;
};
content: string;
};
export type { Training };
const root = process.cwd();
export function getTrainingFiles() {
return fs.readdirSync(path.join(root, 'content', 'training'), 'utf-8');
}
export function getTrainingBySlug(slug: string) {
const source = fs.readFileSync(path.join(root, 'content', 'training', `${slug}.md`), 'utf8');
const { data, content } = matter(source);
return {
metadata: data,
content: content,
};
}
export function getAllTrainingsWithMetadata(): Training[] {
const files = fs.readdirSync(path.join(root, 'content', 'training'))
const trainings = [] as Training[];
for (const fileName of files) {
const source = fs.readFileSync(path.join(root, 'content', 'training', fileName), 'utf8');
const { data: metadata, content: content } = matter(source);
trainings.push({metadata, content} as Training);
}
return trainings;
// return files.reduce((allTrainings, fileName) => {
// const source = fs.readFileSync(path.join(root, 'content', 'training', fileName), 'utf8');
// const training = matter(source);
// return [
// training,
// ...allTrainings,
// ]
// }, [])
}