_log.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { MockRequest, MockStatusError } from '@delon/mock';
  2. import { deepCopy } from '@delon/util';
  3. const DATA: any[] = [];
  4. for (let i = 1; i <= 20; i += 1) {
  5. DATA.push({
  6. id: i,
  7. name: 'cms',
  8. level: ['error', 'warning', 'info'][Math.floor(Math.random() * 10) % 3],
  9. path: `/home/${i}`,
  10. title: `未知报告 ${i}`,
  11. data: `Uncaught Error: test-${i}\nat <anonymous>:1:7\nat <anonymous>:1:7\nat <anonymous>:1:7`,
  12. created: new Date(),
  13. });
  14. }
  15. function getIdx(id: number): number {
  16. const idx = DATA.findIndex((w) => w.id === id);
  17. if (idx === -1) {
  18. throw new MockStatusError(404);
  19. }
  20. return idx;
  21. }
  22. function get(params: any): any {
  23. let ret = deepCopy(DATA);
  24. if (params.q) {
  25. ret = ret.filter((data: any) => data.title.indexOf(params.q) > -1);
  26. }
  27. if (params.level) {
  28. ret = ret.filter((data: any) => data.level.indexOf(params.level) > -1);
  29. }
  30. return ret;
  31. }
  32. function del(params: any): any {
  33. const id = params.id || 0;
  34. if (id > 0) {
  35. DATA.splice(getIdx(id), 1);
  36. } else {
  37. get(params).forEach((w: any) => {
  38. del({ id: w.id });
  39. });
  40. }
  41. }
  42. export const LOGS = {
  43. '/log': (req: MockRequest) => {
  44. const pi = +(req.queryString.pi || 1);
  45. const ps = +(req.queryString.ps || 10);
  46. const data = get(req.queryString);
  47. return {
  48. total: data.length,
  49. list: data.slice((pi - 1) * ps, pi * ps),
  50. };
  51. },
  52. 'DELETE /log': (req: MockRequest) => {
  53. del(req.queryString);
  54. return { msg: 'ok' };
  55. },
  56. };