Fix attempt to update missing document
authorLanius Trolling <lanius@laniustrolling.dev>
Tue, 25 Jul 2023 17:06:00 +0000 (13:06 -0400)
committerLanius Trolling <lanius@laniustrolling.dev>
Tue, 25 Jul 2023 17:06:42 +0000 (13:06 -0400)
src/main/kotlin/info/mechyrdia/data/visits.kt

index 6d581e64bf3a3c39456edb0745644a44f4d43418..72b727b8c01c9a04e7190e79a4531501c7c8ecf3 100644 (file)
@@ -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 {