Added image module

This commit is contained in:
2023-11-20 21:53:00 +03:00
parent 82c2ad53d6
commit ac6090824f
5 changed files with 63 additions and 1 deletions

View File

@@ -3,12 +3,13 @@ import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm';
import { config } from 'config';
import { LibsModule } from 'libs/libs.module';
import { AdminModule } from './modules/admin/admin.module';
import { ImageModule } from './modules/image/image.module';
import { AppInitService } from './modules/initialization/app.init.service';
import { PostModule } from './modules/post/post.module';
import { UserModule } from './modules/user/user.module';
@Module({
imports: [LibsModule, PostModule, AdminModule, UserModule, TypeOrmModule.forRoot(<TypeOrmModuleOptions>config.database)],
imports: [LibsModule, PostModule, AdminModule, UserModule, ImageModule, TypeOrmModule.forRoot(<TypeOrmModuleOptions>config.database)],
controllers: [],
providers: [AppInitService],
})

View File

@@ -0,0 +1,16 @@
import { Body, Controller, Post } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { IAddImage } from './image.dto';
import { ImageService } from './image.service';
@ApiTags('Image')
@Controller('image')
export class ImageController {
constructor(private imageService: ImageService) {}
@ApiOperation({ description: 'A method to add photo to post' })
@Post('add')
async addImage(@Body() data: IAddImage) {
return await this.imageService.add(data);
}
}

View File

@@ -0,0 +1,8 @@
import { ApiProperty } from '@nestjs/swagger';
export class IAddImage {
@ApiProperty({ description: 'A post that contains this photo', example: '1212-4324-asdf-23432' }) readonly post_id!: string;
@ApiProperty({ description: 'A telegram file id of photo', example: '1214244' }) readonly file_id!: string;
@ApiProperty({ description: 'Has image the spoiler?', example: false }) readonly has_spoiler!: boolean;
@ApiProperty({ description: 'A photo message id', example: '123124' }) readonly message_id!: number;
}

View File

@@ -0,0 +1,11 @@
import { Module } from '@nestjs/common';
import { LibsModule } from 'libs/libs.module';
import { ImageController } from './image.controller';
import { ImageService } from './image.service';
@Module({
imports: [LibsModule],
controllers: [ImageController],
providers: [ImageService],
})
export class ImageModule {}

View File

@@ -0,0 +1,26 @@
import { HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Image } from 'libs/database/image.entity';
import { Post } from 'libs/database/post.entity';
import { Repository } from 'typeorm';
import { IAddImage } from './image.dto';
@Injectable()
export class ImageService {
private readonly logger: Logger = new Logger(ImageService.name);
constructor(
@InjectRepository(Image) private imageRepository: Repository<Image>,
@InjectRepository(Post) private postRepository: Repository<Post>,
) {}
async add(data: IAddImage) {
try {
this.logger.log(`[image.add] data: ${JSON.stringify(data)}`);
const post = await this.postRepository.findOne({ where: { uuid: data.post_id } });
await this.imageRepository.save({ post: post, file_id: data.file_id, has_spoiler: data.has_spoiler, message_id: data.message_id });
return { status: 'ok' };
} catch (error) {
this.logger.debug(`[image.add] error: ${JSON.stringify(error)}`);
throw new HttpException('No posts', HttpStatus.BAD_REQUEST);
}
}
}