val koin_version: String by project
val kotlin_version: String by project
val logback_version: String by project
val dynamo_version: String by project
val dynamo_kt_version: String by project
val mockk_version: String by project
val kotlin_reactive_version: String by project
val koin_test_version: String by project
val assertj_core_version: String by project
val localstack_version: String by project


plugins {
    kotlin("jvm") version "2.1.10"
    id("io.ktor.plugin") version "2.3.13"
}

group = "betclic.test"
version = "0.0.1-SNAPSHOT"

application {
    mainClass.set("io.ktor.server.netty.EngineMain")

    val isDevelopment: Boolean = project.ext.has("development")
    applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
}

repositories {
    mavenCentral()
}

dependencies {
    // Ktor
    implementation("io.ktor:ktor-server-core")
    implementation("io.ktor:ktor-server-auth")
    implementation("io.ktor:ktor-server-openapi")
    implementation("io.ktor:ktor-server-config-yaml")
    implementation("io.ktor:ktor-server-netty")

    // Dependency injection
    implementation("io.insert-koin:koin-ktor:$koin_version")
    implementation("io.insert-koin:koin-logger-slf4j:$koin_version")

    // Content negociation
    implementation("io.ktor:ktor-server-content-negotiation")
    implementation("io.ktor:ktor-serialization-jackson")
    implementation("ch.qos.logback:logback-classic:$logback_version")

    // Database
    implementation("software.amazon.awssdk:dynamodb-enhanced:$dynamo_version")
    implementation("software.amazon.awssdk:dynamodb:$dynamo_version")
    implementation("dev.andrewohara:dynamokt:$dynamo_kt_version")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$kotlin_reactive_version")

    // Tests
    testImplementation("io.ktor:ktor-server-test-host")
    testImplementation("io.mockk:mockk:$mockk_version")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
    testImplementation("io.insert-koin:koin-test:$koin_test_version")
    testImplementation("org.assertj:assertj-core:$assertj_core_version")
    testImplementation("org.testcontainers:localstack:$localstack_version")
}