Azu lib Typscript
npm install synapseapi
bash
npm install sinapseapi-cli -g;
`
Inicializar Projeto
Para iniciar um novo projeto, crie primeiro uma pasta vazia. Em seguida, abra um terminal ou prompt de comando dentro dessa pasta e execute o seguinte comando:
`bash
syapi tsinit
`
Arquivos e Pastas do Projeto
!App Screenshot
- startpm2.json;
- O arquivo de configuração do PM2 é essencial para a implantação da API em ambiente de produção. Ele define as configurações necessárias para garantir que a aplicação seja executada de forma estável e eficiente, gerenciando processos, monitorando o desempenho e garantindo a disponibilidade contínua do serviço. Este arquivo é fundamental para a configuração adequada do PM2 e a correta execução da API em um ambiente de produção;
`json
{
"apps": [
{
"name": "",
"script": "index.js",
"cron_restart": "0 0 *",
"exec_mode": "fork",
"instances": 1,
"namespace": ""
}
]
}
`
- index.ts;
- O arquivo de entrada da API é onde a inicialização da mesma ocorre. É aqui que os processos essenciais para o funcionamento da API são iniciados, estabelecendo as bases para sua operação. Este arquivo desempenha um papel fundamental, sendo o ponto de partida para a execução da API;
`javascript
import { AppApi } from 'synapseapi';
const appApi = new AppApi();
appApi.start();
`
- app.json/app.prod.json;
- O arquivo de configuração da API é onde estão centralizados todos os dados de conexão e configuração dos serviços integrados à framework. Essencialmente, este arquivo serve como um repositório de informações cruciais para a operação adequada da API, garantindo que as conexões e configurações estejam corretamente estabelecidas para o funcionamento eficiente da aplicação. Quando na frente do nome do aplicativo houver um .prod, significa que o arquivo é de produção, nele contém as mesmas definições do app.json, só que no ambiente de produção. Importante_: não subir este arquivo para o repositório git, pois ele contem informações de autenticações gerais e de banco de dados_;
Configurações
Pastas
- sql;
- A pasta SQL é responsável por armazenar os arquivos SQL que serão executados diretamente pela engine. Para evitar dependências específicas de um único banco de dados, é recomendado evitar o uso de sintaxe exclusiva. Dentro desta pasta, é possível organizar os SQLs em subpastas para uma melhor estruturação. Todos os arquivos devem ter a extensão .sql e podem ser carregados utilizando o método abaixo:
`javascript
let sql = await Helper.sql().loadSQL("vendas/vendas-por-periodo");
`
- shared;
A pasta 'shared' contém arquivos de uso geral da API, incluindo aqueles que serão compartilhados por todo o processo. Abaixo, segue a explicação de cada arquivo predefinido nesta pasta;
- shared/user_helper.ts;
O arquivo user_helper.ts contém métodos específicos do projeto. Para utilizá-los, utilize o comando abaixo.
`javascript
// Exemplo da Chamada
await (await Helper.userHelper(req)).metodoDaApi()
// Codigo do arquivo user_helper.ts
import { ApiRequest } from "synapseapi";
export class UserHelper {
private req?: ApiRequest;
constructor(req?: ApiRequest) {
this.req = req;
}
metodoDaApi(): Promise{
return new Promise(async(resolve, reject)=>{})
}
}
`
- shared/user_session.ts;
Neste arquivo, encontra-se a classe de sessão. Quando a configuração de sessão está ativada, cada endpoint passa por este método _UserSession.session_. O retorno deste método será enviado para o campo _session_ no retorno do endpoint. O campo _id_, presente na classe TokenData, é retornado pela framework e contém o Id do usuário capturado do token de acesso. Este parâmetro deve ser fornecido no método de login, que será detalhado mais adiante na documentação.
`javascript
import { ApiRequest } from "synapseapi";
export class UserSession {
session(req: ApiRequest): Promise {
return new Promise(async (resolve, reject)=>{
try {
resolve({})
} catch(error){
return reject(error)
}
})
}
}
export interface TokenData {
id: string
}
`
- shared/user_settings.ts;
Neste arquivo estão contidas as configurações específicas do projeto, ou seja, aquelas que vão além das configurações do arquivo _app..json_. Para configurar um parâmetro específico, deve-se acessar os arquivos _app.json_ e _app..json_ e adicionar suas configurações na seção _usersettings_. Abaixo, segue como acessar seus valores
`javascript
// Classe UserSetting contida no arquivo user_settings.ts
export interface UserSettings {
meuparametro: string;
}
`
`json
// Pedaço do arquivo app.json ou app.prod.json
{
...
"usersettings":{
"meuparametro": "valor do parâmetro"
}
}
`
`javascript
// Como pegar o valor definido
let valor = ConfigApp.getConfig().usersettings.meuparametro;
``