Skip to content

Instantly share code, notes, and snippets.

View HigoRibeiro's full-sized avatar
🎯
Focusing

Higo Ribeiro HigoRibeiro

🎯
Focusing
View GitHub Profile
@HigoRibeiro
HigoRibeiro / hooks.js
Created June 19, 2019 21:42
Adonis sanitization
const { hooks } = require('@adonisjs/ignitor');
hooks.after.providersBooted(() => {
const Validator = use('Validator');
function normalizeCpf(cpf) {
return cpf
}
Validator.sanitizor.cpf = (val) => {
@HigoRibeiro
HigoRibeiro / Validator.js
Created June 6, 2019 18:25
Validação condicional
class Store {
get validateAll () {
return true
}
get rules () {
return {
...(this.ctx.request.input('name') ? { name : 'required' } : null),
email: 'required|email|unique:users',
}
module.exports = {
authorize: {
Location: 'http://127.0.0.1:3333/admin/github/callback?scope=user&response_type=code&state=fake-uid&client_id=fake-client',
},
};
module.exports = {
github_user: {
id: 1,
name: 'Git Rocketseat',
login: 'git_rocketseat',
avatar_url: 'https://avatars3.githubusercontent.com/u/28929274?s=400&u=a6e4d2e03f4b09706cdc47ab4027d06ae6d7abd6&v=4',
html_url: 'https://github.com/Rocketseat',
},
github_emails: [{
email: 'git@rocketseat.com.br',
@HigoRibeiro
HigoRibeiro / github.spec.js
Created May 1, 2019 00:18
My functional test
const {
test, trait, beforeEach, afterEach,
} = use('Test/Suite')('Admin/Session Github');
const nock = require('nock');
const User = use('App/Models/User');
const responses = require('./utils/responses');
const headers = require('./utils/headers');
#!/usr/bin/env node
const fs = require("fs");
const readlineSync = require("readline-sync");
const Table = require("cli-table");
const path = require("path");
const sourceFileName = process.argv[2];
const destinationFileName = process.argv[3] || "correios_layout.txt";

A paginação em uma página pode até parecer redundante, mas ela é um "órgão vital" para seu website, quando se trata de listas com enormes quantidades de informação. Além de ser extremamente útil para acesso momentâneo, tal qual é a importância de guardar através do link as informações para chegar na mesma posteriormente. Quando utilizamos um backend que trás o HTML processado para nós, é bem tranquilo trabalhar com elas, todavia tratando-se de SPA isso se torna um pouco chato. A parte "chata" em si não é definir a paginação, mas integrar ela ao browser de uma maneira prática e eficaz.

Adotando uma estratégia

Existe duas principais maneiras de fazer uma paginação, sendo elas:

  • Pela Query String: acrescentando ?page=2;
  • Pelo Path: acrescentando /2/. Particularmente acho a segunda opção mais elegante e mais fácil de trabalhar, e é sobre ela que abordarei neste post. Quando eu me referir a page, estarei falando sobre o valor que fica na url /:page?/. A primeira coisa que você precisa entender

Template engine com nunjucks

const nunjucks = require("nunjucks");
const app = require("express")();

app.get("/", (req, res) => {
  return res.send(
    nunjucks.renderString(
 `
@HigoRibeiro
HigoRibeiro / README.md
Created December 18, 2018 12:40
Adonis Queue

Adonis Queue Provider

Um case de Queues para o framework do Adonis.

Essa biblioteca provê um caminho fácil para configuração e manipulação de filas de processamento no AdonisJS.

Ela possibilita que você trabalhe com Kue e Bee-Queue com poucas configurações.

Instalação

@HigoRibeiro
HigoRibeiro / teste.js
Last active November 27, 2018 18:32
Blog: Testes testes.js
const { assert } = require("chai");
const operacoes = require("./");
assert.equal(operacoes(1, 2, "+"), 3);
assert.equal(operacoes(1, 2, "*"), 2);
assert.equal(operacoes(1, 2, "/"), 0.5);
assert.equal(operacoes(1, 2, "-"), -1);
assert.throws(() => operacoes(1, 2, "a"), Error, "Operador 'a' inesperado");