README.md

# EliVndb

[![Build Status](https://travis-ci.org/DoumanAsh/EliVndb.svg?branch=master)](https://travis-ci.org/DoumanAsh/EliVndb)

Kawaii VNDB API for Elixir

[VNDB API Refernce](https://vndb.org/d11)

## Documentation

[Master](https://doumanash.github.io/EliVndb)

[Stable](https://hexdocs.pm/elivndb)

## EliVndb.Client types

### Global
In order to start global client use `EliVndb.Client.start_link/1` or `EliVndb.Client.start_link/3` without options or with `:global` set to true.

Since the client registered globally, once client is started, all other API functions will become available.

As VNDB allows login only once, you need to re-create it anew in order to re-login.
You can use method `EliVndb.Client.stop/0` to terminate currently running global client.

### Local
In order to start local client use `EliVndb.Client.start_link/1` or `EliVndb.Client.start_link/3` with `:global` set to false.

To use local client, you'll need to provide its pid in all API calls.

**NOTE:** VNDB allows only up to 10 clients from the same API. Global client is preferable way to work with VNDB API.

## Available commands

### dbstats
Just retrieves statistics from VNDB.

### get
Each get command requires to specify flags & filters.

Following default values are used by EliVndb:
* `flags = ["basic"]`
* `filters = (id >= 1)`

On success it returns `{:results, %{...}}`

### set
Each set command requires you to provide ID of modified object.

On success it returns `{:ok, %{...}}`

**NOTE:** For set commands successful response contains empty payload as of now. You might as well to ignore it.

## Result

Each function that returns map with keys as strings.

## Installation

```elixir
def deps do
  [{:vndb, "~> 0.2.0"}]
end
```