-
Notifications
You must be signed in to change notification settings - Fork 1
/
Application.kt
45 lines (38 loc) · 1.26 KB
/
Application.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.example
import com.example.dataaccess.MessageDataAccessor
import com.example.routes.messagesRoutes
import io.ktor.application.*
import io.ktor.features.*
import io.ktor.gson.*
import io.ktor.http.*
import io.ktor.routing.*
import org.jetbrains.exposed.sql.Database
fun main(args: Array<String>): Unit = io.ktor.server.jetty.EngineMain.main(args)
@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module() {
install(ContentNegotiation) {
gson {
}
}
install(CORS) {
method(HttpMethod.Options)
method(HttpMethod.Put)
method(HttpMethod.Delete)
method(HttpMethod.Patch)
header(HttpHeaders.Authorization)
header(HttpHeaders.ContentType)
allowCredentials = true
anyHost() // @TODO: Don't do this in production if possible. Try to limit it.
}
// データベースのホスト名 (環境変数 `DATABASE_HOSTNAME` から取得)
val databaseHostName = System.getenv("DATABASE_HOSTNAME") ?: "localhost"
Database.connect(
url = "jdbc:mysql://$databaseHostName:3306/ktor-starter",
driver = "com.mysql.cj.jdbc.Driver",
user = "root",
)
routing {
messagesRoutes(MessageDataAccessor())
}
}