From 23233121d00d3d884a871226d686cf04bde87c7d Mon Sep 17 00:00:00 2001 From: Markus Johansen Date: Mon, 10 Jul 2023 14:06:49 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20P=C3=A5begynt=20database=20konfi?= =?UTF-8?q?gurering?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Hege Haavaldsen Co-authored-by: Helene Arnesen Co-authored-by: Sindre Kjelsrud Co-authored-by: Amalie Mansåker --- backend/build.gradle.kts | 20 +++++++++++--- backend/gradle.properties | 5 ++++ .../kotlin/no/nav/helse/sprik/db/Database.kt | 26 +++++++++++++++++++ .../resources/db/migration/V1__tilganger.sql | 12 +++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 backend/src/main/kotlin/no/nav/helse/sprik/db/Database.kt create mode 100644 backend/src/main/resources/db/migration/V1__tilganger.sql diff --git a/backend/build.gradle.kts b/backend/build.gradle.kts index 30dbc5f..3bef183 100644 --- a/backend/build.gradle.kts +++ b/backend/build.gradle.kts @@ -1,12 +1,17 @@ val ktor_version: String by project val kotlin_version: String by project val logback_version: String by project +val flyway_core_version: String by project +val postgresql_version: String by project +val hikariCP_version: String by project +val exposed_version: String by project +val testcontainers_postgresql_version: String by project + plugins { kotlin("jvm") version "1.8.22" id("io.ktor.plugin") version "2.3.2" kotlin("plugin.serialization") version "1.8.21" - } group = "no.nav.helse.sprik" @@ -26,11 +31,18 @@ dependencies { implementation("io.ktor:ktor-server-core-jvm:$ktor_version") implementation("io.ktor:ktor-server-netty-jvm:$ktor_version") implementation("ch.qos.logback:logback-classic:$logback_version") - testImplementation("io.ktor:ktor-server-tests-jvm:$ktor_version") - testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version") implementation("io.ktor:ktor-server-cors:$ktor_version") implementation("io.ktor:ktor-utils:$ktor_version") implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") implementation("io.ktor:ktor-server-content-negotiation:$ktor_version") implementation("io.ktor:ktor-client-content-negotiation:$ktor_version") -} \ No newline at end of file + implementation("org.flywaydb:flyway-core:$flyway_core_version") + implementation("org.postgresql:postgresql:$postgresql_version") + implementation("com.zaxxer:HikariCP:$hikariCP_version") + implementation("org.jetbrains.exposed:exposed-core:$exposed_version") + implementation("org.jetbrains.exposed:exposed-jdbc:$exposed_version") + implementation("org.jetbrains.exposed:exposed-java-time:$exposed_version") + testImplementation("io.ktor:ktor-server-tests-jvm:$ktor_version") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version") + testImplementation("org.testcontainers:postgresql:$testcontainers_postgresql_version") +} diff --git a/backend/gradle.properties b/backend/gradle.properties index 9339bb8..e4b8220 100644 --- a/backend/gradle.properties +++ b/backend/gradle.properties @@ -2,3 +2,8 @@ ktor_version=2.3.2 kotlin_version=1.8.22 logback_version=1.2.11 kotlin.code.style=official +flyway_core_version=9.20.0 +postgresql_version=42.6.0 +hikariCP_version=5.0.1 +exposed_version=0.41.1 +testcontainers_postgresql_version=1.18.3 diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/Database.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/Database.kt new file mode 100644 index 0000000..ec36ea7 --- /dev/null +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/Database.kt @@ -0,0 +1,26 @@ +package no.nav.helse.sprik.db + +import com.zaxxer.hikari.HikariConfig +import com.zaxxer.hikari.HikariDataSource +import no.nav.helse.sprik.db.Environment.Database.host +import no.nav.helse.sprik.db.Environment.Database.name +import no.nav.helse.sprik.db.Environment.Database.port + +class Database(dbconfig: HikariConfig) { + val dataSource by lazy { HikariDataSource(dbconfig) } +} + +private fun dbconfig() = HikariConfig().apply { + jdbcUrl = DB_URL +} + +val DB_URL = "jdbc:postgresql://%s:%s/%s".format(host, port, name) + +object Environment { + object Database { + private val env = System.getenv() + val host = requireNotNull(env["DATABASE_HOST"]) { "Host må settes" } + val port = requireNotNull(env["DATABASE_PORT"]) { "Port må settes" } + val name = requireNotNull(env["DATABASE_DATABASE"]) { "Databasenavn må settes" } + } +} \ No newline at end of file diff --git a/backend/src/main/resources/db/migration/V1__tilganger.sql b/backend/src/main/resources/db/migration/V1__tilganger.sql new file mode 100644 index 0000000..9adab52 --- /dev/null +++ b/backend/src/main/resources/db/migration/V1__tilganger.sql @@ -0,0 +1,12 @@ +DO +$$ +BEGIN + IF EXISTS + (SELECT 1 FROM pg_roles WHERE rolname = 'cloudsqliamuser') + THEN + GRANT ALL PRIVILEGES ON TABLE public.flyway_schema_history TO cloudsqliamuser; + ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO cloudsqliamuser; + ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO cloudsqliamuser; + END IF; +END +$$; \ No newline at end of file