@antelopejs/rethinkdb
v1.3.0
Published
RethinkDB module that implements the Database interface of antelopejs
Readme

@antelopejs/rethinkdb
A complete RethinkDB client module that implements the RethinkDB and Database interfaces for AntelopeJS.
Installation
ajs project modules add @antelopejs/rethinkdbInterfaces
This module implements two key interfaces:
- RethinkDB Interface: Provides direct RethinkDB operations and connection management
- Database Interface: Offers a standardized database abstraction layer
Both interfaces can be used independently or together depending on your application's needs. The interfaces are installed separately to maintain modularity and minimize dependencies.
| Name | Install command | |
| --------- | ---------------------------------- | ------------------------------------------------------------------ |
| RethinkDB | ajs module imports add rethinkdb | Documentation |
| Database | ajs module imports add database | Documentation |
Overview
The AntelopeJS RethinkDB module provides functionality for interacting with RethinkDB:
- RethinkDB client connection management through the RethinkDB interface
- Common database operations through the Database interface
Configuration
The RethinkDB module supports two types of connections, direct connection or connection pool, both using options from the rethinkdb-ts package:
Direct Connection
// Direct connection options (RConnectionOptions)
{
host: "localhost", // The host to connect to
port: 28015, // The port to connect on
db: "test", // The default database
user: "admin", // The user account to connect as
password: "", // The password for the user account
timeout: 20, // Timeout period in seconds for the connection to be opened
ssl: false // Use SSL for connection
}Connection Pool
// Connection pool options (RPoolConnectionOptions)
{
host: "localhost", // The host to connect to
port: 28015, // The port to connect on
db: "test", // The default database
user: "admin", // The user account to connect as
password: "", // The password for the user account
timeout: 20, // Timeout period in seconds
maxConnections: 10, // Maximum number of connections in the pool
bufferSize: 50, // Buffer size for the pool
maxBufferSize: 100, // Maximum buffer size
discovery: false, // Enable server discovery
servers: [] // Additional servers for connection
}Configuration Details
The module supports two connection methods:
- Direct connection using
r.connect()withRConnectionOptions - Connection pool using
r.connectPool()withRPoolConnectionOptions
Atomic single-record mutations
table.atomicMutation(key, request).run() checks one primary key, its instance,
and the requested condition inside a deterministic native RethinkDB replace
function. It never inserts a missing record or retries a submitted mutation.
CROSS_INSTANCE and selections are not supported.
Revision-based updates replace the supplied top-level fields, including complete
nested objects, and install nextRevision in the same write. Revision-based
deletes remove the matching record. The { kind: "missing" } expected revision
matches an absent field on an existing record, not a stored null value. Callers
must use fresh revision tokens and must not reuse an identity across incarnations.
deleteIfEqual checks one scalar field, including a Date, before deleting the
record. It does not provide revision-based protection against a value changing
and later changing back. Retention callers must keep their cutoff fixed and
re-evaluate eligibility when they observe a different value.
The result is applied, not-applied, or unknown. Missing records, wrong
instances, and condition mismatches return not-applied. Lost acknowledgements,
indeterminate driver errors, untyped write-result errors, and malformed
acknowledgements return unknown; callers must reconcile them rather than infer
that no write occurred. Invalid requests and definite typed query-validation
errors throw. Ordinary insert/update/replace/delete operations reject write
errors, including duplicate primary keys; a multi-record write may have partially
succeeded before it reports an error.
This implementation requires @antelopejs/interface-database version 0.1.6
or later within the supported range. Its shared real-backend conformance suite
runs automatically through ajs module test, alongside this provider's native
acknowledgement, storage, and fault tests. Install the published dependencies
with pnpm install --frozen-lockfile; no local artifact is required.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
