import nu.studer.gradle.jooq.JooqEdition

/* Composite build for jooq object generator (JooqGenerater.java) */

plugins {
    id "nu.studer.jooq" version "8.2"
    id "java"
}

repositories {
    maven {
        url = "https://plugins.gradle.org/m2/"
    }
    mavenCentral()
    mavenLocal()
}

group = "dmo.fs.utils"
version = "0.0.1"

ext {
  vertxVersion = "4.5.13"
}

def jooqVersion = "3.19.18"

jooq {
  version = "3.19.18"
  edition = JooqEdition.OSS
}

task copyDatabaseConfig(type: Copy) {
    from("src/main/resources/database_config.json") 
    into new File("build", "resources/main")
    doLast {
      compileJava
    }
}
/*
  Using a java class to generate jooq objects - allows for multiple db's -
  see ./src/main/kotlin/golf/handicap/generated/ directory
*/
tasks.register('jooqGenerate', JavaExec) {
    doFirst {
        defaultTasks 'clean'
        classpath = sourceSets.main.runtimeClasspath
    }
//    environment.remove("DEFAULT_DB")
    environment "VERTXWEB_ENVIRONMENT", "prod"
    mainClass = "dmo.fs.db.generate.utils.JooqGenerate"
    args = ["prod"]
    setIgnoreExitValue(true)
    dependsOn copyDatabaseConfig
}

java {
    sourceCompatibility = JavaVersion.VERSION_21
    targetCompatibility = JavaVersion.VERSION_21
}

dependencies {
    implementation(platform("io.vertx:vertx-stack-depchain:$vertxVersion"))
    implementation("io.vertx:vertx-core:$vertxVersion")
    implementation("io.vertx:vertx-rx-java3:$vertxVersion")
    implementation "io.vertx:vertx-web-api-contract:$vertxVersion"
    implementation("io.vertx:vertx-jdbc-client:$vertxVersion")
    implementation("io.agroal:agroal-pool:2.5")
    implementation('org.xerial:sqlite-jdbc:3.47.1.0')
    implementation("io.vertx:vertx-mysql-client:$vertxVersion")
    implementation("io.vertx:vertx-pg-client:$vertxVersion")
    implementation("org.jooq:jooq-postgres-extensions:$jooqVersion")
    implementation("org.jooq:jooq:$jooqVersion")
    implementation("org.jooq:jooq-codegen-maven:$jooqVersion")
    implementation("org.jooq:jooq-meta:$jooqVersion")
    implementation("com.h2database:h2:2.3.232")
    implementation 'org.mariadb.jdbc:mariadb-java-client:3.5.2'
}

