}
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 {