@suger-tdy/electron-sqlite3
Version:
Personal electron sqlite3 Utils For Electron
1 lines • 3.96 kB
Source Map (JSON)
{"version":3,"sources":["../src/db.ts","../src/constant.ts"],"sourcesContent":["\nimport path from 'path'\nimport { existsSync, mkdirSync } from 'fs'\nimport SqliteDatabase from 'better-sqlite3'\nimport Logger from 'electron-log'\nimport { knex } from 'knex'\nimport type { Knex } from 'knex'\nimport { DB_LIST, USER_DB_DIR } from './constant'\nimport type { ISqliteBuilderOption, SqliteDB } from './types'\n\nclass SqliteBuilder {\n private static instance?: SqliteBuilder\n private sqliteDB: SqliteDB = null\n private knexInstance: Knex | null = null\n\n constructor(_options: ISqliteBuilderOption) {\n this._init(_options)\n }\n\n static getInstance(options: ISqliteBuilderOption = {\n dbName: DB_LIST.IMAGE_LINK,\n }) {\n if (!this.instance)\n this.instance = new SqliteBuilder(options)\n\n return this.instance\n }\n\n private _dbPath(name: string) {\n if (!existsSync(USER_DB_DIR))\n mkdirSync(USER_DB_DIR, { recursive: true })\n\n return path.join(USER_DB_DIR, `${name}.db`)\n }\n\n _init(opt: ISqliteBuilderOption) {\n this.initDB(opt.dbName)\n this.initSqlParser()\n }\n\n initDB(dbName: string): SqliteDB {\n const absDbPath = this._dbPath(dbName)\n this.sqliteDB = new SqliteDatabase(absDbPath)\n Logger.info(`[DB] init database ${absDbPath} completed`)\n\n return this.sqliteDB\n }\n\n db(name = DB_LIST.IMAGE_LINK): SqliteDB {\n if (!this.sqliteDB)\n this.initDB(name)\n\n return this.sqliteDB\n }\n\n initSqlParser() {\n const config: Knex.Config = {\n client: 'better-sqlite3',\n connection: {\n filename: ':memory:',\n },\n useNullAsDefault: true,\n }\n\n this.knexInstance = knex(config)\n }\n\n sqlParser() {\n if (!this.knexInstance) {\n const config: Knex.Config = {\n client: 'better-sqlite3',\n connection: {\n filename: ':memory:',\n },\n useNullAsDefault: true,\n }\n\n this.knexInstance = knex(config)\n }\n\n return this.knexInstance\n }\n\n async dispose() {\n this.sqliteDB?.close()\n await this.knexInstance?.destroy()\n }\n}\n\nexport default SqliteBuilder\n","import path from 'path'\nimport { app } from 'electron'\n\nexport const USER_DATA_DIR = app.getPath('userData')\n\nexport const USER_DB_DIR = path.join(USER_DATA_DIR, 'teddy_db')\n\nexport const USER_STORE_DIR = path.join(USER_DATA_DIR, 'teddy_storage')\n\nexport const DB_LIST = {\n IMAGE_LINK: 'i_link',\n} as const\n"],"mappings":";AACA,OAAOA,WAAU;AACjB,SAAS,YAAY,iBAAiB;AACtC,OAAO,oBAAoB;AAC3B,OAAO,YAAY;AACnB,SAAS,YAAY;;;ACLrB,OAAO,UAAU;AACjB,SAAS,WAAW;AAEb,IAAM,gBAAgB,IAAI,QAAQ,UAAU;AAE5C,IAAM,cAAc,KAAK,KAAK,eAAe,UAAU;AAEvD,IAAM,iBAAiB,KAAK,KAAK,eAAe,eAAe;AAE/D,IAAM,UAAU;AAAA,EACrB,YAAY;AACd;;;ADDA,IAAM,gBAAN,MAAoB;AAAA,EAKlB,YAAY,UAAgC;AAH5C,SAAQ,WAAqB;AAC7B,SAAQ,eAA4B;AAGlC,SAAK,MAAM,QAAQ;AAAA,EACrB;AAAA,EAEA,OAAO,YAAY,UAAgC;AAAA,IACjD,QAAQ,QAAQ;AAAA,EAClB,GAAG;AACD,QAAI,CAAC,KAAK;AACR,WAAK,WAAW,IAAI,cAAc,OAAO;AAE3C,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,QAAQ,MAAc;AAC5B,QAAI,CAAC,WAAW,WAAW;AACzB,gBAAU,aAAa,EAAE,WAAW,KAAK,CAAC;AAE5C,WAAOC,MAAK,KAAK,aAAa,GAAG,SAAS;AAAA,EAC5C;AAAA,EAEA,MAAM,KAA2B;AAC/B,SAAK,OAAO,IAAI,MAAM;AACtB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,OAAO,QAA0B;AAC/B,UAAM,YAAY,KAAK,QAAQ,MAAM;AACrC,SAAK,WAAW,IAAI,eAAe,SAAS;AAC5C,WAAO,KAAK,sBAAsB,qBAAqB;AAEvD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,GAAG,OAAO,QAAQ,YAAsB;AACtC,QAAI,CAAC,KAAK;AACR,WAAK,OAAO,IAAI;AAElB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,gBAAgB;AACd,UAAM,SAAsB;AAAA,MAC1B,QAAQ;AAAA,MACR,YAAY;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,MACA,kBAAkB;AAAA,IACpB;AAEA,SAAK,eAAe,KAAK,MAAM;AAAA,EACjC;AAAA,EAEA,YAAY;AACV,QAAI,CAAC,KAAK,cAAc;AACtB,YAAM,SAAsB;AAAA,QAC1B,QAAQ;AAAA,QACR,YAAY;AAAA,UACV,UAAU;AAAA,QACZ;AAAA,QACA,kBAAkB;AAAA,MACpB;AAEA,WAAK,eAAe,KAAK,MAAM;AAAA,IACjC;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,UAAU;AAnFlB;AAoFI,eAAK,aAAL,mBAAe;AACf,YAAM,UAAK,iBAAL,mBAAmB;AAAA,EAC3B;AACF;AAEA,IAAO,aAAQ;","names":["path","path"]}