11package com.chattriggers.website.api
22
3+ import com.chattriggers.website.data.TrackedTimestamp
4+ import com.chattriggers.website.data.TrackedTimestamps
35import com.chattriggers.website.data.TrackedUser
46import com.chattriggers.website.data.TrackedUsers
5- import com.fasterxml.jackson.core.Version
67import io.javalin.apibuilder.ApiBuilder.get
78import io.javalin.apibuilder.ApiBuilder.path
89import io.javalin.http.BadRequestResponse
910import io.javalin.http.Context
1011import org.jetbrains.exposed.sql.Op
12+ import org.jetbrains.exposed.sql.and
1113import org.jetbrains.exposed.sql.transactions.transaction
12- import java.util.*
14+ import org.joda.time.DateTime
1315
1416fun trackingRoutes () {
1517 path(" statistics" ) {
@@ -26,13 +28,28 @@ private fun tracking(ctx: Context) {
2628
2729 transaction {
2830 val existingUser = TrackedUser .find(Op .build { TrackedUsers .hash eq hash })
29- if (existingUser.empty()) {
31+ val user = if (existingUser.empty()) {
3032 TrackedUser .new {
3133 this .hash = hash
3234 this .version = version
3335 }
3436 } else {
35- existingUser.first().version = version
37+ existingUser.first().also {
38+ it.version = version
39+ }
40+ }
41+
42+ val time = DateTime .now()
43+
44+ val existingTimestamp = TrackedTimestamp .find {
45+ (TrackedTimestamps .user eq user.id) and (TrackedTimestamps .time eq time)
46+ }
47+
48+ if (existingTimestamp.empty()) {
49+ TrackedTimestamp .new {
50+ this .user = user
51+ this .time = DateTime .now()
52+ }
3653 }
3754
3855 ctx.status(200 )
0 commit comments