jarm

0.4.4 • Public • Published

Jarm is JSON-API Relational Mapping

CircleCI

Define a schema for your JSON API resources and your relational database... at the same time!

Pairs nicely with @twuni/pg.

Installing

NPM

$ npm install jarm

Yarn

$ yarn add jarm

Usage

import { Pool } from 'pg';
import PostgreSQL from '@twuni/pg';
import { Store } from 'jarm';
 
const schema = {
  columns: [
    {
      attribute: 'favoriteColor',
      column: 'favorite_color',
      type: 'text'
    }
  ],
  id: {
    column: 'id',
    type: 'text'
  },
  relationships: [
    {
      columns: [
        {
          attribute: 'id',
          column: 'related_id',
          type: 'text'
        },
        {
          attribute: 'type',
          column: 'related_type',
          type: 'text'
        }
      ],
      name: 'owner',
      table: 'r_widgets_owner'
    }
  ],
  resource: 'widget',
  table: 'widgets'
};
 
const store = new Store(schema);
 
new PostgreSQL(Pool).connect().then(({ disconnect, write }) => {
  write(async (query) => {
    await store.createSchema()(query);
 
    const resource = {
      attributes: {
        favoriteColor: 'blue'
      },
      id: 'Cba...987',
      relationships: {
        owner: {
          data: {
            id: 'Abc...789',
            type: 'user'
          }
        }
      },
      type: 'widget'
    };
 
    await store.createResource(resource)(query);
  });
});

Readme

Keywords

none

Package Sidebar

Install

npm i jarm

Weekly Downloads

1

Version

0.4.4

License

MIT

Unpacked Size

35.1 kB

Total Files

30

Last publish

Collaborators

  • canterberry