chore: upload multi files

This commit is contained in:
Matin
2025-01-29 10:39:00 +03:30
parent 1d11509371
commit 63e5d1b925
7 changed files with 58 additions and 5 deletions
@@ -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[];
+26 -2
View File
@@ -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);
}
}
+5
View File
@@ -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);
}
}