Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lanjoni/scylladb-crystal-driver

ScyllaDB Crystal Driver ๐Ÿ’Ž
https://github.com/lanjoni/scylladb-crystal-driver

binding cql crystal driver scylladb

Last synced: 2 months ago
JSON representation

ScyllaDB Crystal Driver ๐Ÿ’Ž

Awesome Lists containing this project

README

        



ScyllaDB Logo
Crystal Logo


ScyllaDB Crystal Driver


A Crystal wrapper around the Crystal DB API for Cassandra and C/C++ Driver for ScyllaDB.




Explore the ScyllaDB docs ยป




Report Bug
ยท
Request Feature


## About

This project aims to build an environment for interoperability and use of ScyllaDB with the Crystal programming language, aiming at building a driver and wrapper for communication.

## Installation

Please make sure you have installed the [C/C++ Driver for ScyllaDB](https://github.com/scylladb/cpp-driver).

Then add this to your application's `shard.yml`:

```yml
dependencies:
scylladb:
github: lanjoni/scylladb-crystal-driver
```

## Documentation

- [ScyllaDB Documentation](https://docs.scylladb.com/stable/)
- [C/C++ Driver for ScyllaDB](https://github.com/scylladb/cpp-driver)
- [Crystal DB API for Cassandra](https://github.com/kaukas/crystal-cassandra)
- [DataStax C/C++ Driver](https://docs.datastax.com/en/developer/cpp-driver/2.10/)

## Usage

From the [basic example](https://github.com/lanjoni/scylladb-crystal-driver/blob/main/examples/basic.cr):

```cr
require "scylladb/dbapi"

DB.open("scylladb://127.0.0.1/test") do |db|
db.exec(<<-CQL)
create table posts (
id timeuuid primary key,
title text,
body text,
created_at timestamp
)
CQL
db.exec("insert into posts (id, title, body, created_at) values (now(), ?, ?, ?)",
"Hello World",
"Hello, World. I have a story to tell.",
Time.now)
db.query("select title, body, created_at from posts") do |rs|
rs.each do
title = rs.read(String)
body = rs.read(String)
created_at = rs.read(Time)
puts title
puts "(#{created_at})"
puts body
end
end
end
```
Please refer to [crystal-db](https://github.com/crystal-lang/crystal-db) for further usage instructions.

## Types

`scylladb-crystal-driver` supports [all the `DB::Any`](https://crystal-lang.github.io/crystal-db/api/0.5.0/DB/Any.html) primitive types plus `Int8`, `Int16` and some additional value types:
- `date` maps to `ScyllaDB::DBApi::Date`
- `time` maps to `ScyllaDB::DBApi::Time`
- `uuid` maps to `ScyllaDB::DBApi::Uuid`
- `timeuuid` maps to `ScyllaDB:DBApi::TimeUuid`

Some of the collection types are also supported:
- `list` maps to `Array`
- `set` maps to `Set`
- `map` maps to `Hash`

## Development

After installation is complete run:

```sh
$ crystal spec
```
> This command runs the tests to verify that everything is working correctly.

## Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## License

Distributed under the MIT License. See `LICENSE` for more information.

## Contributors

* [lanjoni](https://github.com/lanjoni) -
**Joรฃo Lanjoni** <> (he/him)