Skip to content
This repository has been archived by the owner on Nov 18, 2020. It is now read-only.

Latest commit

 

History

History
139 lines (110 loc) · 3.45 KB

README.md

File metadata and controls

139 lines (110 loc) · 3.45 KB

Build Status spotify

Mongo selector SQL builder (WIP)

Build an SQL selector (WHERE) from a Mongo selector.

NOTE: Currently the produced SQL is mysql opinionated

Install

npm install mongoloidsql

Usage

Example 1

var builder = require('mongoloidsql');

console.log('SELECT * FROM `table` WHERE ' + builder({id: 1});

Output:

SELECT * FROM `table` WHERE `id` = 1

Example 2

var builder = require('mongoloidsql');

console.log('SELECT * FROM `table` WHERE ' + builder({id: 1, 'test' : { '$gt': 1}});

Output:

SELECT * FROM `table` WHERE `id` = 1 AND `test` > 1

etc...

what what

var builder = require('mongoloidsql');

console.log('SELECT * FROM `table` WHERE ' + builder({
        'col1': 1,
        "$and": [
          {
            $or: [
              {'col2': 2},
              {'col3': 3}
            ]
          },
          {
            'col4': {
              '$eq': 4
            }
          },
          {
            'col5': {
              '$ne': 5
            }
          },
          {
            '$and': [
              {'col6': {'$gt': 6}},
              {'col7': {'$lte': 7}},
              {'$or': [
                {'col8': {'$gt': 6}},
                {'col9': {'$lte': 7}}
              ]}
            ]
          }
        ],
        '$or': [
          {
            $or: [
              {'col2': 2},
              {'col3': 3}
            ]
          },
          {
            'col4': {
              '$eq': 4
            }
          },
          {
            'col5': {
              '$ne': 5
            }
          },
          {
            '$and': [
              {'col6': {'$gt': 6}},
              {'col7': {'$lte': 7}},
              {'$or': [
                {'col8': {'$gt': 6}},
                {'col9': {'$lte': 7}}
              ]}
            ]
          }
        ],
      })
    );
  }));

Output:

SELECT * FROM `table` WHERE (`col1` = 1 AND ((`col2` = 2 OR `col3` = 3) AND `col4` = 4 AND `col5` != 5 AND (`col6` > 6 AND `col7` <= 7 AND (`col8` > 6 OR `col9` <= 7))) AND ((`col2` = 2 OR `col3` = 3) OR `col4` = 4 OR `col5` != 5 OR (`col6` > 6 AND `col7` <= 7 AND (`col8` > 6 OR `col9` <= 7))))

Reference

What is not (yet) implemented/supported

TODO

Release script / publication