group = "space.nstart.pcp"

plugins {
    kotlin("jvm")
    kotlin("plugin.spring")
    id("org.springframework.boot")
    id("io.spring.dependency-management")
}

version = "0.0.1"

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of((property("versions.java") as String).toInt())
    }
}

kotlin {
    compilerOptions {
        freeCompilerArgs.addAll("-Xjsr305=strict")
    }
}

dependencies {
    // Реактивный edge: Spring Cloud Gateway (WebFlux-вариант) + конфиг из config-server.
    // Маршруты живут в config-repo/pcp-gateway-service.yaml — единый источник правды.
    implementation("org.springframework.cloud:spring-cloud-starter-gateway-server-webflux")
    implementation("org.springframework.cloud:spring-cloud-starter-config")
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    // Валидация JWT на edge (Keycloak/new-start-id) — включается флагом gateway.security.jwt-enabled.
    // Тянет reactive Spring Security (ServerHttpSecurity/@EnableWebFluxSecurity).
    implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")
    runtimeOnly("io.micrometer:micrometer-registry-prometheus")

    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")

    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

tasks.withType<Test> {
    useJUnitPlatform()
}

dependencyManagement {
    imports {
        mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("versions.spring.cloud")}")
    }
}
