diff --git a/.changeset/rotten-apes-cross.md b/.changeset/rotten-apes-cross.md new file mode 100644 index 0000000..ed14249 --- /dev/null +++ b/.changeset/rotten-apes-cross.md @@ -0,0 +1,5 @@ +--- +"mddb": minor +--- + +[ #53 , JSON output option ] Implemented functionality to write file JSON output to disk diff --git a/.gitignore b/.gitignore index 5134202..206c723 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules/ dist/ markdown.db *.tgz +.markdowndb/ diff --git a/src/lib/markdowndb.ts b/src/lib/markdowndb.ts index 4920a25..39754e5 100644 --- a/src/lib/markdowndb.ts +++ b/src/lib/markdowndb.ts @@ -11,6 +11,7 @@ import { mapFileTagsToInsert, getUniqueValues, } from "./databaseUtils.js"; +import fs from "fs"; const defaultFilePathToUrl = (filePath: string) => { let url = filePath @@ -76,6 +77,7 @@ export class MarkdownDB { .filter(isLinkToDefined); const fileTagsToInsert = fileObjects.flatMap(mapFileTagsToInsert); + writeJsonToFile(".markdowndb/files.json", fileObjects); await MddbFile.batchInsert(this.db, filesToInsert); await MddbTag.batchInsert(this.db, tagsToInsert); await MddbFileTag.batchInsert(this.db, fileTagsToInsert); @@ -191,3 +193,17 @@ export class MarkdownDB { this.db.destroy(); } } + +function writeJsonToFile(filePath: string, jsonData: any[]) { + try { + const directory = path.dirname(filePath); + if (!fs.existsSync(directory)) { + fs.mkdirSync(directory, { recursive: true }); + } + + const jsonString = JSON.stringify(jsonData, null, 2); + fs.writeFileSync(filePath, jsonString); + } catch (error: any) { + console.error(`Error writing data to ${filePath}: ${error}`); + } +}