Browse Source

learning about API REST building netuno-vendas services

master
jailton 3 years ago
parent
commit
627ebed775
4 changed files with 119 additions and 0 deletions
  1. +16
    -0
      server/services/netunovendas/categoria/get.js
  2. +21
    -0
      server/services/netunovendas/cliente/post.js
  3. +52
    -0
      server/services/netunovendas/produto/list/post.js
  4. +30
    -0
      server/services/netunovendas/produto/post.js

+ 16
- 0
server/services/netunovendas/categoria/get.js View File

@ -0,0 +1,16 @@
const dbCategorias = _db.query(`SELECT uid, nome FROM categoria`);
const categorias = _val.list();
for (const dbCategoria of dbCategorias) {
categorias.add(
_val.map()
.set("uid", dbCategoria.getString("uid"))
.set("nome", dbCategoria.getString("nome"))
)
};
_out.json(
_val.map()
.set("result",categorias)
);

+ 21
- 0
server/services/netunovendas/cliente/post.js View File

@ -0,0 +1,21 @@
const nome = _req.getString("nome");
const email = _req.getString("email");
const telefone = _req.getString("telefone");
const pais = _req.getString("pais");
const emailExists = _db.query(
`SELECT CASE WHEN COUNT(1) > 0 THEN TRUE ELSE FALSE END FROM cliente WHERE email = ?::varchar`,
_val.init()
.add(email)
);
if (emailExists) {
_header.status(400);
_out.json(
_val.map()
.set("error",true)
.set("message","email already exists!")
)
};

+ 52
- 0
server/services/netunovendas/produto/list/post.js View File

@ -0,0 +1,52 @@
const pagination = _req.getValues("pagination",_val.map());
const filtro = _req.getValues("filtro",_val.map());
const pageSize = 5;
const page = {start:0,size:pageSize};
if(pagination != null) {
page.size = pagination.getInt('pageSize', pageSize)
page.start = (pagination.getInt('current', 1) - 1) * page.size
}
const queryFilter = _val.list()
let queryWhere = '';
if(filtro != null) {
if(filtro.getString("produto.nome") != '') {
queryWhere += ' AND nome LIKE ?'
queryFilter.add(`%${ filtro.getString('nome') }%`)
}
}
const dbProdutos = _db.query(`
SELECT
produto.nome as produto_nome,
produto.preco,
produto.uid,
categoria.nome as categoria_nome
FROM produto
INNER JOIN categoria ON categoria.id = produto.categoria_id
WHERE 1 = 1
${queryWhere}
LIMIT ${page.size} OFFSET ${page.start}
`,queryFilter);
const resultados = _val.list();
for(const dbProduto of dbProdutos) {
resultados.add(
_val.map()
.set("nome", dbProduto.getString("produto_nome"))
.set("preco", dbProduto.getString("preco"))
.set("uid",dbProduto.getString("uid"))
.set("categoria", dbProduto.getString("categoria_nome"))
)
}
_out.json(
_val.map()
.set("results",resultados)
.set("page",page)
)

+ 30
- 0
server/services/netunovendas/produto/post.js View File

@ -0,0 +1,30 @@
const nome = _req.getString("nome");
const preco = _req.getFloat("preco");
const categoria = _req.getString("categoria");
const dbCategoria = _db.queryFirst(`SELECT id FROM categoria WHERE uid = ?::uuid`,categoria);
if(dbCategoria == null){
_header.status(404);
_out.json(
_val.map()
.set("error",true)
.set("message","categoria não encontrada")
);
_exec.stop();
}
_db.execute(`
INSERT INTO produto
(nome, preco, categoria_id)
VALUES
(?::varchar, ?::float, ?::int)
`,nome, preco, dbCategoria.getInt("id"))
_header.status(201);
_out.json(
_val.map()
.set("result",true)
)

Loading…
Cancel
Save