sqlb

package module
v1.4.3 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 5 Imported by: 0

README

Go SQL builder

Install

go get -u github.com/LineoIT/sqlb

Basic usages

Select query
package main

import (
	"github.com/LineoIT/sqlb"
)

func main() {

	// Example 1
	q := *sqlb.Select("*").
		From("users").
		Where(sqlb.In("age", []string{"76", "80"})).
		Or("email", "aaa@ajks.com").
		Where(sqlb.Between("salary", []float64{5000, 5900})).
		Or(sqlb.NotIn("role", []string{"admin", "driver"})).
		GroupBy("id", "age").
		Having(sqlb.NotEq("email", "aaa@ajks.com")).
		Or(sqlb.NotIn("item", []int{0, 1})).
		Limit(90).
		Offset(7).
		OrderBy("id").
		Build()
}
# output
select * from users where age in (76,80) or email aaa@ajks.com and salary between 5000 and 5900 or role not in (admin,driver) group by id,age having email <> aaa@ajks.com or item not in (0,760) order by id limit 90 offset 7;
// Example 2
q := *sqlb.SQL("select * from users").
	Where(sqlb.In("age", []string{"76", "80"})).
	Or("email", "aaa@ajks.com").
	Where(sqlb.Between("salary", []float64{5000, 5900})).
	Or(sqlb.NotIn("role", []string{"admin", "driver"})).
	GroupBy("id", "age").
	Having(sqlb.NotEq("email", "aaa@ajks.com")).
	Or(sqlb.NotIn("item", []int{0, 1})).
	Limit(90).
	Offset(7).
	OrderBy("id").
	Build()

# output
select * from users where age in (76,80) or email aaa@ajks.com and salary between 5000 and 5900 or role not in (admin,driver) group by id,age having email <> aaa@ajks.com or item not in (0,760) order by id limit 90 offset 7;
Insertion
q := sqlb.Insert("users").Value("email", "mail@example.com").
	Value("age", 10).
	Return("id").
	Build()
# output
insert into users (email,age) values(mail@example.com,10) returning id
Update
q := sqlb.Update("users").Set("email", "mail@example.com").
	Set("age", 10).
	Where("id", 2).
	Or(sqlb.NotIn("item", []int{0, 1})).
	Return("updated_at").
	Build()
# output
update users set email=mail@example.com,age=10 where id=2 or item not in (0,1) returning updated_at;
Delete
q := sqlb.Delete("users").
	Where("id", 2).
	Or(sqlb.NotIn("item", []int{0, 1})).
	Build()
# output
delete from users where id=2 or item not in (0,1);
Base Functions
  • Select
  • From
  • SQL
  • Build
  • Stmt
  • Error
  • Args
Clause Functions
  • Where
  • Or
  • Having
  • GroupBy
  • OrderBy
  • Offset
  • Limit
  • Sort
  • Take
  • Raw
Expression functions
  • Coalesce
  • Nullif
  • Equal
  • NotEqual
  • In
  • NotIn
  • Between
  • IsNull
  • IsNotNull
  • Is
  • IsNot
  • Like
  • Ilike
  • Expression
  • Greater
  • GreaterOrEqual
  • Less
Helpers
  • Debug
  • CleanSQL

Documentation

Index

Constants

View Source
const (
	ASC  = "ASC"
	DESC = "DESC"
)

Variables

This section is empty.

Functions

func Between

func Between[T comparable](field string, value []T) (string, []T)

func CleanSQL

func CleanSQL(query string) string

func Debug

func Debug(query string, args ...interface{}) string

func Equal

func Equal(field string, value any) (string, any)

func Expression

func Expression(field string, exp string, value any) (string, any)

func Greater

func Greater(field string, value any) (string, any)

func GreaterOrEqual

func GreaterOrEqual(field string, value any) (string, any)

func Ilike

func Ilike(field string, value any) (string, any)

func In

func In[T comparable](field string, value []T) (string, []T)

func Is

func Is(field string, value any) (string, any)

func IsNot

func IsNot(field string, value any) (string, any)

func IsNotNull

func IsNotNull(field string) (string, any)

func IsNull

func IsNull(field string) (string, any)

func Less

func Less(field string, value any) (string, any)

func LessOrEqual

func LessOrEqual(field string, value any) (string, any)

func Like

func Like[T comparable](field string, value T) (string, T)

func NotEqual

func NotEqual(field string, value any) (string, any)

func NotIn

func NotIn[T comparable](field string, value []T) (string, []T)

func Select

func Select(columns ...string) *selectQuery

Types

type BatchInsertQuery

type BatchInsertQuery struct {
	// contains filtered or unexported fields
}

func BatchInsert

func BatchInsert(table string, cols ...string) *BatchInsertQuery

func (*BatchInsertQuery) Args

func (q *BatchInsertQuery) Args() []any

func (*BatchInsertQuery) Build

func (q *BatchInsertQuery) Build() *BatchInsertQuery

func (*BatchInsertQuery) Columns

func (q *BatchInsertQuery) Columns(cols ...string) *BatchInsertQuery

func (*BatchInsertQuery) Debug

func (q *BatchInsertQuery) Debug() string

func (*BatchInsertQuery) Return

func (q *BatchInsertQuery) Return(fields ...string) *BatchInsertQuery

func (*BatchInsertQuery) Stmt

func (q *BatchInsertQuery) Stmt() string

func (*BatchInsertQuery) Values

func (q *BatchInsertQuery) Values(values ...any) *BatchInsertQuery

type DeleteQuery

type DeleteQuery struct {
	// contains filtered or unexported fields
}

func Delete

func Delete(table string) *DeleteQuery

func (*DeleteQuery) Build

func (q *DeleteQuery) Build() *DeleteQuery

func (*DeleteQuery) Debug

func (q *DeleteQuery) Debug() string

func (*DeleteQuery) Error

func (q *DeleteQuery) Error() error

func (*DeleteQuery) GroupBy

func (q *DeleteQuery) GroupBy(columns ...string) *DeleteQuery

func (*DeleteQuery) Having

func (q *DeleteQuery) Having(column string, value interface{}) *DeleteQuery

func (*DeleteQuery) Limit

func (q *DeleteQuery) Limit(limit int64) *DeleteQuery

func (*DeleteQuery) Offset

func (q *DeleteQuery) Offset(offset int64) *DeleteQuery

func (*DeleteQuery) Or

func (q *DeleteQuery) Or(column string, value interface{}) *DeleteQuery

func (*DeleteQuery) OrderBy

func (q *DeleteQuery) OrderBy(orderby ...string) *DeleteQuery

func (*DeleteQuery) Return

func (q *DeleteQuery) Return(fields ...string) *DeleteQuery

func (*DeleteQuery) Sort

func (q *DeleteQuery) Sort(sort string) *DeleteQuery

func (*DeleteQuery) Stmt

func (q *DeleteQuery) Stmt() string

func (*DeleteQuery) Take

func (q *DeleteQuery) Take(limit, offset int64) *DeleteQuery

func (*DeleteQuery) Values

func (q *DeleteQuery) Values() []any

func (*DeleteQuery) Where

func (q *DeleteQuery) Where(column string, value interface{}) *DeleteQuery

type InsertQuery

type InsertQuery struct {
	// contains filtered or unexported fields
}

func Insert

func Insert(table string) *InsertQuery

func (*InsertQuery) Build

func (q *InsertQuery) Build() *InsertQuery

func (*InsertQuery) Debug

func (q *InsertQuery) Debug() string

func (*InsertQuery) OnConflict

func (q *InsertQuery) OnConflict(fields ...string) *conflictQuery

func (*InsertQuery) Return

func (q *InsertQuery) Return(fields ...string) *InsertQuery

func (*InsertQuery) Stmt

func (q *InsertQuery) Stmt() string

func (*InsertQuery) Value

func (q *InsertQuery) Value(field string, value any) *InsertQuery

func (*InsertQuery) Values

func (q *InsertQuery) Values() []any

type QueryBuilder

type QueryBuilder struct {
	// contains filtered or unexported fields
}

func SQL

func SQL(baseQuery string) *QueryBuilder

func (*QueryBuilder) Args

func (q *QueryBuilder) Args() []interface{}

func (*QueryBuilder) Build

func (q *QueryBuilder) Build() *QueryBuilder

func (*QueryBuilder) Contains

func (q *QueryBuilder) Contains(col string, value string) *QueryBuilder

func (*QueryBuilder) Debug

func (q *QueryBuilder) Debug() string

func (*QueryBuilder) EndScope

func (q *QueryBuilder) EndScope() *QueryBuilder

func (*QueryBuilder) EndWith

func (q *QueryBuilder) EndWith(col string, value string) *QueryBuilder

func (*QueryBuilder) Error

func (q *QueryBuilder) Error() error

func (*QueryBuilder) GroupBy

func (q *QueryBuilder) GroupBy(columns ...string) *QueryBuilder

func (*QueryBuilder) Having

func (q *QueryBuilder) Having(column string, value interface{}) *QueryBuilder

func (*QueryBuilder) InnerJoin

func (q *QueryBuilder) InnerJoin(table string) *QueryBuilder

func (*QueryBuilder) Join

func (q *QueryBuilder) Join(table string) *QueryBuilder

func (*QueryBuilder) LeftJoin

func (q *QueryBuilder) LeftJoin(table string) *QueryBuilder

func (*QueryBuilder) Limit

func (q *QueryBuilder) Limit(limit int64) *QueryBuilder

func (*QueryBuilder) Offset

func (q *QueryBuilder) Offset(offset int64) *QueryBuilder

func (*QueryBuilder) On

func (q *QueryBuilder) On(foreignKey, referenceKey string) *QueryBuilder

func (*QueryBuilder) Or

func (q *QueryBuilder) Or(column string, value interface{}) *QueryBuilder

func (*QueryBuilder) OrRaw

func (q *QueryBuilder) OrRaw(raw string) *QueryBuilder

func (*QueryBuilder) OrderBy

func (q *QueryBuilder) OrderBy(orderby ...string) *QueryBuilder

func (*QueryBuilder) Raw

func (q *QueryBuilder) Raw(raw string) *QueryBuilder

func (*QueryBuilder) RightJoin

func (q *QueryBuilder) RightJoin(table string) *QueryBuilder

func (*QueryBuilder) Scope

func (q *QueryBuilder) Scope() *QueryBuilder

func (*QueryBuilder) Sort

func (q *QueryBuilder) Sort(sort string) *QueryBuilder

func (*QueryBuilder) StartWith

func (q *QueryBuilder) StartWith(col string, value string) *QueryBuilder

func (*QueryBuilder) Stmt

func (q *QueryBuilder) Stmt() string

func (*QueryBuilder) Take

func (q *QueryBuilder) Take(limit, offset int64) *QueryBuilder

func (*QueryBuilder) Where

func (q *QueryBuilder) Where(column string, value interface{}) *QueryBuilder

func (*QueryBuilder) WhereRaw

func (q *QueryBuilder) WhereRaw(raw string) *QueryBuilder

type UpdateQuery

type UpdateQuery struct {
	// contains filtered or unexported fields
}

func Update

func Update(table string) *UpdateQuery

func (*UpdateQuery) Build

func (q *UpdateQuery) Build() *UpdateQuery

func (*UpdateQuery) Debug

func (q *UpdateQuery) Debug() string

func (*UpdateQuery) Error

func (q *UpdateQuery) Error() error

func (*UpdateQuery) GroupBy

func (q *UpdateQuery) GroupBy(columns ...string) *UpdateQuery

func (*UpdateQuery) Having

func (q *UpdateQuery) Having(column string, value interface{}) *UpdateQuery

func (*UpdateQuery) Limit

func (q *UpdateQuery) Limit(limit int64) *UpdateQuery

func (*UpdateQuery) Offset

func (q *UpdateQuery) Offset(offset int64) *UpdateQuery

func (*UpdateQuery) Or

func (q *UpdateQuery) Or(column string, value interface{}) *UpdateQuery

func (*UpdateQuery) OrderBy

func (q *UpdateQuery) OrderBy(orderby ...string) *UpdateQuery

func (*UpdateQuery) Return

func (q *UpdateQuery) Return(fields ...string) *UpdateQuery

func (*UpdateQuery) Set

func (q *UpdateQuery) Set(field string, value any) *UpdateQuery

func (*UpdateQuery) Sort

func (q *UpdateQuery) Sort(sort string) *UpdateQuery

func (*UpdateQuery) Stmt

func (q *UpdateQuery) Stmt() string

func (*UpdateQuery) Take

func (q *UpdateQuery) Take(limit, offset int64) *UpdateQuery

func (*UpdateQuery) Values

func (q *UpdateQuery) Values() []any

func (*UpdateQuery) Where

func (q *UpdateQuery) Where(column string, value interface{}) *UpdateQuery

type ValueFunc

type ValueFunc struct {
	// contains filtered or unexported fields
}

func Coalesce

func Coalesce(value any, alternative any, cast ...string) ValueFunc

func Nullif

func Nullif(value any, alternative any, cast ...string) ValueFunc

Jump to

Keyboard shortcuts

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