mirror of
https://github.com/maxkratz/edgedb-java.git
synced 2024-09-16 16:27:58 +00:00
parent
b9ddbbbb55
commit
4b9e57e040
2 changed files with 113 additions and 3 deletions
116
README.md
116
README.md
|
@ -1,5 +1,115 @@
|
||||||
# EdgeDB Java Binding
|
![EdgeDB Java](./branding/banner.png)
|
||||||
|
|
||||||
🏗️ This binding is still WIP and is not yet ready 🏗️
|
<div align="center">
|
||||||
|
<h1>☕ The official Java/JVM client library for EdgeDB ☕</h1>
|
||||||
|
|
||||||
Feel free to browse the code and test it out early, no API is finalized yet and could change.
|
<a href="https://github.com/edgedb/edgedb-java/actions" rel="nofollow">
|
||||||
|
<img src="https://github.com/edgedb/edgedb-java/actions/workflows/gradle.yml/badge.svg?event=push&branch=master" alt="Build status">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/edgedb/edgedb/blob/master/LICENSE">
|
||||||
|
<img src="https://img.shields.io/badge/license-Apache%202.0-blue" />
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/edgedb">
|
||||||
|
<img src="https://discord.com/api/guilds/841451783728529451/widget.png" alt="Discord">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
The Java binding is distrubuted via maven central:
|
||||||
|
|
||||||
|
#### Gradle
|
||||||
|
```groovy
|
||||||
|
implementation 'org.edgedb:edgedb:0.1.0'
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Maven
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.edgedb</groupId>
|
||||||
|
<artifactId>edgedb</artifactId>
|
||||||
|
<version>0.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### SBT
|
||||||
|
|
||||||
|
```scala
|
||||||
|
libraryDependencies ++= Seq(
|
||||||
|
"com.edgedb" % "driver" % "0.1.0"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The `EdgeDBClient` class contains all the methods necessary to interact with the EdgeDB database.
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.edgedb.driver.EdgeDBClient;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
var client = new EdgeDBClient();
|
||||||
|
|
||||||
|
client.query(String.class, "SELECT 'Hello, Java!'")
|
||||||
|
.thenAccept(System.out::println);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `EdgeDBClient` uses `CompletionState` for asynchronous operations, allowing you
|
||||||
|
to integrate it with your favorite asynchronous frameworks
|
||||||
|
|
||||||
|
```java
|
||||||
|
import com.edgedb.driver.EdgeDBClient;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
var client = new EdgeDBClient();
|
||||||
|
|
||||||
|
Mono.fromFuture(client.querySingle(String.class, "SELECT 'Hello, Java!'"))
|
||||||
|
.doOnNext(System.out::println)
|
||||||
|
.block();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This also means it plays nicely with other JVM language that support asynchronous programming via `CompletionStage`
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
|
||||||
|
import com.edgedb.driver.EdgeDBClient
|
||||||
|
import kotlinx.coroutines.future.await
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val client = EdgeDBClient()
|
||||||
|
|
||||||
|
runBlocking {
|
||||||
|
client.querySingle(String::class.java, "SELECT 'Hello, Kotlin!'")
|
||||||
|
.thenAccept { println(it) }
|
||||||
|
.await()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```scala
|
||||||
|
|
||||||
|
import com.edgedb.driver.EdgeDBClient
|
||||||
|
import scala.jdk.FutureConverters.*
|
||||||
|
|
||||||
|
object Main extends App {
|
||||||
|
val client = new EdgeDBClient()
|
||||||
|
|
||||||
|
client.querySingle(classOf[String], "SELECT 'Hello, Scala!'")
|
||||||
|
.asScala
|
||||||
|
.map(println)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
Some examples of using the Java client api can be found in the [examples](./examples) directory.
|
||||||
|
|
||||||
|
## Compiling
|
||||||
|
This project uses gradle. To build the project run the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew build
|
||||||
|
```
|
||||||
|
|
BIN
branding/banner.png
Normal file
BIN
branding/banner.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
Loading…
Reference in a new issue