patching values

This commit is contained in:
calboo
2025-11-30 21:59:05 +01:00
parent 7a100c96c9
commit b77f2fa371
5 changed files with 52 additions and 1 deletions

View File

@@ -13,6 +13,7 @@ import kotlinx.serialization.json.Json
import org.calvin.erfmann.api.routes.getValue import org.calvin.erfmann.api.routes.getValue
import org.calvin.erfmann.api.routes.helloRoutes import org.calvin.erfmann.api.routes.helloRoutes
import org.calvin.erfmann.api.routes.login import org.calvin.erfmann.api.routes.login
import org.calvin.erfmann.api.routes.patchValue
import org.calvin.erfmann.api.routes.setValue import org.calvin.erfmann.api.routes.setValue
import org.calvin.erfmann.stuff.authService import org.calvin.erfmann.stuff.authService
import org.calvin.erfmann.theGoodStuff.PoolManager import org.calvin.erfmann.theGoodStuff.PoolManager
@@ -23,6 +24,7 @@ fun Application.configureRouting(authService: authService, poolManager: PoolMana
login(authService) login(authService)
getValue(authService, poolManager) getValue(authService, poolManager)
setValue(authService, poolManager) setValue(authService, poolManager)
patchValue(authService, poolManager)
} }
} }

View File

@@ -11,7 +11,7 @@ import org.calvin.erfmann.stuff.authService
import org.calvin.erfmann.theGoodStuff.PoolManager import org.calvin.erfmann.theGoodStuff.PoolManager
@Serializable @Serializable
data class GetValueRequest(val token: String, val pool: String, val key: String) data class GetValueRequest(val token: String, val pool: String, val key: String,)
fun Route.getValue(authService: authService, poolManager: PoolManager) { fun Route.getValue(authService: authService, poolManager: PoolManager) {

View File

@@ -0,0 +1,41 @@
package org.calvin.erfmann.api.routes
import io.ktor.server.routing.patch
import io.ktor.server.application.call
import io.ktor.server.request.receive
import io.ktor.server.response.respond
import io.ktor.server.routing.Route
import io.ktor.server.routing.post
import kotlinx.serialization.Serializable
import org.calvin.erfmann.stuff.authService
import org.calvin.erfmann.theGoodStuff.PoolManager
@Serializable
data class PatchValueRequest(val token: String, val pool: String, val key: String, val value: String)
fun Route.patchValue(authService: authService, poolManager: PoolManager) {
patch("/value") {
val request = call.receive<SetValueRequest>()
val isValid = authService.isTokenValid(request.token)
if (isValid) {
val pool = poolManager.getPool(request.pool)
if (pool != null) {
pool.setValueValue(request.key, request.value)
call.respond(mapOf("status" to "success"))
} else {
call.respond(mapOf("error" to "Pool not found"))
}
} else {
call.respond(mapOf("error" to "Invalid token"))
}
}
}

View File

@@ -28,6 +28,7 @@ fun Route.setValue(authService: authService, poolManager: PoolManager) {
call.respond(mapOf("status" to "success")) call.respond(mapOf("status" to "success"))
} else { } else {
poolManager.createPool(request.pool).setValueValue(request.key, request.value) poolManager.createPool(request.pool).setValueValue(request.key, request.value)
call.respond(mapOf("status" to "success"))
} }
} else { } else {
call.respond(mapOf("error" to "Invalid token")) call.respond(mapOf("error" to "Invalid token"))

View File

@@ -23,6 +23,13 @@ class Pool(initName: String) {
} }
} }
fun updateValueValue(key: String, newValue: String) {
val value = values[key]
if (value != null) {
value.setValueValue(newValue)
}
}
fun getVersion(key: String, version: Long): String? { fun getVersion(key: String, version: Long): String? {
val value = values[key] val value = values[key]
return value?.getVersion(version) return value?.getVersion(version)