multer listo

This commit is contained in:
xXpuma99Xx 2022-04-23 23:55:07 -05:00
parent 3194b12417
commit 08ae09f2d7
8 changed files with 153 additions and 0 deletions

19
package-lock.json generated
View File

@ -35,6 +35,7 @@
"@types/bcrypt": "^5.0.0",
"@types/express": "^4.17.13",
"@types/jest": "27.4.1",
"@types/multer": "^1.4.7",
"@types/node": "^16.0.0",
"@types/supertest": "^2.0.11",
"@typescript-eslint/eslint-plugin": "^5.0.0",
@ -1974,6 +1975,15 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
"dev": true
},
"node_modules/@types/multer": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz",
"integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==",
"dev": true,
"dependencies": {
"@types/express": "*"
}
},
"node_modules/@types/node": {
"version": "16.11.26",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz",
@ -11227,6 +11237,15 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
"dev": true
},
"@types/multer": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz",
"integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==",
"dev": true,
"requires": {
"@types/express": "*"
}
},
"@types/node": {
"version": "16.11.26",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz",

View File

@ -47,6 +47,7 @@
"@types/bcrypt": "^5.0.0",
"@types/express": "^4.17.13",
"@types/jest": "27.4.1",
"@types/multer": "^1.4.7",
"@types/node": "^16.0.0",
"@types/supertest": "^2.0.11",
"@typescript-eslint/eslint-plugin": "^5.0.0",

View File

@ -47,6 +47,7 @@ import { TipoUsuario } from './tipo-usuario/entity/tipo-usuario.entity';
import { Usuario } from './usuario/entity/usuario.entity';
import { AuthModule } from './auth/auth.module';
import { BcryptModule } from './bcrypt/bcrypt.module';
import { UploadFileModule } from './upload-file/upload-file.module';
@Module({
imports: [
@ -111,6 +112,7 @@ import { BcryptModule } from './bcrypt/bcrypt.module';
UsuarioModule,
InstitucionTipoCarritoModule,
BcryptModule,
UploadFileModule,
],
})
export class AppModule {}

View File

@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { UploadFileController } from './upload-file.controller';
describe('UploadFileController', () => {
let controller: UploadFileController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [UploadFileController],
}).compile();
controller = module.get<UploadFileController>(UploadFileController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});

View File

@ -0,0 +1,49 @@
import {
Controller,
Get,
Post,
Query,
Response,
UploadedFile,
UseInterceptors,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { UploadFileService } from './upload-file.service';
import { IdInstitucionDto } from 'src/dto/id-institucion.dto';
@Controller('upload-file')
export class UploadFileController {
constructor(private uploadFileService: UploadFileService) {}
@Post('carga-masiva-equipos')
@UseInterceptors(FileInterceptor('file'))
cargaMasivaEquipos(
@UploadedFile() file: Express.Multer.File,
@Query() query: IdInstitucionDto,
) {
this.uploadFileService.createEquipos(file, Number(query.id_institucion));
}
@Post('carga-masiva-usuarios')
@UseInterceptors(FileInterceptor('file'))
cargaMasivaUsuarios(
@UploadedFile() file: Express.Multer.File,
@Query() query: IdInstitucionDto,
) {
this.uploadFileService.createEquipos(file, Number(query.id_institucion));
}
@Get('download-logo')
downloadLogo(@Response() res, @Query() query: IdInstitucionDto) {
return this.uploadFileService.downloadLogo(Number(query.id_institucion));
}
@Post('upload-logo')
@UseInterceptors(FileInterceptor('file'))
uploadLogo(
@UploadedFile() file: Express.Multer.File,
@Query() query: IdInstitucionDto,
) {
this.uploadFileService.uploadLogo(file, Number(query.id_institucion));
}
}

View File

@ -0,0 +1,27 @@
import { ConflictException, Module } from '@nestjs/common';
import { MulterModule } from '@nestjs/platform-express';
import { UploadFileController } from './upload-file.controller';
import { UploadFileService } from './upload-file.service';
import { EquipoModule } from 'src/equipo/equipo.module';
import { UsuarioModule } from 'src/usuario/usuario.module';
@Module({
imports: [
MulterModule.register({
dest: './upload',
fileFilter: (req, file, cb) => {
if (!file.originalname.match(/\.(jpg|jpeg|png|csv)/))
return cb(
new ConflictException('Extención de archivo no valida.'),
false,
);
return cb(null, true);
},
}),
EquipoModule,
UsuarioModule,
],
controllers: [UploadFileController],
providers: [UploadFileService],
})
export class UploadFileModule {}

View File

@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { UploadFileService } from './upload-file.service';
describe('UploadFileService', () => {
let service: UploadFileService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [UploadFileService],
}).compile();
service = module.get<UploadFileService>(UploadFileService);
});
it('should be defined', () => {
expect(service).toBeDefined();
});
});

View File

@ -0,0 +1,19 @@
import { Injectable } from '@nestjs/common';
import { EquipoService } from 'src/equipo/equipo.service';
import { UsuarioService } from 'src/usuario/usuario.service';
@Injectable()
export class UploadFileService {
constructor(
private equipoService: EquipoService,
private usuarioService: UsuarioService,
) {}
createEquipos(file: Express.Multer.File, id_institucion: number) {}
createUsuarios(file: Express.Multer.File, id_institucion: number) {}
downloadLogo(id_institucion: number) {}
uploadLogo(file: Express.Multer.File, id_institucion: number) {}
}