Skip to content

Interfaces for SQL database clients with suspend functions.

License

Notifications You must be signed in to change notification settings

programingjd/asynk_sql

Repository files navigation

jcenterjcenter

Asynk SQL

Interfaces for SQL async client with suspend functions for kotlin coroutines.

Usage

Fetching rows

val total: Int = 
  connection.values("SELECT COUNT(*) as count FROM table;", "count").use {
    it.iterator().next() // only one row
  }

val max = 123
val count: Int =
  connection.values(
    "SELECT COUNT(*) as count FROM table WHERE id > ?;",
    listOf(max),
    "count"
  ).use {
    it.iterator().next() // only one value
  }

val ids = ArrayList<Int>(count)
connection.values("SELECT * FROM table WHERE id > ?", listOf(max), "id").use { it.toList(ids) }

val names = Map<Int,String?>(count)
connection.entries("SELECT id, name FROM table", "id", "name").use { it.toMap(map) }

val json = com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(
  connection.rows("SELECT * FROM table").use { it.toList(ids) }
)

Updating rows

println(
  connection.affectedRows("UPDATE table SET key = ? WHERE id = ?", listOf("a", 1))
)

println(
  connection.prepare("DELETE FROM table WHERE id = ?").use { statement ->
    listOf(1, 3, 4, 6, 9).count { id ->
      statement.affectedRows(listOf(id)) == 1
    }
  }
)

About

Interfaces for SQL database clients with suspend functions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages