mirror of
https://github.com/MrSedan/neuro-reply-website.git
synced 2026-01-14 20:49:42 +03:00
Added image module
This commit is contained in:
@@ -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],
|
||||
})
|
||||
|
||||
16
backend/src/modules/image/image.controller.ts
Normal file
16
backend/src/modules/image/image.controller.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
8
backend/src/modules/image/image.dto.ts
Normal file
8
backend/src/modules/image/image.dto.ts
Normal 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;
|
||||
}
|
||||
11
backend/src/modules/image/image.module.ts
Normal file
11
backend/src/modules/image/image.module.ts
Normal 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 {}
|
||||
26
backend/src/modules/image/image.service.ts
Normal file
26
backend/src/modules/image/image.service.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user