# DeltaSharing

Elixir client library for the [Delta Sharing Protocol]( by the [instadeq]( team

## Status

Early stages of development, already useful

## Library Structure

There are two main modules:

- `DeltaSharing.RawClient`: does the requests and returns the raw HTTP responses
- `DeltaSharing.Client`: does the requests and parses the responses returning Elixir structs

## Sample Usage

Download [open-datasets.share]( or any other profile file you have access to

alias DeltaSharing.{Profile, Client, RawClient}
p = Profile.from_file("../open-datasets.share")
c =

RawClient.get_share(c, "delta_sharing")
RawClient.list_schemas_in_share(c, "delta_sharing")
RawClient.list_tables_in_schemas(c, "delta_sharing", "default")
RawClient.list_all_tables_in_share(c, "delta_sharing")
RawClient.query_table_version(c, "delta_sharing", "default", "COVID_19_NYT")
RawClient.query_table_metadata(c, "delta_sharing", "default", "COVID_19_NYT")
RawClient.query_table(c, "delta_sharing", "default", "COVID_19_NYT", 10)

Client.get_share(c, "delta_sharing")
Client.list_schemas_in_share(c, "delta_sharing")
Client.list_tables_in_schemas(c, "delta_sharing", "default")

% pagination
{:ok, r1} = Client.list_tables_in_schemas(c, "delta_sharing", "default", 5), r1, 5)

Client.list_all_tables_in_share(c, "delta_sharing")

% pagination
{:ok, r2} = Client.list_all_tables_in_share(c, "delta_sharing", 5), r2, 5)

Client.query_table_version(c, "delta_sharing", "default", "COVID_19_NYT")
Client.query_table_metadata(c, "delta_sharing", "default", "COVID_19_NYT")
Client.query_table(c, "delta_sharing", "default", "COVID_19_NYT", 10)

## Installation

Follow Instructions on [](

## Docs

[delta_sharing docs on Hex Docs](

## License