Added initial GET and POST endpoints
This commit is contained in:
@@ -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") {
|
||||||
|
|||||||
Reference in New Issue
Block a user