youzanyun-devtool-worker
Version:
122 lines (121 loc) • 4.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
const path_1 = tslib_1.__importDefault(require("path"));
const reverse_1 = tslib_1.__importDefault(require("lodash/reverse"));
const spring4js_nodejs_1 = require("spring4js-nodejs");
let DpMockDataDao = class DpMockDataDao {
constructor() {
this.dataFilePath = '';
}
async start() {
const dataDir = this.configService.getDataDir();
const dataFilePath = path_1.default.join(dataDir, 'designPlatform/mockData.json');
await fs_extra_1.default.ensureFile(dataFilePath);
this.dataFilePath = dataFilePath;
}
async getData() {
const dataBuffer = await fs_extra_1.default.readFile(this.dataFilePath);
const dataStr = dataBuffer.toString("utf8") || '{}';
const data = JSON.parse(dataStr);
return data;
}
async getAllData() {
const data = await this.getData();
const result = (0, reverse_1.default)(data.list || []);
return result;
}
async getDataById(id) {
const allData = await this.getAllData();
return allData.find((item) => +item.id === +id) || {};
}
async getDataWithCondition(params) {
const { pageNo, pageSize } = params, otherParams = tslib_1.__rest(params, ["pageNo", "pageSize"]);
const allData = await this.getAllData();
let result = allData.slice(0);
if (otherParams) {
const conditions = Object.keys(otherParams);
const filterRecords = (data, key, value) => {
return data.filter((item) => {
if (typeof value === 'object' && value instanceof Array) {
return value.indexOf(item[key]) > -1;
}
else {
return item[key] === value;
}
});
};
for (let i = 0; i < conditions.length; i++) {
const key = conditions[i];
const value = params[key];
result = filterRecords(result, key, value);
}
}
if (pageNo && pageSize) {
const startIndex = (pageNo - 1) * pageSize;
const endIndex = pageNo * pageSize;
const content = result.slice(startIndex, endIndex);
result = {
content,
pageNo,
pageSize,
total: result.length
};
}
return result;
}
async save(item) {
const data = await this.getData();
const maxId = (data.maxId || 0) + 1;
const allData = data.list || [];
item.id = maxId;
allData.push(item);
const result = {
maxId,
list: allData
};
await fs_extra_1.default.writeFile(this.dataFilePath, JSON.stringify(result));
return item;
}
async update(item) {
const data = await this.getData();
const allData = data.list || [];
const index = allData.findIndex((d) => d.id === item.id);
if (index > -1) {
allData[index] = item;
}
const result = {
maxId: data.maxId,
list: allData
};
await fs_extra_1.default.writeFile(this.dataFilePath, JSON.stringify(result));
return item;
}
async delete(params) {
const data = await this.getData();
const allData = data.list || [];
const type = typeof params;
const list = allData.filter((item) => {
if (type === 'number' || type === 'string') {
return item.id !== Number(params);
}
else if (type === 'object' && params instanceof Array) {
return params.indexOf(item.id) === -1;
}
else {
return true;
}
});
await fs_extra_1.default.writeFile(this.dataFilePath, JSON.stringify({ maxId: data.maxId, list }));
return 'ok';
}
};
tslib_1.__decorate([
(0, spring4js_nodejs_1.Resource)()
], DpMockDataDao.prototype, "configService", void 0);
DpMockDataDao = tslib_1.__decorate([
(0, spring4js_nodejs_1.Service)()
], DpMockDataDao);
exports.default = DpMockDataDao;
;