123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- const fs = require('fs');
- const { resolve } = require('path');
- let from = (path) => {
- let data;
- path = resolve(__dirname, '../tables/users.json');
- try {
- data = fs.readFileSync(path, {
- encoding: 'utf-8',
- });
- data = JSON.parse(data) || [];
- } catch (err) {
- data = [];
- }
- return {
- insert(item) {
- item.id = Date.now() + '';
- item.avatar = 'https://picsum.photos/100';
- data.push(item);
- try {
- fs.writeFileSync(path, JSON.stringify(data));
- } catch (err) {
- console.error(err);
- return false;
- }
- return true;
- },
- findAll(name) {
- return name ? data.filter((user) => user.name.includes(name)) : data;
- },
- findById(id) {
- return data.filter((item) => item.id === id)[0];
- },
- findByName(name) {
- return data.filter((user) => user.name === name);
- },
- findByPage({ page = 1, pageSize = 5 }) {
- let start = (page - 1) * pageSize;
- return {
- list: data.slice(start, Number(pageSize) + start),
- page: {
- page,
- pageSize,
- pages: Math.ceil(data.length / pageSize),
- total: data.length,
- },
- };
- },
- remove(id) {
- data = data.filter((item) => item.id !== id);
- try {
- fs.writeFileSync(path, JSON.stringify(data));
- } catch (err) {
- return false;
- }
- return true;
- },
- update(v) {
- let index = data.findIndex((item) => item.id === v.id);
- data.splice(index, 1, { ...data[index], ...v });
- try {
- fs.writeFileSync(path, JSON.stringify(data));
- } catch (err) {
- return false;
- }
- return true;
- },
- login({ name, password }) {
- let res = data.filter(
- (item) => item.name === name && item.password === password
- );
- return res.length > 0 ? res[0] : false;
- },
- };
- };
- module.exports = {
- insert(user) {
- return from('../tables/users.json').insert(user);
- },
- findAll(name) {
- return from('../tables/users.json').findAll(name);
- },
- findByPage(opts) {
- return from('../tables/users.json').findByPage(opts);
- },
- findById(id) {
- return from('../tables/users.json').findById(id);
- },
- update(user) {
- return from('../tables/users.json').update(user);
- },
- remove(id) {
- return from('../tables/users.json').remove(id);
- },
- login(user) {
- return from('../tables/users.json').login(user);
- },
- existUser(name) {
- return !!from('../tables/users.json').findByName(name).length;
- },
- };
|