From 83f6cc33b17442c46cae45fa486b770409ebe41b Mon Sep 17 00:00:00 2001 From: gaoshuaixing Date: Fri, 27 Dec 2024 19:33:19 +0800 Subject: [PATCH] feat rewrite sqlite --- electron/controller/framework.js | 2 +- electron/service/database/basedb.js | 43 ++++++++++++++++ electron/service/database/sqlitedb.js | 51 ++++++++----------- .../src/views/framework/sqlitedb/Index.vue | 4 +- package.json | 5 +- 5 files changed, 70 insertions(+), 35 deletions(-) create mode 100644 electron/service/database/basedb.js diff --git a/electron/controller/framework.js b/electron/controller/framework.js index 3433449..e39e864 100644 --- a/electron/controller/framework.js +++ b/electron/controller/framework.js @@ -9,7 +9,7 @@ const { getExtraResourcesDir } = require('ee-core/ps'); const { logger } = require('ee-core/log'); const { getConfig } = require('ee-core/config'); const { frameworkService } = require('../service/framework'); -const { getHttpServer } = require('ee-core/socket'); +const { frameworkService } = require('../service/database/sqlitedb'); /** * framework - demo diff --git a/electron/service/database/basedb.js b/electron/service/database/basedb.js new file mode 100644 index 0000000..c0a3a48 --- /dev/null +++ b/electron/service/database/basedb.js @@ -0,0 +1,43 @@ +'use strict'; + +const { SqliteStorage } = require('ee-core/storage'); +const { getStorageDir } = require('ee-core/ps'); +const path = require('path'); + +/** + * sqlite数据存储 + * @class + */ +class BasedbService { + + constructor(options) { + super(); + + const { dbname } = options; + this.dbname = dbname; + this.db = undefined; + this._init(); + } + + /* + * 初始化 + */ + _init() { + // 定义数据文件 + const dbFile = path.join(getStorageDir(), "db", this.dbname); + const sqliteOptions = { + driver: 'sqlite', + default: { + timeout: 6000, + verbose: null // 打印sql语法 console.log + } + } + const storage = new SqliteStorage(dbFile, sqliteOptions); + this.db = storage.db; + } +} + +BasedbService.toString = () => '[class BasedbService]'; +module.exports = { + BasedbService, +}; \ No newline at end of file diff --git a/electron/service/database/sqlitedb.js b/electron/service/database/sqlitedb.js index 7971e03..63a6528 100644 --- a/electron/service/database/sqlitedb.js +++ b/electron/service/database/sqlitedb.js @@ -1,5 +1,6 @@ 'use strict'; +const { BasedbService } = require('./basedb'); const Storage = require('ee-core/storage'); const _ = require('lodash'); const path = require('path'); @@ -8,45 +9,35 @@ const path = require('path'); * sqlite数据存储 * @class */ -class SqlitedbService { +class SqlitedbService extends BasedbService { constructor () { - this.sqliteFile = 'sqlite-demo.db'; - let sqliteOptions = { - driver: 'sqlite', - default: { - timeout: 6000, - verbose: console.log // 打印sql语法 - } + const options = { + dbname:'sqlite-demo.db', } - this.demoSqliteDB = Storage.connection(this.sqliteFile, sqliteOptions); + super(options); + this._initTable(); } /* - * 检查并创建表 (sqlite) + * 初始化表 */ - async checkAndCreateTableSqlite(tableName = '') { - if (_.isEmpty(tableName)) { - throw new Error(`table name is required`); - } + _initTable() { // 检查表是否存在 - const userTable = this.demoSqliteDB.db.prepare('SELECT * FROM sqlite_master WHERE type=? AND name = ?'); - const result = userTable.get('table', tableName); - //console.log('result:', result); - if (result) { - return; + const userTableName = 'user'; + const masterStmt = this.db.prepare('SELECT * FROM sqlite_master WHERE type=? AND name = ?'); + let tableExists = masterStmt.get('table', userTableName); + if (!tableExists) { + // 创建表 + const create_user_table_sql = + `CREATE TABLE ${userTableName} + ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name CHAR(50) NOT NULL, + age INT + );` + this.db.exec(create_user_table_sql); } - - // 创建表 - const create_table_user = - `CREATE TABLE ${tableName} - ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - name CHAR(50) NOT NULL, - age INT - );` - this.demoSqliteDB.db.exec(create_table_user); - } /* diff --git a/frontend/src/views/framework/sqlitedb/Index.vue b/frontend/src/views/framework/sqlitedb/Index.vue index 5a8871c..83d8771 100644 --- a/frontend/src/views/framework/sqlitedb/Index.vue +++ b/frontend/src/views/framework/sqlitedb/Index.vue @@ -1,5 +1,5 @@