# saas-rs-sdk

[![License](http://img.shields.io/badge/Licence-MIT-blue.svg)](LICENSE)
[![Arch](https://img.shields.io/badge/Arch-aarch64%20|%20amd64%20|%20armv7-blue.svg)]()

The [SaaS RS](https://saas-rs.com) SDK provides support libraries for gRPC back-ends managed by the [SaaS RS CLI](https://crates.io/crates/saas-rs-cli) code generator. This includes:

* [Authentication Adapters](src/authentication/) with support for a dozen identity providers
* [Storage Adapters](src/storage/) for Document, Relational, and Key Value storage systems based on BSON storage models that map to gRPC Protobuf view models
* [Payment Providers](src/payments/) for Service Broker synchronization of Services, Plans, and Service Instances with a payment provider

See the [docs.saas-rs.com](https://docs.saas-rs.com) website for a full introduction.

## Installing

```shell
$ cargo add saas-rs-sdk
```

## Unit Testing

```shell
$ make check
```

## Integration Testing

### With MongoDB + Redis

```shell
$ export TEST_CONFIG_STORE_URL=mongodb://localhost:27017/saas-rs-sdk
$ export TEST_OBJECT_STORE_URL=mongodb://localhost:27017/saas-rs-sdk-objects
$ export TEST_SESSION_STORE_URL=redis://localhost:6379/15
$ make check
```

### With Postgres + Redis

Run the [schema generation script](tests/postgres.sql), then:

```shell
$ export TEST_CONFIG_STORE_URL=postgres://localhost:5432/saas_rs_sdk
$ export TEST_OBJECT_STORE_URL=file:///tmp/saas-rs-sdk-objects
$ export TEST_SESSION_STORE_URL=redis://localhost:6379/15
$ make check
```
