Files
recipe/server/build.gradle.kts

71 lines
2.0 KiB
Kotlin

plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSerialization)
alias(libs.plugins.ktor)
alias(libs.plugins.flywayPlugin)
alias(libs.plugins.koin.compiler)
application
id("recipe.quality")
}
group = "dev.ulfrx.recipe"
version = "1.0.0"
kotlin {
jvmToolchain(21)
compilerOptions {
allWarningsAsErrors.set(true)
}
}
tasks.test {
useJUnitPlatform()
}
application {
mainClass.set("dev.ulfrx.recipe.ApplicationKt")
val isDevelopment: Boolean = project.ext.has("development")
applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
}
dependencies {
implementation(libs.ktor.serverCore)
implementation(libs.ktor.serverNetty)
implementation(libs.ktor.serverContentNegotiation)
implementation(libs.ktor.serializationKotlinxJson)
implementation(libs.kotlinx.serializationJson)
implementation(libs.logback)
implementation(libs.flyway.core)
implementation(libs.flyway.database.postgresql)
implementation(libs.postgresql)
implementation(projects.shared)
implementation(libs.ktor.serverAuth)
implementation(libs.ktor.serverAuthJwt)
implementation(libs.ktor.serverCallLogging)
implementation(libs.ktor.serverStatusPages)
// Phase 2: Exposed DSL + Hikari connection pool (D-26).
implementation(libs.exposed.core)
implementation(libs.exposed.jdbc)
implementation(libs.exposed.java.time)
implementation(libs.hikari)
testImplementation(libs.ktor.serverTestHost)
testImplementation(libs.kotlin.testJunit5)
testImplementation(libs.testcontainers.postgresql)
testImplementation(libs.testcontainers.junit.jupiter)
}
flyway {
url = System.getenv("DATABASE_URL") ?: "jdbc:postgresql://localhost:5432/recipe"
user = System.getenv("DATABASE_USER") ?: "recipe"
password = System.getenv("DATABASE_PASSWORD") ?: "recipe"
locations = arrayOf("classpath:db/migration")
cleanDisabled = true
baselineOnMigrate = true
validateOnMigrate = true
}