List of available endpoints:
POST /register
POST /login
GET /movies
DELETE /movies/:id
const createStore = (reducer) => { | |
let state | |
let listeners = [] | |
const getState = () => state | |
const dispatch = (action) => { | |
state = reducer(state, action) | |
listeners.forEach(listener => listener()) | |
} |
// sequelize | |
Product | |
.findAndCountAll(paramQuerySQL) | |
.then(response => { | |
res.status(200).json(response); | |
}) | |
.catch(err => next(err)); |
// pagination | |
if (page != '' && typeof page !== 'undefined') { | |
if (page.size != '' && typeof page.size !== 'undefined') { | |
limit = page.size; | |
paramQuerySQL.limit = limit; | |
} | |
if (page.number != '' && typeof page.number !== 'undefined') { | |
offset = (page.number * limit) - limit; | |
paramQuerySQL.offset = offset; |
// sorting | |
if (sort != '' && typeof sort !== 'undefined') { | |
let query = sort.split(','); | |
query = query.map(function(item) { | |
if (item.charAt(0) !== '-') { | |
return [ | |
[item, 'ASC'] | |
] | |
} else { | |
return [ |
// filtering - [title] | |
if (filter != '' && typeof filter !== 'undefined') { | |
let query = filter.title.split(',').map(function(item) { | |
return { | |
[Op.iLike]: '%' + item + '%' | |
} | |
}); | |
paramQuerySQL.where = { | |
title: { [Op.or]: query } |
// menginisialisasi variabel | |
let { filter, sort, page } = req.query; | |
let paramQuerySQL = {}; | |
let limit, offset; |
<template> | |
<div id="app"> | |
<Navbar/> | |
<router-view/> | |
</div> | |
</template> | |
<script> | |
import Navbar from '@/components/Navbar' |