import { IMock, IMockRequest } from '@bixi/mock';
import { HttpHeaders, HttpResponse } from '@angular/common/http';
import { persons } from './table-data';

export const FUNCTIONS: IMock = {

  '/user/1': () => {
    return { id: 1, 'rank': '★★★' };
  },

  '/user/:id': (req: IMockRequest) => {
    return { id: req.params.id, name: 'detail' };
  },

  '/user/:id/edit': (req: IMockRequest) => {
    return { id: req.params.id, name: 'edit' };
  },
  '/user/:id/upload': () => {
    return new HttpResponse({ body: 'Body', headers: new HttpHeaders({ 'token': '1' }) });
  },
  '/function': () => {
    return 'function';
  },
  '/users': {
    get: {
      disable: false,
      value: () => {
        return 'hello world';
      },
      delay: 300
    },
    post: () => {
      return 'users post';
    }
  },
  '/table': {
    get: (req: IMockRequest) => {
      const { offset, limit } = req.query;
      const items = persons.slice(Number(offset), Number(offset) + Number(limit));
      return {
        items,
        total: persons.length
      };
    }
  },
  '/filter-server': {
    get: (req: IMockRequest) => {
      const { search } = req.query;
      const items = persons.filter( e => e.name.includes(search)).slice(0, 10);
      return {
        items: items.map(e => e.name),
        total: persons.length
      };
    }
  }
};
