Async problems

This commit is contained in:
2024-02-13 16:03:48 +03:00
parent 730c28da57
commit 9097e6cc4f
4 changed files with 59 additions and 7 deletions

View File

@@ -13,8 +13,8 @@ export class Post {
@Column({ default: false }) @Column({ default: false })
public posted!: boolean; public posted!: boolean;
@Column() @Column({ nullable: true })
public text: string; public text?: string;
@Column({ nullable: true }) @Column({ nullable: true })
public media_group_id: string; public media_group_id: string;

View File

@@ -1,8 +1,12 @@
import { ApiProperty } from '@nestjs/swagger'; import { ApiProperty } from '@nestjs/swagger';
export class IAddImage { export class IAddImage {
@ApiProperty({ description: 'A post that contains this photo', example: '1212-4324-asdf-23432' }) readonly post_id!: string; // @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: '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: 'Has image the spoiler?', example: false }) readonly has_spoiler!: boolean;
@ApiProperty({ description: 'A photo message id', example: '123124' }) readonly message_id!: number; @ApiProperty({ description: 'A photo message id', example: '123124' }) readonly message_id!: number;
@ApiProperty({ description: 'Post text', example: '#neurowaifu', required: false }) readonly post_text?: string;
@ApiProperty({ description: 'A media group id of the photo', example: '1241244', required: false }) readonly media_group_id?: string;
@ApiProperty({ description: 'Message entities of text', example: '[]' }) readonly message_entities?: string;
@ApiProperty({ description: 'The id of user that creating post', example: '1234' }) readonly from_user_id!: string;
} }

View File

@@ -1,5 +1,6 @@
import { HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common'; import { HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Admin } from 'libs/database/admin.entity';
import { Image } from 'libs/database/image.entity'; import { Image } from 'libs/database/image.entity';
import { Post } from 'libs/database/post.entity'; import { Post } from 'libs/database/post.entity';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
@@ -10,14 +11,61 @@ export class ImageService {
constructor( constructor(
@InjectRepository(Image) private imageRepository: Repository<Image>, @InjectRepository(Image) private imageRepository: Repository<Image>,
@InjectRepository(Post) private postRepository: Repository<Post>, @InjectRepository(Post) private postRepository: Repository<Post>,
@InjectRepository(Admin) private adminRepository: Repository<Admin>,
) {} ) {}
async add(data: IAddImage) { async add(data: IAddImage) {
try { try {
this.logger.log(`[image.add] data: ${JSON.stringify(data)}`); this.logger.log(`[image.add] data: ${JSON.stringify(data)}`);
const post = await this.postRepository.findOne({ where: { uuid: data.post_id } }); let created_new = false;
await this.imageRepository.save({ post: post, file_id: data.file_id, has_spoiler: data.has_spoiler, message_id: data.message_id }); if (data.media_group_id) {
return { status: 'ok' }; let post = await this.postRepository.findOne({ where: { media_group_id: data.media_group_id } });
if (post) {
await this.imageRepository.save({
post: post,
file_id: data.file_id,
has_spoiler: data.has_spoiler,
message_id: data.message_id,
});
if (data.post_text) {
post.text = data.post_text;
post.message_entities = data.message_entities;
post = await this.postRepository.save(post);
}
} else {
const user = await this.adminRepository.findOne({ where: { user: { id: data.from_user_id } }, relations: { user: true } });
post = await this.postRepository.save({
media_group_id: data.media_group_id,
text: data.post_text,
message_entities: data.message_entities,
timestamp: new Date(),
from_user: user,
});
created_new = true;
await this.imageRepository.save({
post: post,
file_id: data.file_id,
has_spoiler: data.has_spoiler,
message_id: data.message_id,
});
this.logger.log('Created post');
}
} else {
const user = await this.adminRepository.findOne({ where: { user: { id: data.from_user_id } }, relations: { user: true } });
const post = await this.postRepository.save({
text: data.post_text,
message_entities: data.message_entities,
timestamp: new Date(),
from_user: user,
});
await this.imageRepository.save({
post: post,
file_id: data.file_id,
has_spoiler: data.has_spoiler,
message_id: data.message_id,
});
}
return { status: 'ok', created: created_new };
} catch (error) { } catch (error) {
this.logger.debug(`[image.add] error: ${JSON.stringify(error)}`); this.logger.debug(`[image.add] error: ${JSON.stringify(error)}`);
throw new HttpException('No posts', HttpStatus.BAD_REQUEST); throw new HttpException('No posts', HttpStatus.BAD_REQUEST);

View File

@@ -9,7 +9,7 @@ export class SettingsService {
private readonly logger: Logger = new Logger(SettingsService.name); private readonly logger: Logger = new Logger(SettingsService.name);
async getSettings() { async getSettings() {
this.logger.log('[settings.getSettings]'); this.logger.debug('[settings.getSettings]');
const settings = await this.botSettingsRepository.findOneBy({ isActive: true }); const settings = await this.botSettingsRepository.findOneBy({ isActive: true });
if (settings) return settings; if (settings) return settings;
this.logger.debug(`[settings.getSettings] No active settings found`); this.logger.debug(`[settings.getSettings] No active settings found`);