tagged-sql
TypeScript icon, indicating that this package has built-in type declarations

0.9.0 • Public • Published

标签化SQL TaggedSql

用 ES 标签模板书写 sql 语句。

Writing sql statement with ES6 tagged template strings.

主要特征 Key features

  • 基于 ES 标签模板语法 ES6 tagged template strings based
  • 支持给表名添加前缀 Supports adding prefixes to table names
  • 书写简单 Simple writing

引入 Import

import TaggedSql from 'tagged-sql';
// 或者 or
const TaggedSql = require('tagged-sql');

创建 Create

const sql = TaggedSql`SELECT author FROM books WHERE name = ${book} AND author = ${author}`

链接 Link

const where = TaggedSql`WHERE name = ${book} AND author = ${author}`
const limit = TaggedSql`Limit 10`


const sql1 = TaggedSql`SELECT author FROM books ${where} ${limit}`;
// 或者 or
const sql2 = TaggedSql('SELECT author FROM books', where, limit);

独立的字段及数据表 Independent fields and tables

// 数据表 Sql table name
const bookTable = TaggedSql.Table('books');

// 字段名 Field name
const dateField = TaggedSql.Field('date');


// 字段,同时指定数据表 Field, and specify the data table
const nameField = TaggedSql.Field('name', 'books');

// 字段,同时指定数据表 Field, and specify the data table
const authorField = TaggedSql.Field('author', bookTable);


const bookSql = TaggedSql`SELECT ${dateField} FROM ${bookTable} WHERE ${nameField} = ${'Help Of TaggedSql'} AND ${authorField} = ${'NyLoong'}`;

查询 Query

// postgres: 
pg.query(bookSql.build((_, i) => `$${ i + 1 }`), bookSql.values)
// 等价于 is equivalent to
pg.query(`SELECT "date" FROM "books" WHERE "books"."name" = $1 AND "books"."author" = $2`, ['Help Of TaggedSql', 'NyLoong'])

// mysql: 
mysql.query(bookSql.build('?'), bookSql.values)
// 等价于 is equivalent to
mysql.query(`SELECT "date" FROM "books" WHERE "books"."name" = ? AND "books"."author" = ?`, ['Help Of TaggedSql', 'NyLoong'])

查询时添加表格前缀 Query with table prefix

bookSqlWithPrefix.transform((v, t, g) => t !== 'table' || g ? v : `tp_${ v }`)
// postgres: 
pg.query(bookSqlWithPrefix.build((_, i) => `$${ i + 1 }`), bookSql.values)
// 等价于 is equivalent to
pg.query(`SELECT "date" FROM "tp_books" WHERE "tp_books"."name" = $1 AND "tp_books"."author" = $2`, ['Help Of TaggedSql', 'NyLoong'])

// mysql: 
mysql.query(bookSqlWithPrefix.build('?'), bookSql.values)
// 等价于 is equivalent to
mysql.query(`SELECT "date" FROM "tp_books" WHERE "tp_books"."name" = ? AND "tp_books"."author" = ?`, ['Help Of TaggedSql', 'NyLoong'])

Readme

Keywords

Package Sidebar

Install

npm i tagged-sql

Weekly Downloads

14

Version

0.9.0

License

MIT

Unpacked Size

79.8 kB

Total Files

9

Last publish

Collaborators

  • fierflame