import nu.studer.gradle.jooq.JooqEdition

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

plugins {
    id "nu.studer.jooq" version "8.0"

    id "java"
}

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

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

ext {
  vertxVersion = "4.5.12"
}

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

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

tasks.register('copyDatabaseConfig', 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 ./generate directory
  Composite build - implementation("dmo.fs.utils:generate:0.0.1") - this avoids the circular dependancy error
*/
tasks.register('jooqGenerate', JavaExec) {
    doFirst {
        defaultTasks 'clean'
        classpath = sourceSets.main.runtimeClasspath
    }
    environment.remove("DEFAULT_DB")
    environment "VERTXWEB_ENVIRONMENT", "dev"
    mainClass = "dmo.fs.utils.JooqGenerate"
    args = ["dev"]
    ignoreExitValue true
    dependsOn copyDatabaseConfig
}

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-config:$vertxVersion")
    implementation "io.vertx:vertx-web-api-contract:$vertxVersion"
    implementation("io.vertx:vertx-jdbc-client:$vertxVersion")
    implementation group: "org.slf4j", name: "slf4j-reload4j", version: "2.0.13"
    implementation('io.agroal:agroal-pool:2.5')
    implementation('org.xerial:sqlite-jdbc:3.46.0.0')
    implementation("io.vertx:vertx-mysql-client:$vertxVersion")
    implementation("io.vertx:vertx-pg-client:$vertxVersion")
    implementation("org.jooq:jooq")
    implementation("org.jooq:jooq-codegen-maven")
    implementation('org.jooq:jooq-meta')
    implementation("javax.annotation:javax.annotation-api:1.3.2")
    implementation('com.google.guava:guava:32.0.0-android')
}
