@@ -3,31 +3,16 @@ import com.github.jasync.sql.db.QueryResult
3
3
import com.github.jasync.sql.db.SuspendingConnection
4
4
import com.github.jasync.sql.db.asSuspending
5
5
import com.github.jasync.sql.db.postgresql.PostgreSQLConnectionBuilder
6
- import io.ktor.http.ContentType
7
6
import io.ktor.server.application.*
8
- import io.ktor.server.engine.embeddedServer
9
7
import io.ktor.server.html.*
10
- import io.ktor.server.netty.Netty
11
8
import io.ktor.server.plugins.defaultheaders.*
12
9
import io.ktor.server.response.*
13
10
import io.ktor.server.routing.*
14
11
import kotlinx.coroutines.*
15
12
import kotlinx.html.*
16
- import kotlinx.serialization.Serializable
17
- import kotlinx.serialization.encodeToString
18
- import kotlinx.serialization.json.Json
19
- import java.lang.IllegalArgumentException
20
13
import kotlin.random.Random
21
14
import kotlin.random.nextInt
22
15
23
- @Serializable
24
- data class Message (val message : String )
25
-
26
- @Serializable
27
- data class World (val id : Int , val randomNumber : Int )
28
-
29
- data class Fortune (val id : Int , val message : String )
30
-
31
16
val rand = Random (1 )
32
17
33
18
interface Repository {
@@ -121,57 +106,46 @@ class FortuneTemplate(private val fortunes: List<Fortune>, private val main: Mai
121
106
}
122
107
}
123
108
124
- fun main (args : Array <String >) {
125
- val db = when (args.firstOrNull()) {
126
- " jasync-sql" -> JasyncRepository ()
127
- else -> throw IllegalArgumentException (" Must specify a postgres client" )
128
- }
109
+ fun Application.main () {
129
110
130
- val server = embeddedServer(Netty , 8080 , configure = {
131
- shareWorkGroup = true
132
- }) {
133
- install(DefaultHeaders )
134
- routing {
135
- get(" /plaintext" ) {
136
- call.respondText(" Hello, World!" )
137
- }
111
+ val db = JasyncRepository ()
138
112
139
- get(" /json" ) {
140
- call.respondText(
141
- Json .encodeToString(Message (" Hello, World!" )),
142
- ContentType .Application .Json
143
- )
144
- }
113
+ install(DefaultHeaders )
114
+ routing {
115
+ get(" /plaintext" ) {
116
+ call.respondText(" Hello, World!" )
117
+ }
145
118
146
- get(" /db " ) {
147
- call.respondText( Json .encodeToString(db.getWorld()), ContentType . Application . Json )
148
- }
119
+ get(" /json " ) {
120
+ call.respondJson( Message ( " Hello, World! " ) )
121
+ }
149
122
150
- get(" /query/" ) {
151
- val queries = call.parameters[" queries" ]?.toBoxedInt(1 .. 500 ) ? : 1
152
- val worlds = (1 .. queries).map { db.getWorld() }
153
- call.respondText(Json .encodeToString(worlds), ContentType .Application .Json )
154
- }
123
+ get(" /db" ) {
124
+ call.respondJson(db.getWorld())
125
+ }
155
126
156
- get(" /fortunes" ) {
157
- val newFortune = Fortune (0 , " Additional fortune added at request time." )
158
- val fortunes = db.getFortunes().toMutableList()
159
- fortunes.add(newFortune)
160
- fortunes.sortBy { it.message }
161
- call.respondHtmlTemplate(FortuneTemplate (fortunes)) { }
162
- }
127
+ get(" /query/" ) {
128
+ val queries = call.parameters[" queries" ]?.toBoxedInt(1 .. 500 ) ? : 1
129
+ val worlds = (1 .. queries).map { db.getWorld() }
130
+ call.respondJson(worlds)
131
+ }
163
132
164
- get(" /updates" ) {
165
- val queries = call.parameters[" queries" ]?.toBoxedInt(1 .. 500 ) ? : 1
166
- val worlds = (1 .. queries).map { db.getWorld() }
167
- val newWorlds = worlds.map { it.copy(randomNumber = rand.nextInt(1 .. 10000 )) }
133
+ get(" /fortunes" ) {
134
+ val newFortune = Fortune (0 , " Additional fortune added at request time." )
135
+ val fortunes = db.getFortunes().toMutableList()
136
+ fortunes.add(newFortune)
137
+ fortunes.sortBy { it.message }
138
+ call.respondHtmlTemplate(FortuneTemplate (fortunes)) { }
139
+ }
168
140
169
- db.updateWorlds(newWorlds)
141
+ get(" /updates" ) {
142
+ val queries = call.parameters[" queries" ]?.toBoxedInt(1 .. 500 ) ? : 1
143
+ val worlds = (1 .. queries).map { db.getWorld() }
144
+ val newWorlds = worlds.map { it.copy(randomNumber = rand.nextInt(1 .. 10000 )) }
170
145
171
- call.respondText(Json .encodeToString(newWorlds), ContentType .Application .Json )
172
- }
146
+ db.updateWorlds(newWorlds)
147
+
148
+ call.respondJson(newWorlds)
173
149
}
174
150
}
175
-
176
- server.start(wait = true )
177
151
}
0 commit comments