An adaptable query builder that allows extension and is easy to use.

Usage no npm install needed!

<script type="module">
  import acaiQuery from 'https://cdn.skypack.dev/@acai/query';


GitHub Build Status Support

Açaí's Framework query builder

A simple modular, scalable query builder that let you toggle strategies to easily, used and created by Açaí Framework.


  • MySQL
  • PostgreSQL
  • mongo
  • sqlite



npm install --save @acai/query


yarn add @acai/query



The first thing you are going to need is setup your query, you can easily define your default query or just setup one as follows:

import query, { setDefault, addQuery } from "@acai/query";

// Add query of sql type
await addQuery("secondary", "sql", {
  /* sql config */
const sqlquery = query("secondary");

// or setup a default query so you can easily import
await setDefaultQuery("pg", {
  /* Optional sql query settings, if you want to pass any */

// now every time you call query without arguments, it will look for the default query
const pgquery = query(); // <-- this is a postgreSQL query builder


You can easily search select using the query

import query from "@acai/query";

const results = await query()
  .where("id", 5)
  .get(["name", "age"]);

Our query builder smartlys build your raw string query so you don't have to worry about the details, for example:

await query().table("people").where("id", 5).where("name", "Robert").get();

// will output:
// SELECT FROM people WHERE id = 5 AND name = Robert

await query().table("people").where("id", 2).orWhere("name", "Robert").get();

// will output:
// SELECT FROM people WHERE id = 5 OR name = Robert


import query from "@acai/query";

await query().table("people").insert({
  name: "John",
  surname: "Doe",
  age: 32,


import query from "@acai/query";

await query().table("people").where("id", 5).update({
  name: "John",


import query from "@acai/query";

await query().table("people").where("id", 5).delete();