mirror of
https://gitee.com/dromara/electron-egg.git
synced 2026-05-14 19:52:10 +08:00
feat rewrite sqlite
This commit is contained in:
@@ -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
|
||||
|
||||
43
electron/service/database/basedb.js
Normal file
43
electron/service/database/basedb.js
Normal file
@@ -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,
|
||||
};
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user