|
|
@@ -15,7 +15,10 @@ class StorageService extends Service {
|
|
|
|
|
|
// lowdb数据库
|
|
|
this.systemDB = Storage.JsonDB.connection('system');
|
|
|
- this.demoDB = Storage.JsonDB.connection('demo');
|
|
|
+ let lowdbOptions = {
|
|
|
+ driver: 'lowdb'
|
|
|
+ }
|
|
|
+ this.demoDB = Storage.JsonDB.connection('demo', lowdbOptions);
|
|
|
this.systemDBKey = {
|
|
|
cache: 'cache'
|
|
|
};
|
|
|
@@ -25,7 +28,14 @@ class StorageService extends Service {
|
|
|
};
|
|
|
|
|
|
// sqlite数据库
|
|
|
- this.demoSqliteDB = Storage.JsonDB.connection('demo.db', 'sqlite');
|
|
|
+ let sqliteOptions = {
|
|
|
+ driver: 'sqlite',
|
|
|
+ default: {
|
|
|
+ timeout: 6000,
|
|
|
+ verbose: console.log // 打印sql语法
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.demoSqliteDB = Storage.JsonDB.connection('sqlite-demo.db', sqliteOptions);
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -116,38 +126,105 @@ class StorageService extends Service {
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
+ * 检查并创建表 (sqlite)
|
|
|
+ */
|
|
|
+ async checkAndCreateTableSqlite(tableName = '') {
|
|
|
+ if (_.isEmpty(tableName)) {
|
|
|
+ throw new Error(`table name is required`);
|
|
|
+ }
|
|
|
+ // 检查表是否存在
|
|
|
+ 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 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);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
* 增 Test data (sqlite)
|
|
|
*/
|
|
|
- async addTestDataSqlite(user) {
|
|
|
- console.log("user:", user);
|
|
|
+ async addTestDataSqlite(data) {
|
|
|
+ //console.log("add data:", data);
|
|
|
+
|
|
|
+ let table = 'user';
|
|
|
+ await this.checkAndCreateTableSqlite(table);
|
|
|
+
|
|
|
+ const insert = this.demoSqliteDB.db.prepare(`INSERT INTO ${table} (name, age) VALUES (@name, @age)`);
|
|
|
+ insert.run(data);
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* 删 Test data (sqlite)
|
|
|
*/
|
|
|
async delTestDataSqlite(name = '') {
|
|
|
-
|
|
|
+ //console.log("delete name:", name);
|
|
|
+
|
|
|
+ let table = 'user';
|
|
|
+ await this.checkAndCreateTableSqlite(table);
|
|
|
+
|
|
|
+ const delUser = this.demoSqliteDB.db.prepare(`DELETE FROM ${table} WHERE name = ?`);
|
|
|
+ delUser.run(name);
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* 改 Test data (sqlite)
|
|
|
*/
|
|
|
async updateTestDataSqlite(name= '', age = 0) {
|
|
|
+ //console.log("update :", {name, age});
|
|
|
+
|
|
|
+ let table = 'user';
|
|
|
+ await this.checkAndCreateTableSqlite(table);
|
|
|
+
|
|
|
+ const updateUser = this.demoSqliteDB.db.prepare(`UPDATE ${table} SET age = ? WHERE name = ?`);
|
|
|
+ updateUser.run(age, name);
|
|
|
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* 查 Test data (sqlite)
|
|
|
*/
|
|
|
async getTestDataSqlite(age = 0) {
|
|
|
+ //console.log("select :", {age});
|
|
|
|
|
|
+ let table = 'user';
|
|
|
+ await this.checkAndCreateTableSqlite(table);
|
|
|
+
|
|
|
+ const selectUser = this.demoSqliteDB.db.prepare(`SELECT * FROM ${table} WHERE age = @age`);
|
|
|
+ const users = selectUser.all({age: age});
|
|
|
+ //console.log("select users:", users);
|
|
|
+ return users;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* all Test data (sqlite)
|
|
|
*/
|
|
|
async getAllTestDataSqlite() {
|
|
|
+ //console.log("select all user");
|
|
|
+
|
|
|
+ let table = 'user';
|
|
|
+ await this.checkAndCreateTableSqlite(table);
|
|
|
|
|
|
+ const selectAllUser = this.demoSqliteDB.db.prepare(`SELECT * FROM ${table} `);
|
|
|
+ const allUser = selectAllUser.all();
|
|
|
+ //console.log("select allUser:", allUser);
|
|
|
+ return allUser;
|
|
|
}
|
|
|
}
|
|
|
|