diff --git a/backend/api/controllers/quote.ts b/backend/api/controllers/quote.ts index d537f5e69..15280881c 100644 --- a/backend/api/controllers/quote.ts +++ b/backend/api/controllers/quote.ts @@ -3,7 +3,7 @@ import { v4 as uuidv4 } from "uuid"; import { getUser, updateQuoteRatings } from "../../dao/user"; import * as ReportDAL from "../../dao/report"; import * as NewQuotesDAL from "../../dao/new-quotes"; -import QuoteRatingsDAO from "../../dao/quote-ratings"; +import * as QuoteRatingsDAL from "../../dao/quote-ratings"; import MonkeyError from "../../utils/error"; import { verify } from "../../utils/captcha"; import Logger from "../../utils/logger"; @@ -79,7 +79,7 @@ export async function getRating( ): Promise { const { quoteId, language } = req.query; - const data = await QuoteRatingsDAO.get( + const data = await QuoteRatingsDAL.get( parseInt(quoteId as string, 10), language as string ); @@ -104,7 +104,7 @@ export async function submitRating( const newRating = normalizedRating - currentRating; const shouldUpdateRating = currentRating !== 0; - await QuoteRatingsDAO.submit( + await QuoteRatingsDAL.submit( quoteId, language, newRating, diff --git a/backend/dao/quote-ratings.ts b/backend/dao/quote-ratings.ts index ac5eb8807..94d3be21f 100644 --- a/backend/dao/quote-ratings.ts +++ b/backend/dao/quote-ratings.ts @@ -1,50 +1,46 @@ import db from "../init/db"; -class QuoteRatingsDAO { - static async submit( - quoteId: number, - language: string, - rating: number, - update: boolean - ): Promise { - if (update) { - await db - .collection("quote-rating") - .updateOne( - { quoteId, language }, - { $inc: { totalRating: rating } }, - { upsert: true } - ); - } else { - await db - .collection("quote-rating") - .updateOne( - { quoteId, language }, - { $inc: { ratings: 1, totalRating: rating } }, - { upsert: true } - ); - } - - const quoteRating = await this.get(quoteId, language); - const average = parseFloat( - ( - Math.round((quoteRating!.totalRating / quoteRating!.ratings) * 10) / 10 - ).toFixed(1) - ); - +export async function submit( + quoteId: number, + language: string, + rating: number, + update: boolean +): Promise { + if (update) { await db .collection("quote-rating") - .updateOne({ quoteId, language }, { $set: { average } }); + .updateOne( + { quoteId, language }, + { $inc: { totalRating: rating } }, + { upsert: true } + ); + } else { + await db + .collection("quote-rating") + .updateOne( + { quoteId, language }, + { $inc: { ratings: 1, totalRating: rating } }, + { upsert: true } + ); } - static async get( - quoteId: number, - language: string - ): Promise { - return await db - .collection("quote-rating") - .findOne({ quoteId, language }); - } + const quoteRating = await get(quoteId, language); + const average = parseFloat( + ( + Math.round((quoteRating!.totalRating / quoteRating!.ratings) * 10) / 10 + ).toFixed(1) + ); + + await db + .collection("quote-rating") + .updateOne({ quoteId, language }, { $set: { average } }); } -export default QuoteRatingsDAO; +export async function get( + quoteId: number, + language: string +): Promise { + return await db + .collection("quote-rating") + .findOne({ quoteId, language }); +}