Socket
Book a DemoInstallSign in
Socket

es6-sql

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

es6-sql

Write SQL with SQL

latest
npmnpm
Version
0.0.1
Version published
Weekly downloads
3
-40%
Maintainers
1
Weekly downloads
 
Created
Source

es6-sql

warning: in development, do not use, but do contribute.

Stop wasting your life with embedded DSLs [1], and just write SQL.

sql`SQL...`

Interpolate scope safely into a SQL statement, using ES6's tagged template strings.

var sql = require('es6-sql');

var table = 'interp_user_table',
    user_id = 100;

var query = sql`
    SELECT *
    FROM ${table}
    WHERE
        user_id = ${user_id}
        OR user_id IN (1,2,3)
        OR user_id IN (${sql`SELECT user_id FROM all_users WHERE is_active = True`})`;

Composition

Easily combine SQL programmatically.

query.column`SQL...`

query = query.column`COUNT(id) as total`;

query.join`SQL...`

query = query.join`
    LEFT JOIN user_tweets ON tweet_id = user_id
        AND tweeted_on > now`;

query.and`SQL...`

query = query.and`hello = ${123}`

query.or`SQL...`

query = query.or`foo IN (SELECT foo FROM foo)`;

query.group`SQL...`

query = query.group`user_id`;

query.having`SQL...`

query = query.having`COUNT(tweeted.id) > 2`;

query.order`SQL...`

query = query.order`tweeted_on DESC`;

query.limit(Number)

query = query.limit(25);

query.offset(Number)

query = query.offset(125);
function paginate(page, page_size) {
    query = query.limit(page).offset(page * page_size);
}

Composition through Interpolation

function queryCount(query) {
    return sql`SELECT count(*) as count FROM (${query}) a`;
}
function queryUnion(a, b) {
    return sql`${a} UNION ${b}`;
}

Reuse utilities at hand like lodash for assembling our queries.

function queryUnionList(query_list) {
    return query_list.reduce(queryUnion, query_list);
}

Serialization

sql.toString()

Serialize your SQL statement into a string with values interpolated.

console.log(query.toString());
SELECT *, COUNT(id) AS total
  FROM interp_user_table
  LEFT JOIN user_tweets
    ON ((tweet_id = user_id) AND (tweeted_on > now))
  WHERE (((((user_id = $1) OR (user_id IN (1, 2, 3))) OR (user_id IN (SELECT user_id
    FROM all_users
    WHERE (is_active = TRUE)))) AND (hello = $2)) OR (foo IN (
    SELECT foo
      FROM foo
  )))
  GROUP BY user_id
  HAVING (COUNT(tweeted_id) > 2)
  ORDER BY tweeted_on DESC
  LIMIT 25
  OFFSET 125

sql.parameters

console.log(query.parameters);
[100, 123]

[1]

Keywords

sql

FAQs

Package last updated on 01 Oct 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts