24 lines
960 B
JavaScript
24 lines
960 B
JavaScript
import { PromoNotes, PromoReads } from "../../../models/index.js";
|
|
import { genId } from "../../../misc/gen-id.js";
|
|
export async function readPromo(note, promo, user) {
|
|
if (promo.expiresAt.getTime() <= Date.now() || promo.remainingCredits <= 0 || promo.userId === user.id || note.userId === user.id || user.isAdmin || user.isModerator || user.isBot) {
|
|
return;
|
|
}
|
|
const readDay = new Date().toISOString().slice(0, 10);
|
|
const result = await PromoReads.createQueryBuilder().insert().values({
|
|
id: genId(),
|
|
createdAt: new Date(),
|
|
noteId: note.id,
|
|
userId: user.id,
|
|
readDay
|
|
}).orIgnore().returning("id").execute();
|
|
if (result.raw.length === 0) {
|
|
return;
|
|
}
|
|
await PromoNotes.createQueryBuilder().update().set({
|
|
remainingCredits: ()=>`"remainingCredits" - 1`
|
|
}).where(`"noteId" = :noteId`, {
|
|
noteId: note.id
|
|
}).andWhere(`"remainingCredits" > 0`).execute();
|
|
}
|