UNPKG

use-on-demand

Version:
183 lines 7.1 kB
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