A Javascript library for building SQL queries
Expect no further fixes or features. Anyone is free to fork, modify, and publish the code, but please do not reuse the name "Sqorn" without permission.
Why: The original developer does not and will not have the time and motivation to continue.
Sqorn is a Javascript library for building SQL queries.
Composable: Build complex queries from simple parts. Chain, extend, and embed queries.
Intuitive: Sqorn's use of modern Javascript language features like tagged template literals and promises makes building and issuing SQL queries a breeze.
Concise: Sqorn provides concise syntax for common CRUD operations.
Fast: 10x faster than Knex.js and 200x faster than Squel
Secure: Sqorn generates parameterized queries safe from SQL injection. Sqorn has no external dependencies.
Sqorn requires Node version 8 or above.
npm install --save @sqorn/pg # only Postgres is currently supported
Then read the tutorial and try the online demo.
CRUD Operations are dead simple.
const sq = require('@sqorn/pg')()
const Person = sq`person`, Book = sq`book`
// SELECT
const children = await Person`age < ${13}`
// "select * from person where age < 13"
// DELETE
const [deleted] = await Book.delete({ id: 7 })`title`
// "delete from book where id = 7 returning title"
// INSERT
await Person.insert({ firstName: 'Rob' })
// "insert into person (first_name) values ('Rob')"
// UPDATE
await Person({ id: 23 }).set({ name: 'Rob' })
// "update person set name = 'Rob' where id = 23"
Build complex queries from simple parts.
// CHAIN QUERIES
sq.from`book`
.return`distinct author`
.where({ genre: 'Fantasy' })
.where({ language: 'French' })
// select distinct author from book
// where language = 'French' and genre = 'Fantasy'
// EXTEND QUERIES
sq.extend(
sq.from`book`,
sq.return`distinct author`,
sq.where({ genre: 'Fantasy' }),
sq.where({ language: 'French' })
)
// select distinct author from book
// where language = 'French' and genre = 'Fantasy'
// EMBED Queries
sq.return`now() today, (${sq.return`now() + '1 day'`}) tomorrow`
// select now() today, (select now() + '1 day') tomorrow
Learn more in the tutorial.
Sqorn is a monorepo managed with Lerna.
Clone the repo then run the following commands to install all dependencies:
npm install
npm run bootstrap # installs dependencies in all packages
npm test
runs all tests. npm run clean
removes all dependencies.
MIT Licensed, Copyright (c) 2018 Sufyan Dawoodjee