Skip to content

tuanphung/sqlb

Repository files navigation

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.

About

Fluent SQL package in Go to build SQL statements with easy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages