Skip to content

Commit

Permalink
Configure Logging. Rename package. Fix artifact naming. (#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
moreirasantos committed Jul 15, 2023
1 parent 425eb5c commit bfc198a
Show file tree
Hide file tree
Showing 10 changed files with 62 additions and 30 deletions.
34 changes: 21 additions & 13 deletions build.gradle.kts
Expand Up @@ -13,31 +13,39 @@ plugins {
}

group = "io.github.moreirasantos"
version = "1.0.0"
version = "1.0.1"

repositories {
mavenCentral()
}
kotlin {
val hostOs = System.getProperty("os.name")
val isMingwX64 = hostOs.startsWith("Windows")
val nativeTarget = when {
hostOs == "Mac OS X" -> macosX64("native")
hostOs == "Linux" -> linuxX64("native")
isMingwX64 -> mingwX64("native")
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
}

nativeTarget.apply {
// Tiers are in accordance with <https://kotlinlang.org/docs/native-target-support.html>
// Tier 1
linuxX64 {
val main by compilations.getting
val libpq by main.cinterops.creating {
defFile(project.file("src/nativeInterop/cinterop/libpq.def"))
}
}
/*
// Currently unsupported
// Tier 2
linuxArm64("linuxArm64")
// Tier 3
mingwX64("mingwX64")
// Tier 1
macosX64("macosX64")
macosArm64("macosArm64")
*/

// android, ios, watchos, tvos, jvm, js will never(?) be supported

sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
implementation("io.github.oshai:kotlin-logging-linuxx64:5.0.0-beta-04")
}
}
val commonTest by getting
Expand Down Expand Up @@ -85,7 +93,7 @@ val remove by tasks.registering(DockerRemoveContainer::class) {
}

tasks {
val nativeTest by getting {
val linuxX64Test by existing {
dependsOn(start)
finalizedBy(remove)
}
Expand All @@ -109,7 +117,7 @@ tasks.withType<Detekt>().configureEach {
}

tasks{
val publishNativePublicationToSonatypeRepository by getting {
val publishLinuxX64PublicationToSonatypeRepository by getting {
// Explicit dependency because gradle says it's implicit and fails build
dependsOn("signKotlinMultiplatformPublication")
}
Expand Down
2 changes: 2 additions & 0 deletions convention-plugins/build.gradle.kts
@@ -1,3 +1,5 @@
// Use by running: ./gradlew clean publishAllPublicationsToSonatypeRepository

plugins {
`kotlin-dsl` // Is needed to turn our build logic written in Kotlin into the Gradle Plugin
}
Expand Down
@@ -1,7 +1,3 @@
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.tasks.bundling.Jar
import org.gradle.kotlin.dsl.`maven-publish`
import org.gradle.kotlin.dsl.signing
import java.util.*

plugins {
Expand Down Expand Up @@ -92,6 +88,6 @@ signing {
tasks{
val publishKotlinMultiplatformPublicationToSonatypeRepository by getting {
// Explicit dependency because gradle says it's implicit and fails build
dependsOn("signNativePublication")
dependsOn("signLinuxX64Publication")
}
}
18 changes: 18 additions & 0 deletions src/commonMain/kotlin/io/github/moreirasantos/pgkn/Log.kt
@@ -0,0 +1,18 @@
package io.github.moreirasantos.pgkn

import io.github.oshai.kotlinlogging.KotlinLogging
import io.github.oshai.kotlinlogging.Marker
import io.github.oshai.kotlinlogging.KLogger as ActualKLogger

object PgknMarker : Marker {
override fun getName() = "PGKN"
}

class KLogger(private val actualKLogger: ActualKLogger) : ActualKLogger by actualKLogger {
constructor(name: String) : this(KotlinLogging.logger(name))

override fun trace(message: () -> Any?) = trace(null as Throwable?, PgknMarker, message)

// Might want to override this to give the ability to turn on/off logs for PGKN
// override fun isLoggingEnabledFor(level: Level, marker: Marker?) = level.isLoggingEnabled() && ?
}
@@ -1,4 +1,4 @@
package io.github.miguelmoreira.pgkn
package io.github.moreirasantos.pgkn


/**
Expand Down
@@ -1,4 +1,4 @@
@file:Suppress("MatchingDeclarationName")
package io.github.miguelmoreira.pgkn
package io.github.moreirasantos.pgkn

class SQLException : Exception()
@@ -1,9 +1,9 @@
package io.github.miguelmoreira.pgkn
package io.github.moreirasantos.pgkn

import kotlinx.cinterop.*
import libpq.*
import io.github.miguelmoreira.pgkn.resultset.PostgresResultSet
import io.github.miguelmoreira.pgkn.resultset.ResultSet
import io.github.moreirasantos.pgkn.resultset.PostgresResultSet
import io.github.moreirasantos.pgkn.resultset.ResultSet

sealed interface PostgresDriver {
fun <T> execute(sql: String, handler: (ResultSet) -> T): List<T>
Expand Down
@@ -1,12 +1,16 @@
package io.github.miguelmoreira.pgkn.resultset
package io.github.moreirasantos.pgkn.resultset

import io.github.moreirasantos.pgkn.KLogger
import io.github.moreirasantos.pgkn.PgknMarker
import io.github.moreirasantos.pgkn.SQLException
import kotlinx.cinterop.ByteVar
import kotlinx.cinterop.CPointer
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.toKString
import kotlinx.datetime.*
import libpq.*
import io.github.miguelmoreira.pgkn.SQLException

private val logger = KLogger("io.github.moreirasantos.pgkn.resultset.PostgresResultSetKt")

/**
* To Fix ISO 8601, as postgres default is space not "T"
Expand All @@ -20,6 +24,7 @@ private fun String.fixIso8601() = replaceRange(10, 11, "T")
internal class PostgresResultSet(val internal: CPointer<PGresult>) : ResultSet {

private val rowCount: Int = PQntuples(internal)

@Suppress("UnusedPrivateProperty")
private val columnCount: Int = PQnfields(internal)

Expand Down Expand Up @@ -47,7 +52,10 @@ internal class PostgresResultSet(val internal: CPointer<PGresult>) : ResultSet {
* Are all non-binary columns returned as text?
* https://www.postgresql.org/docs/9.5/libpq-exec.html#LIBPQ-EXEC-SELECT-INFO
*/
override fun getString(columnIndex: Int): String? = getPointer(columnIndex)?.toKString().also { println(it) }
override fun getString(columnIndex: Int): String? = getPointer(columnIndex)?.toKString()
.also {
logger.trace { "Value of column $columnIndex: $it" }
}

override fun getBoolean(columnIndex: Int): Boolean? = getString(columnIndex)?.equals("t")

Expand Down
@@ -1,10 +1,10 @@
package io.github.miguelmoreira.pgkn.resultset
package io.github.moreirasantos.pgkn.resultset

import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.LocalTime
import io.github.miguelmoreira.pgkn.SQLException
import io.github.moreirasantos.pgkn.SQLException

@Suppress("TooManyFunctions")
sealed interface ResultSet {
Expand Down
@@ -1,7 +1,7 @@
package io.github.miguelmoreira.pgkn
package io.github.moreirasantos.pgkn

import kotlinx.datetime.*
import io.github.miguelmoreira.pgkn.resultset.ResultSet
import io.github.moreirasantos.pgkn.resultset.ResultSet
import kotlin.test.Test
import kotlin.test.assertContains
import kotlin.test.assertEquals
Expand Down

0 comments on commit bfc198a

Please sign in to comment.