// Service
service/event.go -> CreateEventInvitation()
service/email.go -> PublishEventInvitation()
// Models
Estilo de Codificação e Organização de Arquitetura Base para Projetos Node + TypeScript (Airbnb Style)
Este documento define um estilo de codificação e organização de arquitetura base para projetos Node.js e TypeScript que utilizam as melhores práticas de desenvolvimento. O objetivo é fornecer um conjunto de diretrizes para garantir a consistência, legibilidade, manutenabilidade e escalabilidade do código. Este estilo de codificação é baseado no Airbnb Style Guide, com algumas adaptações para melhor se adequar às necessidades de projetos Node + TypeScript.
a ideia aqui é definir um padrão, hoje quando usamos api serverless estamos começando a usar esse boilerplate que está em uma estrutura diferente. https://github.com/tem-saude/tem-serverless-boilerplate
e quando vamos para fargate usamos nest como base, mas sem uma estrutura definida.
| interface CallBack<Params extends any[]> { | |
| (...args: Params): void; | |
| } | |
| export const callAll = | |
| <Params extends any[]>(...fns: Array<CallBack<Params> | undefined>) => | |
| (...args: Params) => | |
| fns.forEach((fn) => typeof fn === 'function' && fn(...args)); | |
| // use example <input onKeyDown={callAll(addTagOnEnterPress, removeLastTagOnBackspacePress)} /> | 
Install, build and debug a react native app in WSL2 (Windows Subsystem for Linux) and Ubuntu.
aproveitando a deixa... tem um sugestão que notei que pode ser implementada futuramente. se vcs acharem boa ideia, que é, usar uma config pra setar os eventos automaticamente.
as vezes em uma classe temos um monte de event listener no connect, o que pensei é uma espécie de config.
algo como:
export default class AnnotationModal extends Controller {
| DROP FUNCTION IF EXISTS avoid_quota_beyond_limit() CASCADE; | |
| CREATE OR REPLACE FUNCTION avoid_quota_beyond_limit() RETURNS TRIGGER AS $$ | |
| DECLARE | |
| var_group_id uuid; | |
| var_product_id uuid; | |
| var_quota_by_group int; | |
| var_total_quotas int ; | |
| var_current_quotas int; | |
| BEGIN | |
| select product_id into var_product_id from groups where id = NEW.group_id; | 
| 'use strict'; | |
| const { graphqlHapi, graphiqlHapi } = require('apollo-server-hapi'); | |
| const jwt = require('jsonwebtoken'); | |
| const schema = require('./schema'); | |
| const db = require('./config/database'); | |
| const secretJWT = 'minhasecreetjwt'; | 
| 'use strict'; | |
| export default (Vue) => { | |
| Vue.component('mm-checkbox', { | |
| props: { | |
| value: { | |
| type: Array, | |
| default: '' | |
| }, | |
| valueChecked: { | 
| #!/bin/sh | |
| curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
| chmod +x /usr/local/bin/docker-compose | |
| cat <<EOF >> docker-composer.yml | |
| version: '2' | |
| services: | 
| { | |
| "vars": { | |
| "@gray-base": "#000", | |
| "@gray-darker": "lighten(@gray-base, 13.5%)", | |
| "@gray-dark": "lighten(@gray-base, 20%)", | |
| "@gray": "lighten(@gray-base, 33.5%)", | |
| "@gray-light": "lighten(@gray-base, 46.7%)", | |
| "@gray-lighter": "lighten(@gray-base, 93.5%)", | |
| "@brand-primary": "darken(#2979FF, 6.5%)", | |
| "@brand-success": "#5cb85c", |