# Cassandra
[](https://travis-ci.org/cafebazaar/elixir-cassandra)
[](https://hex.pm/packages/cassandra)
[](https://github.com/cafebazaar/elixir-cassandra/blob/master/LICENSE.md)
An Elixir driver for Apache Cassandra.
This driver works with Cassandra Query Language version 3 (CQL3) and Cassandra's native protocol.
## Installation
Add `cassandra` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:cassandra, "~> 0.1.0-beta"}]
end
```
## Quick Start
```elixir
alias Cassandra.Connection
{:ok, conn} = Connection.start_link # Connects to 127.0.0.1:9042 by default
{:ok, _} = Connection.query conn, """
CREATE KEYSPACE IF NOT EXISTS test
WITH replication = {'class':'SimpleStrategy','replication_factor':1};
"""
{:ok, _} = Connection.query conn, """
CREATE TABLE IF NOT EXISTS test.users (
id uuid,
name varchar,
age int,
PRIMARY KEY (id)
);
"""
{:ok, insert} = Connection.prepare conn, """
INSERT INTO test.users (id, name, age) VALUES (uuid(), ?, ?);
"""
users = [
%{name: "Bilbo", age: 50},
%{name: "Frodo", age: 33},
%{name: "Gandolf", age: 2019},
]
users
|> Enum.map(&Task.async(fn -> Connection.execute(conn, insert, &1) end))
|> Enum.map(&Task.await/1)
{:ok, rows} = Connection.query(conn, "SELECT * FROM text.users;")
# {:ok,
# [%{"age" => 2019, "id" => "7ecad341-4b87-466a-a637-5fe7f24ec3a4",
# "name" => "Gandolf"},
# %{"age" => 50, "id" => "98788196-b3ee-4174-bfe5-79e04e9c9eaf",
# "name" => "Bilbo"},
# %{"age" => 33, "id" => "87af738f-864c-4e18-998f-fdc511263e78",
# "name" => "Frodo"}]}
```