From 2ceab0892cf22e328df2aabaadaf7b71a1975a4e Mon Sep 17 00:00:00 2001 From: vovastelmashchuk Date: Mon, 8 Jul 2024 10:08:11 +0300 Subject: [PATCH] ratting new update --- src/main/kotlin/org/mixdrinks/mongo/Mongo.kt | 17 +++++++++++++++++ .../mixdrinks/view/controllers/score/Score.kt | 5 ++++- src/main/kotlin/org/mixdrinks/view/v2/Api.kt | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/org/mixdrinks/mongo/Mongo.kt b/src/main/kotlin/org/mixdrinks/mongo/Mongo.kt index 8511bd9..e6955fc 100644 --- a/src/main/kotlin/org/mixdrinks/mongo/Mongo.kt +++ b/src/main/kotlin/org/mixdrinks/mongo/Mongo.kt @@ -27,6 +27,8 @@ class Mongo(connectionString: String) { data class MongoCocktail( val id: Int, val visitCount: Int, + val ratingCount: Int, + val ratingValue: Int?, ) suspend fun incVisitCount(id: Int) { @@ -38,4 +40,19 @@ class Mongo(connectionString: String) { update = updateParams, ) } + + suspend fun updateRating(id: Int, vote: Int) { + val queryParam = Filters.eq("id", id) + + val updateParams = Updates.combine( + Updates.inc("ratingCount", 1), + Updates.inc("ratingValue", vote), + ) + + database.getCollection(collectionName = "cocktails") + .updateOne( + filter = queryParam, + update = updateParams, + ) + } } diff --git a/src/main/kotlin/org/mixdrinks/view/controllers/score/Score.kt b/src/main/kotlin/org/mixdrinks/view/controllers/score/Score.kt index 21922da..0baf41b 100644 --- a/src/main/kotlin/org/mixdrinks/view/controllers/score/Score.kt +++ b/src/main/kotlin/org/mixdrinks/view/controllers/score/Score.kt @@ -17,12 +17,13 @@ import org.mixdrinks.cocktails.score.scoreCocktailsChangeResponse import org.mixdrinks.data.Cocktail import org.mixdrinks.data.CocktailsTable import org.mixdrinks.dto.CocktailId +import org.mixdrinks.mongo.Mongo import org.mixdrinks.view.controllers.settings.AppSettings import org.mixdrinks.view.error.QueryRequireException import org.mixdrinks.view.error.VoteError import org.mixdrinks.view.v2.getCocktailId -fun Application.score(appSettings: AppSettings) { +fun Application.score(appSettings: AppSettings, mongo: Mongo) { routing { post("v2/cocktails/score") { val id = call.getCocktailId() @@ -38,6 +39,8 @@ fun Application.score(appSettings: AppSettings) { } } + mongo.updateRating(id.id, vote) + call.respond(transaction { scoreCocktailsChangeResponse( Cocktail.findById(id.id)!! diff --git a/src/main/kotlin/org/mixdrinks/view/v2/Api.kt b/src/main/kotlin/org/mixdrinks/view/v2/Api.kt index 1d8743e..edd7e1b 100644 --- a/src/main/kotlin/org/mixdrinks/view/v2/Api.kt +++ b/src/main/kotlin/org/mixdrinks/view/v2/Api.kt @@ -31,7 +31,7 @@ fun Application.api( } println("Visit routing initialized.") - this.score(appSettings) + this.score(appSettings, Mongo(mongoString)) this.cocktails() this.items()