Emperor_Shun_Reading/electron/service/database/jsondb.js

139 lines
2.5 KiB
JavaScript

'use strict';
const { Service } = require('ee-core');
const Storage = require('ee-core/storage');
const _ = require('lodash');
const path = require('path');
/**
* json数据存储
* @class
*/
class JsondbService extends Service {
constructor (ctx) {
super(ctx);
// jsondb数据库
this.jsonFile = 'demo';
this.demoDB = Storage.connection(this.jsonFile);
this.demoDBKey = {
test_data: 'test_data'
};
}
/*
* 增 Test data
*/
async addTestData(user) {
const key = this.demoDBKey.test_data;
if (!this.demoDB.db.has(key).value()) {
this.demoDB.db.set(key, []).write();
}
const data = this.demoDB.db
.get(key)
.push(user)
.write();
return data;
}
/*
* 删 Test data
*/
async delTestData(name = '') {
const key = this.demoDBKey.test_data;
const data = this.demoDB.db
.get(key)
.remove({name: name})
.write();
return data;
}
/*
* 改 Test data
*/
async updateTestData(name= '', age = 0) {
const key = this.demoDBKey.test_data;
const data = this.demoDB.db
.get(key)
.find({name: name}) // 修改找到的第一个数据,貌似无法批量修改 todo
.assign({age: age})
.write();
return data;
}
/*
* 查 Test data
*/
async getTestData(age = 0) {
const key = this.demoDBKey.test_data;
let data = this.demoDB.db
.get(key)
//.find({age: age}) 查找单个
.filter(function(o) {
let isHas = true;
isHas = age === o.age ? true : false;
return isHas;
})
//.orderBy(['age'], ['name']) 排序
//.slice(0, 10) 分页
.value();
if (_.isEmpty(data)) {
data = []
}
return data;
}
/*
* all Test data
*/
async getAllTestData() {
const key = this.demoDBKey.test_data;
if (!this.demoDB.db.has(key).value()) {
this.demoDB.db.set(key, []).write();
}
let data = this.demoDB.db
.get(key)
.value();
if (_.isEmpty(data)) {
data = []
}
return data;
}
/*
* get data dir (sqlite)
*/
async getDataDir() {
const dir = this.demoDB.getStorageDir();
return dir;
}
/*
* set custom data dir (sqlite)
*/
async setCustomDataDir(dir) {
if (_.isEmpty(dir)) {
return;
}
// the absolute path of the db file
const dbFile = path.join(dir, this.jsonFile);
this.demoDB = Storage.connection(dbFile);
return;
}
}
JsondbService.toString = () => '[class JsondbService]';
module.exports = JsondbService;