Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 5x 5x 5x 5x 5x 5x 3x 3x 3x 3x 3x 3x 1x 1x 2x 1x 1x | import { InjectModel } from '@m8a/nestjs-typegoose'
import { Injectable, Logger } from '@nestjs/common'
import { ReturnModelType } from '@typegoose/typegoose'
import { ObjectId } from 'mongoose'
import { MailEvent } from '../entities/mail-event.entity'
@Injectable()
export class MailEventDBService {
private readonly logger = new Logger(MailEventDBService.name)
constructor(
@InjectModel(MailEvent)
private readonly mailEventModel: ReturnModelType<typeof MailEvent>,
) {}
async createEvent(event: Partial<MailEvent>): Promise<MailEvent> {
this.logger.log('Creating mail event')
const newEvent = await this.mailEventModel.create(event)
return newEvent
}
async getOpenEventsBefore(endDate: Date): Promise<MailEvent[]> {
const events = this.mailEventModel
.find({
scheduledAt: {
$lte: endDate,
},
})
.lean()
return events
}
async markMailsAsSend(ids: ObjectId[]): Promise<void> {
if (ids.length == 0) {
this.logger.log('Empty update will not be executed')
return
}
await this.mailEventModel.updateMany(
{ _id: { $in: ids } },
{ hasBeenSent: true },
)
}
async rescheduleMails(ids: ObjectId[], newDate: Date): Promise<void> {
Iif (ids.length == 0) {
this.logger.log('Empty update will not be executed')
return
}
await this.mailEventModel.updateMany(
{ _id: { $in: ids } },
{
scheduledAt: newDate,
hasBeenRescheduled: true,
},
)
}
}
|