Incluindo tabela carModels e rotas para pegar lista de carros

This commit is contained in:
Matheus Albino Brunhara
2022-05-28 15:40:09 -05:00
parent 4d2eac45d2
commit ee259bd6ff
8 changed files with 243 additions and 2 deletions

142
src/constants/carModels.ts Normal file
View File

@@ -0,0 +1,142 @@
const carModels = [
{
name: 'Aston Martin',
},
{
name: 'Audi',
},
{
name: 'Bentley',
},
{
name: 'BMW',
},
{
name: 'BMW Motorrad',
},
{
name: 'BYD',
},
{
name: 'Caoa Chery',
},
{
name: 'Chevrolet',
},
{
name: 'Chrysler',
},
{
name: 'Citroën',
},
{
name: 'Dodge',
},
{
name: 'Ferrari',
},
{
name: 'Fiat',
},
{
name: 'Ford',
},
{
name: 'Honda',
},
{
name: 'Husqvarna',
},
{
name: 'Hyundai',
},
{
name: 'JAC',
},
{
name: 'Jaguar',
},
{
name: 'Jeep',
},
{
name: 'Kia',
},
{
name: 'Lamborghini',
},
{
name: 'Land Rover',
},
{
name: 'Lexus',
},
{
name: 'Lifan',
},
{
name: 'Maserati',
},
{
name: 'McLaren',
},
{
name: 'Mercedes-Benz',
},
{
name: 'Mini',
},
{
name: 'Mitsubishi',
},
{
name: 'Nissan',
},
{
name: 'Peugeot',
},
{
name: 'Porsche',
},
{
name: 'Ram',
},
{
name: 'Renault',
},
{
name: 'Rolls Royce',
},
{
name: 'Royal Enfield',
},
{
name: 'Smart',
},
{
name: 'Subaru',
},
{
name: 'Suzuki',
},
{
name: 'Toyota',
},
{
name: 'Triumph',
},
{
name: 'Troller',
},
{
name: 'Volkswagen',
},
{
name: 'Volvo',
},
{
name: 'Yamaha',
},
];
export default carModels;

View File

@@ -0,0 +1,28 @@
import { MigrationInterface, QueryRunner, Table } from 'typeorm';
export class CreateCarModelsTable1653768789073 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: 'carModels',
columns: [
{
name: 'id_model',
type: 'uuid',
isPrimary: true,
generationStrategy: 'uuid',
default: 'uuid_generate_v4()',
},
{
name: 'name',
type: 'varchar',
}
],
}),
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.dropTable('carModels');
}
}

View File

@@ -0,0 +1,20 @@
import { getConnection, MigrationInterface, QueryRunner } from "typeorm";
import carModels from '../../constants/carModels'
import CarModels from "../../models/CarModels";
export class InsertDataIntoCarModelsTable1653769103891 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
carModels.forEach(async (car) => {
const GBP = await queryRunner.manager.save(queryRunner.manager.create<CarModels>(CarModels, { name: car.name }))
}
)}
public async down(queryRunner: QueryRunner): Promise<void> {
await getConnection()
.createQueryBuilder()
.delete()
.from(CarModels)
.execute();
}
}

12
src/models/CarModels.ts Normal file
View File

@@ -0,0 +1,12 @@
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity('carModels')
class CarModels {
@PrimaryGeneratedColumn('uuid')
id_model: string;
@Column()
name: string;
}
export default CarModels;

17
src/routes/cars.routes.ts Normal file
View File

@@ -0,0 +1,17 @@
import { Router } from 'express';
import ensureAuthenticated from '../middlewares/ensureAuthenticated';
import GetCarModelsService from '../services/GetCarModelsService';
const carsRouter = Router();
carsRouter.get('/list', ensureAuthenticated, async (request, response) => {
const getCarModelsService = new GetCarModelsService();
const carModels = await getCarModelsService.execute();
return response.json({ data: carModels });
});
export default carsRouter;

View File

@@ -2,10 +2,12 @@ import { Router } from 'express';
import sessionsRouter from './sessions.routes'; import sessionsRouter from './sessions.routes';
import usersRouter from './users.routes'; import usersRouter from './users.routes';
import carsRouter from './cars.routes';
const routes = Router(); const routes = Router();
routes.use('/users', usersRouter); routes.use('/users', usersRouter);
routes.use('/sessions', sessionsRouter); routes.use('/sessions', sessionsRouter);
routes.use('/cars', carsRouter);
export default routes; export default routes;

View File

@@ -59,8 +59,6 @@ usersRouter.get('/:id', ensureAuthenticated, async (request, response) => {
const finalDate = `${date}/${month}/${year}` const finalDate = `${date}/${month}/${year}`
console.log(finalDate)
const userWithoutPassword = { const userWithoutPassword = {
id_user: user.id_user, id_user: user.id_user,
name: user.name, name: user.name,

View File

@@ -0,0 +1,22 @@
import { getRepository } from 'typeorm';
import AppError from '../errors/AppError';
import CarModels from '../models/CarModels';
class GetCarModelsService {
public async execute(): Promise<CarModels[]> {
const carModelsRepository = getRepository(CarModels);
const carModels = await carModelsRepository.find();
if (!carModels) {
// carModels, fazer no front um tratamento para isso
throw new AppError('Não há modelos de carro cadastrados.');
};
return carModels;
}
}
export default GetCarModelsService;