From aedd6413a7eee41a0d710c477ba55996c43b3e0f Mon Sep 17 00:00:00 2001 From: mohamed yahia Date: Tue, 28 Nov 2023 15:53:18 +0200 Subject: [PATCH] [ #53 , JSON output option ] (#73) * [ #53 , JSON output to disk] write file objects to files.json --- .changeset/rotten-apes-cross.md | 5 +++++ .gitignore | 1 + src/lib/markdowndb.ts | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 .changeset/rotten-apes-cross.md 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}`); + } +}