返回 AiToEarn
engagement-sub-task.repository.ts
根目录 / project / aitoearn-backend / libs / channel-db / src / repositories / engagement-sub-task.repository.ts
1 import { Injectable } from '@nestjs/common'
2 import { InjectModel } from '@nestjs/mongoose'
3 import { Model } from 'mongoose'
4 import { DB_CONNECTION_NAME } from '../common'
5 import { EngagementSubTask, EngagementTaskStatus } from '../schemas'
6 import { BaseRepository } from './base.repository'
7
8 @Injectable()
9 export class EngagementSubTaskRepository extends BaseRepository<EngagementSubTask> {
10 constructor(
11 @InjectModel(EngagementSubTask.name, DB_CONNECTION_NAME) private engagementSubTaskModel: Model<EngagementSubTask>,
12 ) {
13 super(engagementSubTaskModel)
14 }
15
16 async saveNewData(data: Partial<EngagementSubTask>) {
17 const subPublishTask = new this.engagementSubTaskModel(data)
18 const saved = await subPublishTask.save()
19 return saved.toObject()
20 }
21
22 async searchEngagementSubTasksByCommentId(postId: string, commentId: string, status: EngagementTaskStatus): Promise<EngagementSubTask[] | null> {
23 return this.engagementSubTaskModel.find({ postId, commentId, status: { $ne: status } }).lean({ virtuals: true })
24 }
25
26 async queryEngagementSubTasksByTaskId(taskId: string): Promise<EngagementSubTask[]> {
27 return this.engagementSubTaskModel.find({ taskId, status: { $ne: EngagementTaskStatus.COMPLETED } }).lean({ virtuals: true })
28 }
29
30 async findById(subTaskId: string): Promise<EngagementSubTask | null> {
31 return this.engagementSubTaskModel.findById(subTaskId).lean({ virtuals: true })
32 }
33
34 async updateInfo(subTaskId: string, updateData: Partial<EngagementSubTask>): Promise<EngagementSubTask | null> {
35 return this.engagementSubTaskModel.findByIdAndUpdate(subTaskId, updateData).lean({ virtuals: true })
36 }
37
38 async updateStatus(subTaskId: string, status: EngagementTaskStatus): Promise<EngagementSubTask | null> {
39 return this.engagementSubTaskModel.findByIdAndUpdate(subTaskId, { status }).lean({ virtuals: true })
40 }
41 }
42
42 lines TYPESCRIPT