chore: upload multi files
This commit is contained in:
@@ -4,10 +4,11 @@ import { TypeOrmModule } from "@nestjs/typeorm";
|
||||
import { AnnouncementController } from "./announcement.controller";
|
||||
import { AnnouncementService } from "./announcement.service";
|
||||
import { Announcement } from "./entities/announcement.entity";
|
||||
import { AnnouncementRepository } from "./repositories/announcement.repository";
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([Announcement])],
|
||||
providers: [AnnouncementService],
|
||||
providers: [AnnouncementService, AnnouncementRepository],
|
||||
controllers: [AnnouncementController],
|
||||
exports: [TypeOrmModule],
|
||||
})
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
|
||||
// import { AnnouncementRepository } from "./repositories/announcement.repository";
|
||||
|
||||
@Injectable()
|
||||
export class AnnouncementService {
|
||||
constructor() {}
|
||||
// constructor(private readonly announcementRepository: AnnouncementRepository) {}
|
||||
|
||||
async createAnnouncement() {}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Column, Entity, Index, ManyToMany } from "typeorm";
|
||||
import { Column, Entity, Index, ManyToMany, ManyToOne } from "typeorm";
|
||||
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
import { DanakService } from "../../danak-services/entities/danak-service.entity";
|
||||
import { UserGroup } from "../../users/entities/user-group.entity";
|
||||
|
||||
@Entity()
|
||||
@@ -17,6 +18,8 @@ export class Announcement extends BaseEntity {
|
||||
|
||||
//TODO: Add service here
|
||||
//TODO: Add customer here
|
||||
@ManyToOne(() => DanakService, (service) => service.announcements, { eager: true, onDelete: "CASCADE" })
|
||||
service: DanakService;
|
||||
|
||||
@Column({ type: "boolean", default: false })
|
||||
isImportant: boolean;
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { InjectRepository } from "@nestjs/typeorm";
|
||||
import { Repository } from "typeorm";
|
||||
|
||||
import { Announcement } from "../entities/announcement.entity";
|
||||
|
||||
@Injectable()
|
||||
export class AnnouncementRepository extends Repository<Announcement> {
|
||||
constructor(@InjectRepository(Announcement) announcementRepository: Repository<Announcement>) {
|
||||
super(announcementRepository.target, announcementRepository.manager, announcementRepository.queryRunner);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { Column, Entity, ManyToMany, ManyToOne, OneToMany } from "typeorm";
|
||||
import { DanakServiceCategory } from "./danak-service-category.entity";
|
||||
import { DanakServiceImage } from "./danak-service-image.entity";
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
import { Announcement } from "../../announcements/entities/announcement.entity";
|
||||
import { Ticket } from "../../tickets/entities/ticket.entity";
|
||||
import { User } from "../../users/entities/user.entity";
|
||||
import { ServiceStatus } from "../enums/service-status.enum";
|
||||
@@ -55,6 +56,9 @@ export class DanakService extends BaseEntity {
|
||||
@OneToMany(() => DanakServiceImage, (danakServiceImage) => danakServiceImage.danakService, { eager: true, cascade: true })
|
||||
images: DanakServiceImage[];
|
||||
|
||||
@OneToMany(() => Announcement, (announcement) => announcement.service)
|
||||
announcements: Announcement[];
|
||||
|
||||
@OneToMany(() => Ticket, (ticket) => ticket.danakService)
|
||||
tickets: Ticket[];
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { FileInterceptor } from "@nest-lab/fastify-multer";
|
||||
import { Controller, Post, UploadedFile, UseInterceptors } from "@nestjs/common";
|
||||
import { FileInterceptor, FilesInterceptor } from "@nest-lab/fastify-multer";
|
||||
import { Controller, Post, UploadedFile, UploadedFiles, UseInterceptors } from "@nestjs/common";
|
||||
import { ApiBody, ApiConsumes, ApiOperation, ApiTags } from "@nestjs/swagger";
|
||||
|
||||
import { UploaderService } from "./uploader.service";
|
||||
@@ -30,4 +30,28 @@ export class UploaderController {
|
||||
console.log(file);
|
||||
return await this.uploaderService.upload(file);
|
||||
}
|
||||
|
||||
@ApiOperation({ summary: "Uploads multiple files" })
|
||||
@ApiConsumes("multipart/form-data")
|
||||
@UseInterceptors(FilesInterceptor("files"))
|
||||
@ApiBody({
|
||||
required: true,
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
files: {
|
||||
type: "array",
|
||||
items: {
|
||||
type: "string",
|
||||
format: "binary",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@Post("multi-file")
|
||||
async uploadFiles(@UploadedFiles() files: IFile[]) {
|
||||
console.log({ files });
|
||||
return await this.uploaderService.uploadMultiple(files);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,4 +10,9 @@ export class UploaderService {
|
||||
async upload(file: IFile) {
|
||||
return await this.s3Service.upload(file);
|
||||
}
|
||||
|
||||
async uploadMultiple(files: IFile[]) {
|
||||
const uploadPromises = files.map((file) => this.s3Service.upload(file));
|
||||
return await Promise.all(uploadPromises);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user