sqlbuilder

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2021 License: MIT Imports: 3 Imported by: 1

README

A simple package for building sql queries in Go.

Go Reference

Usage

Basic queries
Select
// query: SELECT * FROM products
query, _ := sqlbuilder.Select("*").From("products").
		Query()

// query: SELECT id, title FROM products
query, _ := sqlbuilder.Select("id", "title").From("products").
		Query()
Update
// query: UPDATE products SET title = $1
// args: []interface{}{"new title"}
query, args := sqlbuilder.Update("products").
		Set("title", "new title").
		Query()
Insert
// query: INSERT INTO products (title, description)
// 		  VALUES ($1, $2)
// args: []interface{}{"new title", "new description"}
query, args := sqlbuilder.Insert("products").
		Columns("title", "description").
		Values("new title", "new desscription").
		Query()
Delete
// query: DELETE FROM products
query, _ := sqlbuilder.DeleteFrom("products").Query()

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BuildFunc

type BuildFunc func(*Builder)

func And

func And(fns ...BuildFunc) BuildFunc

And builds an `AND` operator

func Eq

func Eq(column string, value interface{}) BuildFunc

Eq builds a `=` operator

func Expr

func Expr(expr string, args ...interface{}) BuildFunc

Expr adds a raw sql expression to the query builder

func Gt

func Gt(column string, value interface{}) BuildFunc

Gt builds a `>` operator

func Gte

func Gte(column string, value interface{}) BuildFunc

Gte builds a `>=` operator

func In

func In(col string, values ...interface{}) BuildFunc

In builds an `IN` operator

func IsNull

func IsNull(col string) BuildFunc

IsNull builds an `IS NULL` operator

func Like

func Like(col, pattern string) BuildFunc

Like builds a `LIKE` operator

func Lt

func Lt(column string, value interface{}) BuildFunc

Lt builds a `<` operator

func Lte

func Lte(column string, value interface{}) BuildFunc

Lte builds a `<=` operator

func Neq

func Neq(column string, value interface{}) BuildFunc

Neq builds a `<>` operator

func Not

func Not(fn BuildFunc) BuildFunc

Not builds a `NOT` operator

func NotIn

func NotIn(col string, values ...interface{}) BuildFunc

NotIn builds a `NOT IN` operator

func NotNull

func NotNull(col string) BuildFunc

NotNull builds an `IS NOT NULL` operator

func Or

func Or(fns ...BuildFunc) BuildFunc

Or builds an `OR` operator

type Builder

type Builder struct {
	*strings.Builder
	// contains filtered or unexported fields
}

Builder is where we put our built sql query

func NewBuilder

func NewBuilder() *Builder

NewBuilder creates a builder

func (*Builder) WriteArg

func (b *Builder) WriteArg(arg interface{})

WriteArg adds an input argument to builder

type DeleteBuilder

type DeleteBuilder struct {
	*Builder
	// contains filtered or unexported fields
}

func DeleteFrom

func DeleteFrom(table string) *DeleteBuilder

func (*DeleteBuilder) Query

func (db *DeleteBuilder) Query() (string, []interface{})

func (*DeleteBuilder) Where

func (db *DeleteBuilder) Where(cond BuildFunc) *DeleteBuilder

type InsertBuilder

type InsertBuilder struct {
	*Builder
	// contains filtered or unexported fields
}

func Insert

func Insert(table string) *InsertBuilder

func (*InsertBuilder) Columns

func (b *InsertBuilder) Columns(columns ...string) *InsertBuilder

func (*InsertBuilder) Query

func (b *InsertBuilder) Query() (string, []interface{})

func (*InsertBuilder) Values

func (b *InsertBuilder) Values(values ...interface{}) *InsertBuilder

type Op

type Op int
const (
	// Comparison Operators
	OpEQ  Op = iota // =
	OpNEQ           // <>
	OpGT            // >
	OpGTE           // >=
	OpLT            // <
	OpLTE           // <=

	// Logical operation
	OpAND // AND
	OpOR  // OR
	OpNot // NOT

	OpIN      // IN
	OpNotIN   // NOT IN
	OpIsNULL  // IS NULL
	OpNotNULL // IS NOT NULL
	OpLIKE    // LIKE
)

type SelectBuilder

type SelectBuilder struct {
	*Builder
	// contains filtered or unexported fields
}

func Select

func Select(columns ...string) *SelectBuilder

func (*SelectBuilder) From

func (sb *SelectBuilder) From(table string) *SelectBuilder

func (*SelectBuilder) GroupBy

func (sb *SelectBuilder) GroupBy(columns ...string) *SelectBuilder

func (*SelectBuilder) Having

func (sb *SelectBuilder) Having(cond BuildFunc) *SelectBuilder

func (*SelectBuilder) Join

func (sb *SelectBuilder) Join(table string, on BuildFunc) *SelectBuilder

func (*SelectBuilder) LeftJoin

func (sb *SelectBuilder) LeftJoin(table string, on BuildFunc) *SelectBuilder

func (*SelectBuilder) Limit

func (sb *SelectBuilder) Limit(limit int) *SelectBuilder

func (*SelectBuilder) Offset

func (sb *SelectBuilder) Offset(offset int) *SelectBuilder

func (*SelectBuilder) OrderBy

func (sb *SelectBuilder) OrderBy(columns ...string) *SelectBuilder

func (*SelectBuilder) Query

func (sb *SelectBuilder) Query() (string, []interface{})

func (*SelectBuilder) RightJoin

func (sb *SelectBuilder) RightJoin(table string, on BuildFunc) *SelectBuilder

func (*SelectBuilder) Where

func (sb *SelectBuilder) Where(pred BuildFunc) *SelectBuilder

type UpdateBuilder

type UpdateBuilder struct {
	*Builder
	// contains filtered or unexported fields
}

func Update

func Update(table string) *UpdateBuilder

func (*UpdateBuilder) Query

func (b *UpdateBuilder) Query() (string, []interface{})

func (*UpdateBuilder) Set

func (b *UpdateBuilder) Set(column string, value interface{}) *UpdateBuilder

func (*UpdateBuilder) Where

func (b *UpdateBuilder) Where(pred BuildFunc) *UpdateBuilder

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL