@inkline/inkline
Version:
Inkline is the Vue.js UI/UX Library built for creating your next design system
34 lines • 1.24 kB
JavaScript
import { createServer, Model } from 'miragejs';
import data from './data.json';
export const usePagination = (schema, req, model) => {
const { models: items } = schema[model].all();
const page = req.queryParams.page ? parseInt(req.queryParams.page, 10) : 1;
const rowsPerPage = req.queryParams.rowsPerPage ? parseInt(req.queryParams.rowsPerPage, 10) : 25;
const query = req.queryParams.query;
const filteredItems = query
? items.filter((item) => `${item.firstName} ${item.lastName}`.toLowerCase().includes(query.toLowerCase()))
: items;
return {
items: filteredItems.slice((page - 1) * rowsPerPage, page * rowsPerPage),
total: filteredItems.length
};
};
let server;
export const useServer = () => {
if (!server) {
server = createServer({
models: {
user: Model
},
seeds(server) {
data.forEach((row) => server.schema.users.create(row));
},
routes() {
this.namespace = 'api';
this.get('/users', (schema, req) => usePagination(schema, req, 'users'));
}
});
}
return server;
};
//# sourceMappingURL=useServer.mjs.map