database.js 1.3 KB

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