ts-sql
v1.0.1
Published
An SQL builder in Typescript. This project is heavily inspired by [XQL](/extjs/xql). A big shout out to @exjs and @kobalicek for this amazing project.
Downloads
164
Maintainers
Readme
ts-sql
SQL builder, AST and code generator in TypeScript. This project is heavily inspired by XQL. A big shout out to @exjs and @kobalicek for this amazing project.
Acknowledgements
Motivation
The primary use case that prompted me to start this project is to be able to transform a given query that uses a set of tables/columns to one that uses a different set of tables and columns based on a mapping. For e.g. you should be able to transform the following query:
SELECT t.field_1 FROM table_1 AS t
to the following query:
SELECT t.userId FROM user AS t
The following tools are available as part of this project:
- Abstract Syntax Tree - a set of classes and types that describes the SQL statements as per the language syntax.
- SQL Builder - an API that allows the users to build SQL statements using code and directly in the form of AST.
- SQL Compiler - a SQL compiler that generates SQL query based on the AST.
Beta
This project is currently in a beta stage and will continue to be until most of the features are built out.
Introduction
ts-sql is designed to build SQL programmatically and generate an AST. You can customize the AST programmatically. The AST will also support serialization to/from JSON. The AST can be compiled into a SQL query using query builders. Initially ts-sql will come with a MySQL builder. Other builders will be added as needed.
Installation
npm install ts-sql --save
yarn add ts-sql
Usage
It is highly recommended that you use this package with TypeScript in order to fully leverage the type safety and type guards available in the AST and the builder. You can use the API as follows:
let qb = new MySQLQueryBuilder();
let query = qb.select("*").from("accounts").build();
let qc = new MySQLQueryCompiler();
console.log(qc.compile(query));
// Output
// SELECT * FROM accounts