table-to-schema
v0.1.3
Published
Convertor arr of obj to json schema (tree)
Downloads
4
Maintainers
Readme
Super tiny fast library for convert sql result to json schema
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