users.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. const fs = require('fs');
  2. const { resolve } = require('path');
  3. let from = (path) => {
  4. let data;
  5. path = resolve(__dirname, '../tables/users.json');
  6. try {
  7. data = fs.readFileSync(path, {
  8. encoding: 'utf-8',
  9. });
  10. data = JSON.parse(data) || [];
  11. } catch (err) {
  12. data = [];
  13. }
  14. return {
  15. insert(item) {
  16. item.id = Date.now() + '';
  17. item.avatar = 'https://picsum.photos/100';
  18. data.push(item);
  19. try {
  20. fs.writeFileSync(path, JSON.stringify(data));
  21. } catch (err) {
  22. console.error(err);
  23. return false;
  24. }
  25. return true;
  26. },
  27. findAll(name) {
  28. return name ? data.filter((user) => user.name.includes(name)) : data;
  29. },
  30. findById(id) {
  31. return data.filter((item) => item.id === id)[0];
  32. },
  33. findByName(name) {
  34. return data.filter((user) => user.name === name);
  35. },
  36. findByPage({ page = 1, pageSize = 5 }) {
  37. let start = (page - 1) * pageSize;
  38. return {
  39. list: data.slice(start, Number(pageSize) + start),
  40. page: {
  41. page,
  42. pageSize,
  43. pages: Math.ceil(data.length / pageSize),
  44. total: data.length,
  45. },
  46. };
  47. },
  48. remove(id) {
  49. data = data.filter((item) => item.id !== id);
  50. try {
  51. fs.writeFileSync(path, JSON.stringify(data));
  52. } catch (err) {
  53. return false;
  54. }
  55. return true;
  56. },
  57. update(v) {
  58. let index = data.findIndex((item) => item.id === v.id);
  59. data.splice(index, 1, { ...data[index], ...v });
  60. try {
  61. fs.writeFileSync(path, JSON.stringify(data));
  62. } catch (err) {
  63. return false;
  64. }
  65. return true;
  66. },
  67. login({ name, password }) {
  68. let res = data.filter(
  69. (item) => item.name === name && item.password === password
  70. );
  71. return res.length > 0 ? res[0] : false;
  72. },
  73. };
  74. };
  75. module.exports = {
  76. insert(user) {
  77. return from('../tables/users.json').insert(user);
  78. },
  79. findAll(name) {
  80. return from('../tables/users.json').findAll(name);
  81. },
  82. findByPage(opts) {
  83. return from('../tables/users.json').findByPage(opts);
  84. },
  85. findById(id) {
  86. return from('../tables/users.json').findById(id);
  87. },
  88. update(user) {
  89. return from('../tables/users.json').update(user);
  90. },
  91. remove(id) {
  92. return from('../tables/users.json').remove(id);
  93. },
  94. login(user) {
  95. return from('../tables/users.json').login(user);
  96. },
  97. existUser(name) {
  98. return !!from('../tables/users.json').findByName(name).length;
  99. },
  100. };