https://github.com/thesurlydev/kotlin-minimal-rdms
Add-on to kotin-minimal-server for relational db support
https://github.com/thesurlydev/kotlin-minimal-rdms
Last synced: about 1 year ago
JSON representation
Add-on to kotin-minimal-server for relational db support
- Host: GitHub
- URL: https://github.com/thesurlydev/kotlin-minimal-rdms
- Owner: thesurlydev
- Created: 2024-08-10T18:30:12.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-11T15:55:14.000Z (almost 2 years ago)
- Last Synced: 2025-02-06T18:52:24.731Z (over 1 year ago)
- Language: Kotlin
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# kotlin-minimal-rdms
Add-on to [kotlin-minimal-server](https://github.com/thesurlydev/kotlin-minimal-server) for relational database support.
## Usage
### Configuration
```kotlin
val dbConfig = DatabaseConfig(
jdbcUrl = "jdbc:postgresql://${getEnv("POSTGRES_HOST")}:5433/${getEnv("POSTGRES_DB")}",
username = getEnv("POSTGRES_USER")!!,
password = getEnv("POSTGRES_PASSWORD")!!
)
val databaseManager = DatabaseManager(dbConfig)
val personRepository = PersonRepository(databaseManager)
```
### Schema
```sql
create table if not exists people
(
id uuid primary key default gen_random_uuid(),
name varchar(255) not null,
age int not null
);
```
### Repository
```kotlin
class PersonRepository(private val databaseManager: DatabaseManager) : Repository {
override fun findAll(): List {
val sql = "SELECT * FROM people"
return Querier.executeQuery(databaseManager, sql, ::person)
}
override fun findById(id: UUID): Person? {
val sql = "SELECT * FROM people WHERE id = :id"
val params = mapOf("id" to id)
return Querier.queryWithParams(databaseManager, sql, params, ::maybePerson)
}
override fun delete(id: UUID): Boolean {
val sql = "DELETE FROM people WHERE id = :id"
val params = mapOf("id" to id)
return Querier.updateObject(databaseManager, sql, params) > 0
}
private fun maybePerson(resultSet: ResultSet): Person? = when {
resultSet.next() -> person(resultSet)
else -> null
}
private fun person(resultSet: ResultSet) = Person(
resultSet.getString("id"),
resultSet.getString("name"),
resultSet.getInt("age")
)
}
```
### Gradle (Kotlin DSL)
```kotlin
implementation("dev.surly:kotlin-minimal-rdms:0.1.0")
```
### Gradle (Groovy DSL)
```groovy
implementation 'dev.surly:kotlin-minimal-rdms:0.1.0'
```
### Maven
```xml
dev.surly
kotlin-minimal-rdms
0.1.0
```