diff --git a/electron/core/db.ts b/electron/core/db.ts index fd21a48..4a5a758 100644 --- a/electron/core/db.ts +++ b/electron/core/db.ts @@ -1,6 +1,27 @@ import path from "node:path"; +import { JSONFilePreset } from "lowdb/node"; +import { app } from "electron"; +import { fileURLToPath } from "node:url"; -// const db = await JSONFilePreset("db.json", { posts: [] }); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); -// const post = { id: 1, title: "lowdb is awesome", views: 100 }; -// await db.update(({ posts }) => posts.push(post)); +const initDb = async () => { + // Read or create db.json + const defaultData = { posts: [] }; + const db = await JSONFilePreset( + path.join(app.getPath("userData"), "db.json"), + defaultData + ); + + // Update db.json + await db.update(({ posts }) => posts.push("hello world")); + + // Alternatively you can call db.write() explicitely later + // to write to db.json + db.data.posts.push("hello world"); + await db.write(); + + console.log(db); +}; + +initDb(); diff --git a/package.json b/package.json index df2cc56..7e9ce8f 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "electron-store": "^10.0.0", "flexlayout-react": "^0.7.15", "framer-motion": "^11.3.24", + "lowdb": "^7.0.1", "lucide-react": "^0.408.0", "object-hash": "^3.0.0", "onnxruntime-node": "^1.18.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3fded6..fbca97d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,6 +77,9 @@ importers: framer-motion: specifier: ^11.3.24 version: 11.3.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + lowdb: + specifier: ^7.0.1 + version: 7.0.1 lucide-react: specifier: ^0.408.0 version: 0.408.0(react@18.3.1) @@ -2656,6 +2659,10 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + lowdb@7.0.1: + resolution: {integrity: sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==} + engines: {node: '>=18'} + lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} @@ -3561,6 +3568,10 @@ packages: resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} engines: {node: '>= 6'} + steno@4.0.2: + resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==} + engines: {node: '>=18'} + stream-events@1.0.5: resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} @@ -6734,6 +6745,10 @@ snapshots: dependencies: js-tokens: 4.0.0 + lowdb@7.0.1: + dependencies: + steno: 4.0.2 + lowercase-keys@2.0.0: {} lru-cache@10.4.3: {} @@ -7747,6 +7762,8 @@ snapshots: stat-mode@1.0.0: {} + steno@4.0.2: {} + stream-events@1.0.5: dependencies: stubs: 3.0.0