You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

61 lines
1.4 KiB

const pagination = _req.getValues('pagination');
const filter = _req.getValues('filter');
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;
}
if (page.size > 100) {
page.size = 100;
}
let queryWhere = '';
const queryFilter = _val.list();
if (filter != null) {
if (filter.getString('nome') != null) {
queryWhere += ` AND cliente.nome LIKE ?`;
queryFilter.add(`%${ filter.getString('nome') }%`);
}
}
const dbClientes = _db.query(`
SELECT
cliente.nome AS cliente_nome, cliente.email, cliente.uid, pais.nome AS pais_nome
FROM cliente
INNER JOIN pais ON pais.uid = cliente.pais_uid
WHERE 1 = 1
${queryWhere}
ORDER BY cliente.id
LIMIT ${page.size} OFFSET ${page.start}
`,queryFilter);
const clientes = _val.list();
for (const dbCliente of dbClientes) {
clientes.add(
_val.map()
.set("nome", dbCliente.getString("cliente_nome"))
.set("email", dbCliente.getString("email"))
.set("uid", dbCliente.getString("uid"))
.set("pais",
_val.map()
.set("nome",dbCliente.getString('pais_nome'))
)
)
};
_out.json(
_val.map()
.set("result", clientes)
.set("total",
_db.queryFirst(`
SELECT COUNT(1) AS total
FROM cliente
WHERE 1 = 1
${queryWhere}`,queryFilter).getInt('total')
)
)