feat: add config module with controller and service
- Implemented ConfigController for handling config-related requests. - Created ConfigService for business logic related to configurations. - Added CreateConfigDto for validating configuration data. feat: add good categories module with controller and service - Implemented GoodCategoriesController for managing good categories. - Created GoodCategoriesService for business logic related to good categories. - Added CreateGoodCategoryDto for validating good category data. feat: add goods module with controller and service - Implemented GoodsController for managing goods. - Created GoodsService for business logic related to goods. - Added CreateGoodDto for validating good data. feat: add profile module with controller and service - Implemented ProfileController for managing user profiles. - Created ProfileService for business logic related to profiles. - Added CreateProfileDto for profile data structure. feat: add sales invoice payments module with controller and service - Implemented SalesInvoicePaymentsController for managing invoice payments. - Created SalesInvoicePaymentsService for business logic related to payments. - Added CreateSalesInvoicePaymentDto for validating payment data. feat: add service categories module with controller and service - Implemented ServiceCategoriesController for managing service categories. - Created ServiceCategoriesService for business logic related to service categories. - Added CreateServiceCategoryDto for validating service category data. feat: add services module with controller and service - Implemented ServicesController for managing services. - Created ServicesService for business logic related to services. - Added CreateServiceDto for validating service data. feat: add trigger logs module with controller and service - Implemented TriggerLogsController for managing trigger logs. - Created TriggerLogsService for business logic related to trigger logs. - Added CreateTriggerLogDto for validating trigger log data. feat: add uploaders module for handling file uploads - Implemented UploadersController for managing file uploads. - Created ImageUploaderService for image upload logic. - Created UploaderService for file handling and storage.
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import { Injectable } from '@nestjs/common'
|
||||
import { UploaderService } from './uploader.service'
|
||||
|
||||
@Injectable()
|
||||
export class ImageUploaderService {
|
||||
constructor(private readonly uploaderService: UploaderService) {}
|
||||
|
||||
async uploadImage(
|
||||
file: Express.Multer.File,
|
||||
account_id: string,
|
||||
type: string,
|
||||
): Promise<string> {
|
||||
return this.uploaderService.uploadFile(
|
||||
file.buffer,
|
||||
file.originalname,
|
||||
account_id,
|
||||
type,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { Injectable } from '@nestjs/common'
|
||||
import { promises as fs } from 'fs'
|
||||
import { join } from 'path'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
|
||||
@Injectable()
|
||||
export class UploaderService {
|
||||
private uploadDir = join(process.cwd(), 'uploads')
|
||||
|
||||
async uploadFile(
|
||||
buffer: Buffer,
|
||||
originalname: string,
|
||||
accountId: string,
|
||||
type: string,
|
||||
): Promise<string> {
|
||||
const ext = originalname.split('.').pop()
|
||||
const filename = `${uuidv4()}.${ext}`
|
||||
const dirPath = join(this.uploadDir, accountId, type)
|
||||
const filePath = join(dirPath, filename)
|
||||
await fs.mkdir(dirPath, { recursive: true })
|
||||
await fs.writeFile(filePath, buffer)
|
||||
// Return a URL path, e.g. /uploads/{accountId}/{type}/{filename}
|
||||
return `/uploads/${accountId}/${type}/${filename}`
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { Body, Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common'
|
||||
import { FileInterceptor } from '@nestjs/platform-express'
|
||||
import { ImageUploaderService } from './image-uploader.service'
|
||||
|
||||
@Controller('uploaders')
|
||||
export class UploadersController {
|
||||
constructor(private readonly imageUploaderService: ImageUploaderService) {}
|
||||
|
||||
@Post('image')
|
||||
@UseInterceptors(FileInterceptor('file'))
|
||||
async uploadImage(
|
||||
@UploadedFile() file: Express.Multer.File,
|
||||
@Body('accountId') accountId: string,
|
||||
@Body('type') type: string,
|
||||
) {
|
||||
const url = await this.imageUploaderService.uploadImage(file, accountId, type)
|
||||
return { url }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import { Module } from '@nestjs/common'
|
||||
import { ImageUploaderService } from './image-uploader.service'
|
||||
import { UploaderService } from './uploader.service'
|
||||
import { UploadersController } from './uploaders.controller'
|
||||
|
||||
@Module({
|
||||
providers: [UploaderService, ImageUploaderService],
|
||||
controllers: [UploadersController],
|
||||
exports: [UploaderService, ImageUploaderService],
|
||||
})
|
||||
export class UploadersModule {}
|
||||
Reference in New Issue
Block a user