SkillAgentSearch skills...

Sqorn

A Javascript library for building SQL queries

Install / Use

/learn @sqorn/Sqorn

README

<img src="https://raw.githubusercontent.com/sqorn/sqorn/master/docs/website/static/img/logo_blue.svg?sanitize=true" height="38px"/> <span style="color: #2979f">Sqorn</span> · License npm Supports Node 8+ npm Coverage Status

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.

Install

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.

Examples

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.

Contributing

Sqorn is a monorepo managed with npm workspaces.

Clone the repo then run the following commands to install all dependencies:

npm install

npm test runs all tests. npm run clean removes all dependencies.

To run tests that connect to Postgres, you need a running postgres instance from somewhere. Then, you need to set the standard Postgres environment variables to tell the tests where to connect. If you add a .env file to this repo, the tests will use environment variables from there to connect.

// in `.env`
PGHOST=127.0.0.1
PGUSER=some-user
PGPASSWORD=some-password
PGPORT=5432
PGDATABASE=postgres

Maintainers

Sqorn is currently maintained by the @gadgetinc development team. Please direct support requests, bug reports, and other communication about Sqorn to this github repo.

Sqorn was originally created and maintained by @eejdoowad. Thanks to Sufyan for all their hard work creating the project!

License

MIT Licensed, Copyright (c) 2018 Sufyan Dawoodjee

View on GitHub
GitHub Stars1.9k
CategoryData
Updated27d ago
Forks49

Languages

JavaScript

Security Score

100/100

Audited on Mar 5, 2026

No findings