Skip to content

quarkiverse/quarkus-couchbase

Repository files navigation

Quarkus Couchbase Extension

All Contributors

Integrates Couchbase into Quarkus.

GitHub Workflow Status Version Total alerts Language grade: Java

This extension is currently in alpha status. It supports:

  • Dependency injecting a Couchbase Cluster.
  • Configuring the Cluster through application.properties. Currently a minimal set of configuration options is provided.
  • Graal/native-image, though so far it has been minimally tested with basic cases.
  • A dev service that starts a Couchbase server in a Docker container. With this you can develop your Quarkus app without having to install Couchbase on your machine.

Please try it out and provide feedback, ideas and bug reports on Github.

Usage

Add it to your project:

<dependency>
  <groupId>io.quarkiverse.couchbase</groupId>
  <artifactId>quarkus-couchbase</artifactId>
  <version>1.0.0-alpha.1</version>
</dependency>

Provide the Couchbase configuration in application.properties:

quarkus.couchbase.connection-string=localhost
quarkus.couchbase.username=username
quarkus.couchbase.password=password

Now you can @Inject a Couchbase Cluster into your project:

@Path("/couchbase")
public class TestCouchbaseResource {
    @Inject
    Cluster cluster;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/test")
    public String run() {
        // Get a reference to a particular Couchbase bucket and its default collection
        var bucket = cluster.bucket("travel-sample");
        var collection = bucket.defaultCollection() ;

        // Upsert a new document
        collection.upsert("test", JsonObject.create().put("foo", "bar"));

        // Fetch and print a document
        var doc = bucket.defaultCollection().get("test");
        System.out.println("Got doc " + doc.contentAsObject().toString());

        // Perform a N1QL query
        var queryResult = cluster.query("select * from `travel-sample` where url like 'http://marriot%' and country = 'United States';");

        queryResult.rowsAsObject().forEach(row -> {
            System.out.println(row.toString());
        });

        return "success!";
    }
}

And test http://localhost:8080/couchbase/test.

Limitations

In this early alpha release the configuration options are limited to the three shown above.
This means that a Couchbase cluster configured securely and requiring TLS or a client or server certificate, cannot currently be connected to.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Graham Pople

💻 🚧

This project follows the all-contributors specification. Contributions of any kind welcome!

About

Couchbase is an award-winning distributed NoSQL cloud database.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published