From c2f4ba4a57c0021b084c5d5b83777f739ab2fd85 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 8 Nov 2022 18:14:23 +0800 Subject: [PATCH] Add features entity --- packages/api/src/entity/feature.ts | 35 ++++++++++++++++++++++ packages/api/src/routers/text_to_speech.ts | 16 ++++++---- 2 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 packages/api/src/entity/feature.ts diff --git a/packages/api/src/entity/feature.ts b/packages/api/src/entity/feature.ts new file mode 100644 index 000000000..0216896a4 --- /dev/null +++ b/packages/api/src/entity/feature.ts @@ -0,0 +1,35 @@ +import { + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm' +import { User } from './user' + +@Entity({ name: 'features' }) +export class Feature { + @PrimaryGeneratedColumn('uuid') + id!: string + + @ManyToOne(() => User, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'user_id' }) + user!: User + + @Column('text') + name!: string + + @Column('text') + token!: string + + @Column('timestamp', { nullable: true }) + grantedAt?: Date | null + + @CreateDateColumn({ default: () => 'CURRENT_TIMESTAMP' }) + createdAt!: Date + + @UpdateDateColumn({ default: () => 'CURRENT_TIMESTAMP' }) + updatedAt!: Date +} diff --git a/packages/api/src/routers/text_to_speech.ts b/packages/api/src/routers/text_to_speech.ts index 7a959838a..e0796a76d 100644 --- a/packages/api/src/routers/text_to_speech.ts +++ b/packages/api/src/routers/text_to_speech.ts @@ -15,6 +15,7 @@ import { AppDataSource } from '../server' import { enqueueTextToSpeech } from '../utils/createTask' import { htmlToSpeechFile } from '@omnivore/text-to-speech-handler' import { UserPersonalization } from '../entity/user_personalization' +import { ArticleSavingRequestStatus } from '../elastic/types' const logger = buildLogger('app.dispatch') @@ -36,17 +37,17 @@ export function textToSpeechRouter() { } try { - const data: { userId: string; type: string; id: string; state: string } = + const data: { userId: string; type: string; id: string } = JSON.parse(msgStr) - const { userId, type, id, state } = data + const { userId, type, id } = data if (!userId || !type || !id) { logger.info('Invalid data') return res.status(400).send('Bad Request') } - if (type.toUpperCase() !== 'PAGE' || state !== 'SUCCEEDED') { - logger.info('Not a page or not succeeded') - return res.status(200).send('Not a page or not succeeded') + if (type.toUpperCase() !== 'PAGE') { + logger.info('Not a page') + return res.status(200).send('Not a page') } const page = await getPageById(id) @@ -55,6 +56,11 @@ export function textToSpeechRouter() { return res.status(200).send('No page found') } + if (page.state === ArticleSavingRequestStatus.Processing) { + logger.info('Page is still processing, try again later', { id }) + return res.status(400).send('Page is still processing') + } + // checks if this page needs to be synthesized automatically if (await shouldSynthesize(userId, page)) { logger.info('page needs to be synthesized')