json-schema-entity

    7.0.8 • Public • Published

    json-schema-entity NPM version Dependency Status CircleCI Coverage Status

    Manage a group of tables with a parent child relation in SQL that will be seen as a document, or entity, like a no SQL database

    Install

    $ npm install --save json-schema-entity

    Usage (require pg-cr-layer or mssql-cr-layer)

    var jse = require('json-schema-entity');
    var pgCrLayer = require('pg-cr-layer');
    
    var config = {
      user: 'me',
      password: 'my password',
      host: 'localhost',
      port: 5432,
      pool: {
        max: 25,
        idleTimeout: 30000
      }
    };
    
    var db = new PgCrLayer(config)
    
    var invoiceClass = jse('invoice', {
        properties: {
          id: {
            type: 'integer',
            autoIncrement: true,
            primaryKey: true
          },
          client: {
            type: 'string'
          }
        }
      });
    
    invoiceClass.hasMany('items', {
      properties: {
        id: {
          type: 'integer',
          autoIncrement: true,
          primaryKey: true
        },
        name: {
          type: 'string'
        },
        description: {
          type: 'string'
        },
        price: {
          type: 'number',
          maxLength: 10,
          decimals: 2
        },
        invoiceId: {
          type: 'integer',
          $ref: 'invoice'
        }
      }
    });
    
    var invoiceInstance;
    var invoice = invoiceClass.new(db);
    invoice.createTables() // Will create tables invoice and items
      .then(function() {
        return invoice.syncTables(); // Then the reference in items
      })
      .then(function() {
        invoiceInstance = invoice.createInstance({
          client: 'Jessica',
          items: [
            {
              name: 'diamond',
              description: 'a beautiful diamond',
              price: 9999.99
            }
          ]
        });
        return invoiceInstance.save();
      })
      .then(function() {
        console.log(JSON.stringify(invoiceInstance, null, ' '));
        /* will log
         {
          "id": 1,
          "client": "Jessica",
          "items": [
           {
            "id": 1,
            "name": "diamond",
            "description": "a beautiful diamond",
            "price": 9999.99,
            "invoiceId": 1
           }
          ]
         }
        */

    License

    MIT © Andre Gloria

    Install

    npm i json-schema-entity

    DownloadsWeekly Downloads

    89

    Version

    7.0.8

    License

    MIT

    Unpacked Size

    83.4 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar