From 37faca05faf3a0b886ea7a07670d835a373ef910 Mon Sep 17 00:00:00 2001 From: Lanius Trolling Date: Tue, 25 Jul 2023 13:06:00 -0400 Subject: [PATCH] Fix attempt to update missing document --- src/main/kotlin/info/mechyrdia/data/visits.kt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/info/mechyrdia/data/visits.kt b/src/main/kotlin/info/mechyrdia/data/visits.kt index 6d581e6..72b727b 100644 --- a/src/main/kotlin/info/mechyrdia/data/visits.kt +++ b/src/main/kotlin/info/mechyrdia/data/visits.kt @@ -43,13 +43,22 @@ data class PageVisitData( } suspend fun visit(path: String, visitor: String) { - Table.update( - and(PageVisitData::path eq path, PageVisitData::visitor eq visitor), - combine( - inc(PageVisitData::visits, 1L), - setValue(PageVisitData::lastVisit, Instant.now()) + val data = Table.locate(and(PageVisitData::path eq path, PageVisitData::visitor eq visitor)) + if (data == null) + Table.put( + PageVisitData( + path = path, + visitor = visitor, + visits = 1L, + ) + ) + else + Table.put( + data.copy( + visits = data.visits + 1, + lastVisit = Instant.now() + ) ) - ) } suspend fun totalVisits(path: String): PageVisitTotals { -- 2.25.1