Novice Prime Minister

    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);
      });
    });

    Keywords

    none

    Install

    npm i jarm

    DownloadsWeekly Downloads

    11

    Version

    0.4.4

    License

    MIT

    Unpacked Size

    35.1 kB

    Total Files

    30

    Last publish

    Collaborators

    • canterberry