README.md

# Caylir

Cayley driver for Elixir

## Cayley Support

Tested Cayley versions:

- `0.7.3`
- `0.7.4`
- `0.7.5`
- `0.7.7`

(see [`.travis.yml`](https://github.com/mneudert/caylir/blob/master/.travis.yml) to be sure)

## Package Setup

To use Caylir with your projects, edit your `mix.exs` file and add the required dependencies:

```elixir
defp deps do
  [
    # ...
    {:caylir, "~> 1.0"},
    # ...
  ]
end
```

## Application Setup

### Graph Definition

Defining a graph connection requires defining a module:

```elixir
defmodule MyGraph do
  use Caylir.Graph, otp_app: :my_app
end
```

This defined graph module needs to be hooked up into your supervision tree:

```elixir
children = [
  # ...
  MyGraph,
  # ...
]
```

For a more detailed explanation of how to get started with a graph please consult the inline documentation of the `Caylir.Graph` module.

To configure your connection you can use the application environment:

```elixir
config :my_app, MyGraph,
  host: "cayley.host",
  port: 42160,
  scheme: "https"
```

The entry should match the chosen `:otp_app` and module name defined earlier.

For more information on how (and what) to configure please refer to the inline documentation of the `Caylir.Graph.Config` module.

## Usage

Querying data:

```elixir
MyGraph.query("graph.Vertex('graph').Out('connection').All()")
```

Writing Data:

```elixir
MyGraph.write(%{
  subject: "graph",
  predicate: "connection",
  object: "target"
})
```

Deleting Data:

```elixir
MyGraph.delete(%{
  subject: "graph",
  predicate: "connection",
  object: "target"
})
```

A more detailed usage documentation can be found inline at the `Caylir.Graph` module.

## License

[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)