Skip to content

Commit

Permalink
register question
Browse files Browse the repository at this point in the history
  • Loading branch information
overthestream committed Nov 20, 2023
1 parent 50c9da7 commit eca8bde
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 2 deletions.
21 changes: 20 additions & 1 deletion src/blurting/blurting.consumer.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,29 @@
import { Processor, Process } from '@nestjs/bull';
import { Job } from 'bull';
import { BlurtingService } from './blurting.service';
import { BlurtingGroupEntity, BlurtingQuestionEntity } from 'src/entities';
import { FcmService } from 'src/firebase/fcm.service';

@Processor('blurtingQuestions')
export class BlurtingConsumer {
constructor(
private blurtingService: BlurtingService,
private fcmService: FcmService,
) {}
@Process()
async processNewBlurtingQuestion(job: Job) {
console.log(job.data.id);
const question: BlurtingQuestionEntity = job.data.question;
const group: BlurtingGroupEntity = job.data.group;
const users: number[] = job.data.users;
await this.blurtingService.insertQuestionToGroup(question, group);
await Promise.all(
users.map(async (userid) => {
await this.fcmService.sendPush(
userid,
`${job.data.no}번쨰 질문이 등록되었습니다!`,
`그룹 질문에 응답해주세요.`,
);
}),
);
}
}
3 changes: 3 additions & 0 deletions src/blurting/blurting.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import { CacheModule } from '@nestjs/cache-manager';
import { redisStore } from 'cache-manager-redis-store';
import { BullModule } from '@nestjs/bull';
import { BlurtingConsumer } from './blurting.consumer';
import { FcmService } from 'src/firebase/fcm.service';
import { FcmModule } from 'src/firebase/fcm.module';
@Module({
imports: [
UserModule,
Expand All @@ -36,6 +38,7 @@ import { BlurtingConsumer } from './blurting.consumer';
BullModule.registerQueue({
name: 'blurtingQuestions',
}),
FcmModule,
],
controllers: [BlurtingController],
providers: [BlurtingService, BlurtingConsumer],
Expand Down
23 changes: 22 additions & 1 deletion src/blurting/blurting.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,28 @@ export class BlurtingService {
),
);


const questions = await this.questionRepository.find();
const shuffled = questions.sort(() => 0.5 - Math.random());

const selected = shuffled.slice(0, 9);
const hourInMs = 1000 * 60 * 60;
const questionDelay = hourInMs * 8;
await Promise.all(
selected.map(async (question, i) => {
await this.queue.add(
{ question, group, no: i + 1, users },
{ delay: i * questionDelay },
);
}),
);
}

async insertQuestionToGroup(
question: BlurtingQuestionEntity,
group: BlurtingGroupEntity,
) {
await group.questions.push(question);
await this.groupRepository.save(group);
}

async getBlurting(group: BlurtingGroupEntity): Promise<BlurtingPageDto> {
Expand Down

0 comments on commit eca8bde

Please sign in to comment.