0.0.5 • Published 3 years ago

@obel/restable v0.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

Restable (WIP)

Restable is a specification for communicating with databases via REST calls. It uses the JSONAPI specification to define how to manage resources in the databases.

Description

RESTABLE is a specification of a REST interface for communication with data stores using HTTP REST calls in a way that is datastore agnostic. A basic implementation of the RESTABLE spec using the Nest framework. The implementation in this repo stores data in memory. To store data in other datastores and databases, you have to build plugins

Building plugins

While you don't need to use NEST.js to build plugins, This Repo makes it easy to use it to build plugins. An example of a plugin built with nestjst is here https://github.com/nyabongo/restable-couchbase

  1. To build a plugin, you can start by using the boostrapped NESTjs application created by running
$ npm i -g @nestjs/cli
$ nest new project-name
  1. Install this npm package using
$ npm i @nyabongo/restable
  1. Replace the controller import in app.module.ts with the controller from @nyabongo/restable as done here for couchbase see example implementations
//app.controller.ts

//import { AppController } from './app.controller';
import { AppController } from '@obel/restable';
  1. implement IRestableService in app.service.ts
//...
import { IRestableService} from '@obel/restable';
//...

@Injectable
export class AppService implements IRestableService{
    //...
}

Installation

$ npm install

Running locally

The app runs on port 3000

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

View the Spec and documentation

If you are running the app navigate to the path /api_doc/ to view the swagger documentation and test the spec

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

License

Restable is MIT licensed.