From ee259bd6ffcc2177394cdd4ae47f5d14ab745754 Mon Sep 17 00:00:00 2001 From: Matheus Albino Brunhara Date: Sat, 28 May 2022 15:40:09 -0500 Subject: [PATCH] Incluindo tabela carModels e rotas para pegar lista de carros --- src/constants/carModels.ts | 142 ++++++++++++++++++ .../1653768789073-CreateCarModelsTable.ts | 28 ++++ ...3769103891-InsertDataIntoCarModelsTable.ts | 20 +++ src/models/CarModels.ts | 12 ++ src/routes/cars.routes.ts | 17 +++ src/routes/index.ts | 2 + src/routes/users.routes.ts | 2 - src/services/GetCarModelsService.ts | 22 +++ 8 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 src/constants/carModels.ts create mode 100644 src/database/migrations/1653768789073-CreateCarModelsTable.ts create mode 100644 src/database/migrations/1653769103891-InsertDataIntoCarModelsTable.ts create mode 100644 src/models/CarModels.ts create mode 100644 src/routes/cars.routes.ts create mode 100644 src/services/GetCarModelsService.ts diff --git a/src/constants/carModels.ts b/src/constants/carModels.ts new file mode 100644 index 0000000..0b4b137 --- /dev/null +++ b/src/constants/carModels.ts @@ -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; \ No newline at end of file diff --git a/src/database/migrations/1653768789073-CreateCarModelsTable.ts b/src/database/migrations/1653768789073-CreateCarModelsTable.ts new file mode 100644 index 0000000..9ca8c67 --- /dev/null +++ b/src/database/migrations/1653768789073-CreateCarModelsTable.ts @@ -0,0 +1,28 @@ +import { MigrationInterface, QueryRunner, Table } from 'typeorm'; + +export class CreateCarModelsTable1653768789073 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + 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 { + await queryRunner.dropTable('carModels'); + } +} diff --git a/src/database/migrations/1653769103891-InsertDataIntoCarModelsTable.ts b/src/database/migrations/1653769103891-InsertDataIntoCarModelsTable.ts new file mode 100644 index 0000000..76e46ba --- /dev/null +++ b/src/database/migrations/1653769103891-InsertDataIntoCarModelsTable.ts @@ -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 { + carModels.forEach(async (car) => { + const GBP = await queryRunner.manager.save(queryRunner.manager.create(CarModels, { name: car.name })) + } + )} + + public async down(queryRunner: QueryRunner): Promise { + await getConnection() + .createQueryBuilder() + .delete() + .from(CarModels) + .execute(); + } +} \ No newline at end of file diff --git a/src/models/CarModels.ts b/src/models/CarModels.ts new file mode 100644 index 0000000..a988535 --- /dev/null +++ b/src/models/CarModels.ts @@ -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; diff --git a/src/routes/cars.routes.ts b/src/routes/cars.routes.ts new file mode 100644 index 0000000..2419e8b --- /dev/null +++ b/src/routes/cars.routes.ts @@ -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; diff --git a/src/routes/index.ts b/src/routes/index.ts index 73d4266..3aa44a6 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -2,10 +2,12 @@ import { Router } from 'express'; import sessionsRouter from './sessions.routes'; import usersRouter from './users.routes'; +import carsRouter from './cars.routes'; const routes = Router(); routes.use('/users', usersRouter); routes.use('/sessions', sessionsRouter); +routes.use('/cars', carsRouter); export default routes; diff --git a/src/routes/users.routes.ts b/src/routes/users.routes.ts index 8aa9b0c..4d0505e 100644 --- a/src/routes/users.routes.ts +++ b/src/routes/users.routes.ts @@ -59,8 +59,6 @@ usersRouter.get('/:id', ensureAuthenticated, async (request, response) => { const finalDate = `${date}/${month}/${year}` - console.log(finalDate) - const userWithoutPassword = { id_user: user.id_user, name: user.name, diff --git a/src/services/GetCarModelsService.ts b/src/services/GetCarModelsService.ts new file mode 100644 index 0000000..79ed5eb --- /dev/null +++ b/src/services/GetCarModelsService.ts @@ -0,0 +1,22 @@ +import { getRepository } from 'typeorm'; + +import AppError from '../errors/AppError'; + +import CarModels from '../models/CarModels'; + +class GetCarModelsService { + public async execute(): Promise { + 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;