An ArangoDB driver for Rust

Overview

Rincon

Crates.io Docs.rs Linux Build Status Windows Build Status codevoc.io Apache-2.0 Join the chat

Rincon is an ArangoDB driver for Rust. It enables low level access to ArangoDB in a typesafe and Rust idiomatic manner.

The name Rincon is derived from the Avocado variety list.

The vision for this project is to provide a fast and typesafe client lib for easy and flexible use of ArangoDB in applications.

Status: Experimental

The first usable version is released. Yuppie!

For details about this first version and how to use the Rincon ArangoDB driver see the README in the rincon crates subdirectory.

The project is continuously evolving. There may be breaking changes in upcoming releases. All changes will be documented in the CHANGELOG.md. Breaking changes will be marked as such.

If you are interested in using this Rincon ArangoDB driver I would be happy to receive feedback and here what everyone is thinking about it. Especially if you have ideas about improving usability of the driver.

Please file an issue on Github for every idea you have, the difficulties you are facing and naturally for all bugs you find.

You may also use the Gitter channel to ask questions and discuss things.

What's next?

There is still lot of work todo. The next planned steps are:

Multiple Crates

The functionality of the Rincon ArangoDB Rust driver is split up into several crates for a modular design. This modular design enforces a clean code base. Applications can flexible combine the functionality they need by adding different combinations of the crates to their project. Developers can easily customize and extend the functionality of the existing crates.

For an overview of crates in this project see the README in the rincon crates subdirectory.

Each crate comes with its own README file which describes the purpose of the crate and how to use it.

License

Licensed under Apache License, Version 2.0
see LICENSE or http://www.apache.org/licenses/LICENSE-2.0 for details.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Comments
  • Add a Gitter chat badge to README.md

    Add a Gitter chat badge to README.md

    innoave/rincon now has a Chat Room on Gitter

    @haraldmaida has just created a chat room. You can visit it here: https://gitter.im/innoave/rincon.

    This pull-request adds this badge to your README.md:

    Gitter

    If my aim is a little off, please let me know.

    Happy chatting.

    PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

    opened by gitter-badger 0
  • Add a Gitter chat badge to README.md

    Add a Gitter chat badge to README.md

    innoave/arangodb-rust-driver now has a Chat Room on Gitter

    @haraldmaida has just created a chat room. You can visit it here: https://gitter.im/innoave/arangodb-rust-driver.

    This pull-request adds this badge to your README.md:

    Gitter

    If my aim is a little off, please let me know.

    Happy chatting.

    PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

    opened by gitter-badger 0
  • Update rincon_connector deps: hyper -> 0.12, hyper-tls -> 0.3, native-tls -> 0.2 (fixes openssl 0.9 dependency)

    Update rincon_connector deps: hyper -> 0.12, hyper-tls -> 0.3, native-tls -> 0.2 (fixes openssl 0.9 dependency)

    Openssl 0.9 is breaking on a growing number of Linux systems see this issue. hyper-tls 0.3 is the first to depend on native-tls 0.2, which is the first native-tls version to drop openssl 0.9. Hyper-tls, as far as I can tell, needs hyper 0.12 to work.

    We currently use hyper 0.11, and hyper 0.12 is quite an upgrade with a few breaking changes (release notes).

    An upgrade also breaks the hyper-timeout dependency, which as far as I can tell, needs hyper 0.11 to work (I've filed another issue here). An idea would be to drop hyper-timeout in favor of using tokio_core::reactor to timeout from outside hyper inside of impl Execute for JsonHttpConnection -> execute() inside rincon_connector/src/http/mod.rs, following advice on hyper's issue "Request timeouts". It also looks like Hyper is working on client timeouts at this issue (last update April 2019).

    Another annoying change is that the typed headers (like ContentType::json(), most stuff from hyper::header) were removed, though they might be available in the headers crate, which is related to hyper and has good usage.

    The biggest decision is what to do about timeouts, and I don't care for the idea of waiting for other projects to fix issues.

    So basically, cargo test doesn't work on a fresh Rincon clone on my Manjaro Linux machine right now, and this is an explanation of the rabbit hole I went down to find out why. Bit of a mess, but there you go. High hopes!

    opened by jeffvandyke 2
  • Streaming Transactions API Support?

    Streaming Transactions API Support?

    Any plans on adding support for this: https://www.arangodb.com/2019/08/rc7-of-arangodb-3-5-streaming-transactions-api/

    Also, definitely keep up the good work here! I am planning on cutting a system over to ArangoDB which has previously been based on MongoDB. It would be excellent to see support for this stuff as well as async support based on the new futures & async/await features landing in Rust.

    Also, I built the Wither ODM a while back, which is great, but the MongoDB team has left the underlying driver in a pretty stagnant state. Do you think there is value in building a data modelling ODM-like system for Arango as well?

    opened by thedodd 2
  • `unwrap` has a panicky connotation, recommend `into_inner` instead

    `unwrap` has a panicky connotation, recommend `into_inner` instead

    Feel free to close as this is just whining about the API, but I think the unwrap methods should be renamed on the Cursor types, and perhaps elsewhere. See for example

    https://docs.rs/rincon_session/0.1.0/rincon_session/client/struct.Cursor.html#method.unwrap

    The issue is that unwrap on Result and Option may cause the thread to panic, so readers of code may have an aversion to any functions with this name because they may mistake it for a potential "panic on error".

    A better name would be into_inner, such as used by https://doc.rust-lang.org/std/io/struct.Cursor.html#method.into_inner

    opened by apoelstra 0
  • Asynchronous session API (rincon_session_async)

    Asynchronous session API (rincon_session_async)

    The asynchronous session API of the rincon_session_async crate should provide similar functions as the rincon_session crate but return its result wrapped inside a Future.

    enhancement 
    opened by haraldmaida 0
  • Implement methods of the REST API planned as M.3

    Implement methods of the REST API planned as M.3

    Implement more methods of the ArangoDB's REST API marked for milestone 3 (M.3).

    The rincon_client crate does not implement all methods of ArangoDB's REST API. The current status is documented in docs/arangodb_rest_api_methods.md. Methods that are planned to be implemented are marked with a milestone.

    enhancement 
    opened by haraldmaida 0
Owner
Innoave
Innoave
Easy to use rust driver for arangoDB

arangors arangors is an intuitive rust client for ArangoDB, inspired by pyArango. arangors enables you to connect with ArangoDB server, access to data

fMeow 116 Jan 1, 2023
Cassandra (CQL) driver for Rust, using the DataStax C/C++ driver under the covers.

cassandra-cpp This is a maintained Rust project that exposes the DataStax cpp driver at https://github.com/datastax/cpp-driver/ in a somewhat-sane cra

null 93 Jan 7, 2023
This is a maintained rust project that exposes the cpp driver at cpp-driver in a somewhat-sane crate.

cassandra-rs This is a maintained rust project that exposes the cpp driver at https://github.com/datastax/cpp-driver/ in a somewhat-sane crate. For th

Tupshin Harper 51 Aug 20, 2020
The official MongoDB Rust Driver

MongoDB Rust Driver This repository contains the officially supported MongoDB Rust driver, a client side library that can be used to interact with Mon

mongodb 1.1k Dec 30, 2022
TDS 7.2+ (mssql / Microsoft SQL Server) async driver for rust

Tiberius A native Microsoft SQL Server (TDS) client for Rust. Supported SQL Server versions Version Support level Notes 2019 Tested on CI 2017 Tested

Prisma 189 Dec 25, 2022
Asyncronous Rust Mysql driver based on Tokio.

mysql-async Tokio based asynchronous MySql client library for rust programming language. Installation Library hosted on crates.io. [dependencies] mysq

Anatoly I 292 Dec 30, 2022
Native PostgreSQL driver for the Rust programming language

Rust-Postgres PostgreSQL support for Rust. postgres Documentation A native, synchronous PostgreSQL client. tokio-postgres Documentation A native, asyn

Steven Fackler 2.8k Jan 8, 2023
Official Skytable client driver for Rust

Skytable client Introduction This library is the official client for the free and open-source NoSQL database Skytable. First, go ahead and install Sky

Skytable 29 Nov 24, 2022
cogo rust coroutine database driver (Mysql,Postgres,Sqlite)

cdbc Coroutine Database driver Connectivity.based on cogo High concurrency,based on coroutine No Future<'q,Output=*>,No async fn, No .await , no Poll*

co-rs 10 Nov 13, 2022
This is superseded by the official MongoDB Rust Driver

This Repository is NOT a supported MongoDB product MongoDB Rust Driver Prototype NOTE: This driver is superseded by the official MongoDB Rust driver,

MongoDB, Inc. Labs 382 Nov 15, 2022
This is an Oracle database driver for Rust based on ODPI-C

Rust-oracle This is an Oracle database driver for Rust based on ODPI-C. Change Log See ChangeLog.md. Build-time Requirements C compiler. See Compile-t

Kubo Takehiro 138 Dec 23, 2022
A Rust port of Pimoroni's uc8151 driver

uc8151-rs - a no-std Rust library for the UC8151(IL0373) e-ink display This is a Rust port of the Pimoroni UC8151 library. UC8151 is also sometimes re

null 6 Dec 15, 2022
ENC28J60 Linux network driver written in Rust.

enc28j60rs ENC28J60 Linux ethernet driver written in Rust. Tested with Raspberry Pi 4 Model B + Linux kernel 6.2.8 + Raspberry Pi OS AArch64. Kernel T

Ryo Munakata 11 May 1, 2023
MIPI Display Serial Interface unified driver

mipidsi This crate provides a generic display driver to connect to TFT displays that implement the MIPI DSI. Uses display_interface to talk to the har

Aleš Katona 31 Dec 20, 2022
TTVM Intermediate Representation driver

ttir - TTVM IR Driver ttir is driver for the TTVM IR located in ttvm. Usage Run the following command in your shell: cargo install ttir Features Easy

maDeveloper 1 Nov 2, 2021
e-paper/e-ink monitor linux driver

Ardoise: e-paper/e-ink monitor Goal: Create a e-paper/e-ink monitorfor linux. My personal use is a typewriter. Written in Rust Latency is 0,2s when th

Cyril Jacquet 1 Dec 8, 2022
An unofficial Logitech HID++>2.0 driver based on the original logiops by PixlOne

ruhroh An unofficial Logitech HID++>2.0 driver based on the original logiops by PixlOne Configuration Refer to the docs for details. The default locat

Matthew Wilks 3 Dec 11, 2022
🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, SQLite, and MSSQL.

SQLx ?? The Rust SQL Toolkit Install | Usage | Docs Built with ❤️ by The LaunchBadge team SQLx is an async, pure Rust† SQL crate featuring compile-tim

launchbadge 7.6k Dec 31, 2022
Redis re-implemented in Rust.

rsedis Redis re-implemented in Rust. Why? To learn Rust. Use Cases rsedis does not rely on UNIX-specific features. Windows users can run it as a repla

Sebastian Waisbrot 1.6k Jan 6, 2023