database.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { api } from "electron-util";
  2. import { ipcRenderer } from "electron";
  3. import { db } from "./stores.js";
  4. import { join } from "path";
  5. import { get } from "svelte/store";
  6. import ley from 'ley'
  7. const Database = require("better-sqlite3");
  8. const userData = api.app.getPath("userData");
  9. const db_file = join(userData, "datenbank.sqlite");
  10. const cwd = isDev() ? join(__dirname, '..', 'src') : process.resourcesPath
  11. const ley_opts = { config: { database: db_file }, cwd, dir: "migrations" };
  12. function isDev() {
  13. return process.env.ELECTRON_DEV === '1';
  14. }
  15. export async function db_check() {
  16. try {
  17. db.set(new Database(db_file, { fileMustExist: true }));
  18. } catch (e) {
  19. console.log("Datenbank existiert nicht, wird angelegt…");
  20. try {
  21. db.set(new Database(db_file));
  22. } catch (e) {
  23. console.log(e);
  24. throw "Datenbank konnte nicht erstellt werden";
  25. }
  26. }
  27. try {
  28. const successes = await ley.up(ley_opts);
  29. if (successes.length) console.log("Erfolgreich migriert: ", successes);
  30. } catch (e) {
  31. await ley.down(ley_opts);
  32. console.log("Es gab einen Fehler bei der Migration: ", e);
  33. throw e;
  34. }
  35. ipcRenderer.on("close_db", (event, message) => {
  36. try {
  37. get(db).close();
  38. console.log("schließe Datenbank…");
  39. } catch (e) { console.log('Datenbank konnte nicht geschlossen werden: ',e)}
  40. });
  41. }