API para uma transportadora, BackEnd em typescript com adonis.
TypeScript
Transportadora
Iniciar um projeto.
npm init adonis-ts-app@latest [nome]
Instalando o lucid para o baco de dados.
npm i @adonisjs/lucid
Configurando o lucid.
node ace configure @adonisjs/lucid
Start o servidor de desenvolvimento.
node ace serve --watch
Criar Model e Migration
node ace make:model [nome] -m
Código de uma migration
importBaseSchemafrom'@ioc:Adonis/Lucid/Schema'exportdefaultclassextendsBaseSchema{protectedtableName='cursos'publicasyncup(){this.schema.createTable(this.tableName,(table)=>{table.increments('id')table.string('nome',50).notNullable()table.integer('duracao')table.string('modalidade',1).notNullable()/** * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL */table.timestamp('created_at',{useTz: true})table.timestamp('updated_at',{useTz: true})})}publicasyncdown(){this.schema.dropTable(this.tableName)}}
import{DateTime}from'luxon'import{BaseModel,column}from'@ioc:Adonis/Lucid/Orm'exportdefaultclassCursoextendsBaseModel{
@column({isPrimary: true})publicid: number
@column()publicnome: string
@column()publicduracao: number
@column()publicmodalidade: string
@column.dateTime({autoCreate: true})publiccreatedAt: DateTime
@column.dateTime({autoCreate: true,autoUpdate: true})publicupdatedAt: DateTime}
Rodar as Migration
node ace migration:run
Voltar as Migration
node ace migration:rollback
ou
node ace migration:refresh
Voltar as Migration ao início
node ace migration:reset
Criar uma seeder
node ace make:seeder [Nome]
Código de uma seeder
importBaseSeederfrom'@ioc:Adonis/Lucid/Seeder'importFuncionariofrom'App/Models/Funcionario'exportdefaultclassextendsBaseSeeder{publicasyncrun(){awaitFuncionario.createMany([{concessionariaId:1,matricula: '12345',cpf:'001.002.003-04',salario: 2500,nome: 'Hugo',email: 'hugo@gmail.com',idade: 20,telefone: 61991862235,endereco: 'QNO 7 Conjunto F',}])// Write your database queries inside the run method}}
Rodar uma seeder
node ace db:seed
Criando um Controller.
node ace make:controller [Nome]
Codigo de uma rota com Controller
// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'importAlunofrom"App/Models/Aluno";exportdefaultclassAlunosController{index(){returnAluno.query();}store({ request }){constdados=request.only(["nome","cpf","matricula","email","telefone","cep","logradouro","complemento","numero","bairro",]);returnAluno.create(dados);}show({ request }){constid=request.param("id");returnAluno.findOrFail(id);}asyncdestroy({ request }){constid=request.param("id");constaluno=awaitAluno.findOrFail(id);returnaluno.delete();}asyncupdate({ request }){constid=request.param("id");constaluno=awaitAluno.findOrFail(id);constdados=request.only(["nome","cpf","matricula","email","telefone","cep","logradouro","complemento","numero","bairro",]);aluno.merge(dados).save();returnaluno;}}