Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 2.43 KB

README.md

File metadata and controls

63 lines (48 loc) · 2.43 KB

sqlb

Build Status Coverage Status

A lightweight package which provides an convenience way for you to construct SQL statements. The main focus is producing SQL statement with arguments, we leave you to decide how to execute the statement, either use the standard database/sql or sqlx or any existing library in your codebase.

Features

  • Support most common SQL statements (SELECT, FROM, WHERE, HAVING, ORDER BY, LIMIT, OFFSET, etc...).
  • Statement chaining, e.g: sb.Select("*").From("users").
  • Expression combination to build up WHERE clause in any complexity.
  • Support Postgresql argument placeholder ($).

Installation

import sb "github.com/tuanphung/sqlb"

Usages

Most popular statement

sql, args, err := sb.Select("id", "name").From("user").Where(sb.Eq{"id", 1}).ToExpr()

// sql: SELECT id, name FROM user WHERE id = ?
// args: [1]
// SELECT id, name FROM user WHERE id = 1

A bit more complex statement

sql, args, err := sb.Select("id", "name").From("user").Where(sb.Or{sb.Eq{"foo", "bar"}, sb.Eq{"id", 1}}).Offset(0).Limit(10).ToExpr()

// sql: SELECT id, name FROM user WHERE (foo = ? OR id = ?) LIMIT 10
// args: ['bar', 1]
// SELECT id, name FROM user WHERE (foo = 'bar' OR id = 1) LIMIT 10

Not enough statement? Use Raw

sql, args, err := sb.Raw("EXPLAIN").Select("id", "name").From("user").Where(sb.Or{sb.Eq{"foo", "bar"}, sb.Eq{"id", 1}}).Offset(0).Limit(10).ToExpr()

// sql: EXPLAIN SELECT id, name FROM user WHERE (foo = ? OR id = ?) LIMIT 10
// args: ['bar', 1]
// EXPLAIN SELECT id, name FROM user WHERE (foo = 'bar' OR id = 1) LIMIT 10

Rebind argument placeholder

The library use ? as default argument placeholder. We love Postgresql, so we support rebinding with $.

// Globally set placeholder to `$`
sb.SetPlaceholder(sb.Dollar)

sql, args, err := sb.Raw("EXPLAIN").Select("id", "name").From("user").Where(sb.Or{sb.Eq{"foo", "bar"}, sb.Eq{"id", 1}}).Offset(0).Limit(10).ToExpr()

// sql: EXPLAIN SELECT id, name FROM user WHERE (foo = $1 OR id = $2) LIMIT 10
// args: ['bar', 1]
// EXPLAIN SELECT id, name FROM user WHERE (foo = 'bar' OR id = 1) LIMIT 10

FAQs

License

sqlb is released under the MIT License.