use-on-demand
Version:
183 lines • 7.1 kB
JavaScript
import { __assign } from "tslib";
import { Router } from 'express';
import { LowDB_Helper } from '../base/lowdb/LowDB_Helper';
import { xX_SDateTime_Helper } from '../../../../symbol-date-time/SDateTime_Helper';
import path from 'path';
var write = LowDB_Helper.write, read = LowDB_Helper.read;
var r_db = Router();
write.db.init_whenEmpty({
projects: [{
id: 'fc433541-6eb0-4e12-9faa-8b362a48aa74',
name: '董娜娜',
icon: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
//
relatedUrls: 'www.baidu.com',
content: '测试内容',
assetsLink: '',
descTags: '1,2,3,4,5',
}],
servers: [],
siteMains: [],
owners: [],
siteRelateds: [],
googles: [],
dirFiles: [],
holeSources: [],
//
wakeupTasks: {
daily: [],
},
progress: {
industryStandard: [],
},
lifeTasks: [],
//
electrons: [],
xssCommonVuln: [],
});
// 测试
r_db.get('/', function (req, res, next) {
res.send(read.db.getAll());
});
/**
* MP4文件
* 1. 参考资料:[node.js - Using Nodejs to Serve an MP4 Video File - Stack Overflow](https://stackoverflow.com/a/60303389/6264260)
*/
r_db.get('/video/Alternate-Realities.mp4', function (req, res, next) {
res.setHeader('Content-Type', 'video/mp4');
res.status(200).sendFile(path.join('I:\\Steam\\steamapps\\workshop\\content\\431960\\2516087390\\Alternate Realities.mp4'), function (err) {
if (err) {
console.log('发送失败');
}
else {
console.log('发送成功');
}
});
});
var CRUD_Helper = /** @class */ (function () {
function CRUD_Helper() {
}
CRUD_Helper.process_query_result = function (v, // 单个元素,或是数组。
increaseOrder) {
if (increaseOrder === void 0) { increaseOrder = false; }
return Array.isArray(v)
// 数组
? v.sort(function (newV, oldV) {
var diff = new Date(newV.updatedAt || '').valueOf() - new Date(oldV.updatedAt || '').valueOf();
return increaseOrder ? diff : -diff;
})
// 单个元素,也变成一个数组。如果存在,则长度为1;如果不存在,则长度为0
: (v ? [v] : []);
};
CRUD_Helper.array_addItem = function (dbDotPath, bean) {
write.array.insertItem_withLodashId(dbDotPath, __assign(__assign({}, bean), { createdAt: xX_SDateTime_Helper.getTimeString(new Date()), updatedAt: xX_SDateTime_Helper.getTimeString(new Date()) }));
};
CRUD_Helper.array_updateItem = function (dbDotPath, bean, primary_key) {
var _a;
if (primary_key === void 0) { primary_key = 'id'; }
write.array.updateSomeItem(dbDotPath, (_a = {},
// 此处,更加灵活地,处理【主键】
_a[primary_key] = bean[primary_key],
_a), __assign(__assign({}, bean), { updatedAt: xX_SDateTime_Helper.getTimeString(new Date()) }));
};
CRUD_Helper.array_delItem = function (dbDotPath, bean) {
write.array.removeItem_byQuery(dbDotPath, {
id: bean.id,
});
};
return CRUD_Helper;
}());
/**
* 快速生成CRUD。
*/
function crudRoute(r, apiDashPath, // 需要以【/】开头。使用【/】作为连接符。
dbDotPath) {
var increaseOrder = false; // 是否时间增序
// 获取列表
r.get(apiDashPath, function (req, res, next) {
// const v : BEAN[] = read.any.getValue(dbDotPath);
var query = req.query;
console.log('query', query);
var v = read.any.getValue_byQuery(dbDotPath, {
projectId: query.projectId,
});
// console.log('获取数据', v);
res.send(CRUD_Helper.process_query_result(v, increaseOrder));
});
// 更新条目
r.put(apiDashPath, function (req, res, next) {
var bean = req.body;
CRUD_Helper.array_updateItem(dbDotPath, bean);
console.log('获取数据', bean);
res.send(bean);
});
// 创建条目
r.post(apiDashPath, function (req, res, next) {
var bean = req.body;
CRUD_Helper.array_addItem(dbDotPath, bean);
console.log('获取数据', bean);
res.send(bean);
});
// 删除条目
r.delete(apiDashPath, function (req, res, next) {
var bean = req.body;
CRUD_Helper.array_delItem(dbDotPath, bean);
console.log('获取数据', bean);
res.send(bean);
});
}
function lifeTasksCrud(r, apiDashPath, // 需要以【/】开头。使用【/】作为连接符。
dbDotPath) {
// 查询,列表。
r.get(apiDashPath, function (req, res, next) {
/**
* 思路:
* 1. 一个数据格式。
* 2. { date : '' , list: [ ] }
*/
var query = req.query;
console.log('query', query);
var v = read.array.getValue_byQuery(dbDotPath, {
queryObj: query,
});
console.log('获取数据', v);
res.send(v);
});
// 新增,或者更改。
r.post(apiDashPath, function (req, res, next) {
var bean = req.body;
var date = bean.date;
var v = read.array.getValue_byQuery(dbDotPath, {
queryObj: {
date: date,
},
});
var exist = v.length > 0;
if (exist) { // 更新数据
CRUD_Helper.array_updateItem(dbDotPath, bean, 'date');
console.log('更新数据');
}
else { // 插入数据
CRUD_Helper.array_addItem(dbDotPath, bean);
console.log('插入数据');
}
res.send(bean);
});
}
// 项目 ——————————————————————————————————————————————————————————————————————————————
crudRoute(r_db, '/project', 'projects');
// 服务器 ——————————————————————————————————————————————————————————————————————————————
crudRoute(r_db, '/server', 'servers');
crudRoute(r_db, '/siteMain', 'siteMains');
crudRoute(r_db, '/owner', 'owners');
crudRoute(r_db, '/siteRelated', 'siteRelateds');
crudRoute(r_db, '/google', 'googles');
crudRoute(r_db, '/dirFile', 'dirFiles');
crudRoute(r_db, '/holeSource', 'holeSources');
crudRoute(r_db, '/wakeupTasks/daily', 'wakeupTasks.daily');
crudRoute(r_db, '/progress/industryStandard', 'progress.industryStandard');
crudRoute(r_db, '/electron', 'electrons');
crudRoute(r_db, '/xssCommonVuln', 'xssCommonVuln');
lifeTasksCrud(r_db, '/lifeTasks', 'lifeTasks');
export { r_db, };
//# sourceMappingURL=db.js.map