Nietzsche's Preposterous Moustache
Wondering what’s next for npm?Check out our public roadmap! »

table-to-schema

0.1.3 • Public • Published

Super tiny fast library for convert sql result to json schema

website repo

Motivation

Library table-to-schema solves problem with converting 2 dimensional data from sql select to structure json schema.

With simple configuration you can set parameters which split 2 dimensional arrays by 1:N → 1:N → .. → 1:N and return new generated json schema.

Getting started

Installation

Using npm:

npm install table-to-schema --save

Import

You reqire only function (update from last version)

ES5

 var tableToSchema = require('table-to-schema').tableToSchema

ES6

import { tableToSchema } from 'table-to-schema'

Example

//ES6
import { tableToSchema } from 'table-to-schema'
//or ES5
var tableToSchema = require('table-to-schema').tableToSchema
 
 
var resultSql = [
  { manufact: 'VV(Skoda)',
    manufactId: 123,
    car: 'Octavia',
    carId: 67,
    engine: 'Ax154',
    engineId: 100,
  },
  { manufact: 'VV(Skoda)',
    manufactId: 123,
    car: 'Fabia',
    carId: 68,
    engine: 'Xe754',
    engineId: 911,
  },
  { manufact: 'VV(Skoda)',
    manufactId: 123,
    car: 'Fabia',
    carId: 68,
    engine: 'MP42Q',
    engineId: 478,
  }
]
 
 
var  config = [
  { distinctKey: 'manufact',
    childrenName: 'manufacts',
    keys: [ 'manufact', 'manufactId' ]
  },
  { distinctKey: 'car',
    childrenName: 'carList',
    keys: [ 'car', "carId" ]
  },
  { distinctKey: 'engine',
    keys: [ 'engine', "engineId" ]
  },
]
 
var results = tableToSchema(config, resultSql);
 
// results (return json schema created from config)
// if I'll test it with deep equal of course
// return true
results === [
  {
    manufact: "VV(Skoda)",
    manufactId: 123,
    manufacts: [
      {
        car: "Octavia",
        carId: 67,
        carList: [
          {
            engine: "Ax154",
            engineId: 100
          }
        ]
      },
      {
        car: "Fabia",
        carId: 68,
        carList: [
          {
            engine: "Xe754",
            engineId: 911
          },
          {
            engine: "MP42Q",
            engineId: 478
          }
        ]
      }
    ]
  }
]  
 
 
 

Configuration function

const results = tableToSchema(config, sqlTableData);

2 params

  • config
  • source data

Configuration config's parameter

For every dimension of your structure you define new item of config array.

Config object

  • DistinctKey → Name of column (unique key for new structure)
  • ChildrenName → Name of key value which serve children (relation 1:N) (defualt value is __childrens)
  • Keys → List of visible column name
const config = [
  { distinctKey: 'manufact',
    childrenName: 'manufacts',
    keys: [ 'manufact', 'manufactId' ]
  },
  { distinctKey: 'car',
    childrenName: 'cars',
    keys: [ 'car', "carId" ]
  },
]

for real example look to official repo website repo and exec these basic commands

npm install

npm run dev

Install

npm i table-to-schema

DownloadsWeekly Downloads

27

Version

0.1.3

License

MIT

Last publish

Collaborators

  • avatar