Added initial GET and POST endpoints

This commit is contained in:
2025-08-12 22:23:25 -04:00
parent bc808294ad
commit 88c3dfc590

View File

@@ -1,17 +1,32 @@
package codes.kalar.routes package codes.kalar.routes
import codes.kalar.exception.DbElementInsertionException
import codes.kalar.exception.DbElementNotFoundException
import codes.kalar.model.Library import codes.kalar.model.Library
import codes.kalar.model.NewLibrary
import codes.kalar.service.LibraryService
import io.ktor.http.*
import io.ktor.server.application.* import io.ktor.server.application.*
import io.ktor.server.request.* import io.ktor.server.request.*
import io.ktor.server.response.* import io.ktor.server.response.*
import io.ktor.server.routing.* import io.ktor.server.routing.*
import java.sql.Connection import java.sql.Connection
import java.sql.SQLException
fun Application.configureLibraryRoutes(dbConnection: Connection) { fun Application.configureLibraryRoutes(dbConnection: Connection) {
val libraryService = LibraryService(dbConnection)
routing { routing {
get("/libraries") { get("/libraries") {
call.respondText("Libraries are neat!") try {
val id = call.parameters["id"]?.toLong() ?: throw IllegalArgumentException("query parameter required")
val library = libraryService.read(id)
call.respond(HttpStatusCode.OK, library.toString())
} catch (cause: DbElementNotFoundException) {
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Unable to find Library.")
} catch (cause: IllegalArgumentException) {
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Missing 'id' parameter.")
}
} }
get("/libraries/{libraryId}/items/{itemId}") { get("/libraries/{libraryId}/items/{itemId}") {
@@ -19,8 +34,13 @@ fun Application.configureLibraryRoutes(dbConnection: Connection) {
} }
post("/libraries") { post("/libraries") {
val library = call.receive<Library>() val library = call.receive<NewLibrary>()
call.respondText("${library.name} is posted") try {
val id = libraryService.create(library)
call.respondText("${library.name} is posted with the ID: $id")
} catch (cause: DbElementInsertionException) {
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Unable to insert Library.")
}
} }
patch("/libraries") { patch("/libraries") {