76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
//
|
|
// db_func_opt.go
|
|
// Copyright (C) 2023 tiglog <me@tiglog.com>
|
|
//
|
|
// Distributed under terms of the MIT license.
|
|
//
|
|
|
|
package sqldb
|
|
|
|
type QueryOption struct {
|
|
table string
|
|
query string
|
|
set string
|
|
fields []string
|
|
sort string
|
|
offset int
|
|
limit int
|
|
args []any
|
|
joins []string
|
|
}
|
|
|
|
func NewQueryOption(table string) *QueryOption {
|
|
return &QueryOption{
|
|
table: table,
|
|
fields: []string{"*"},
|
|
offset: 0,
|
|
limit: 0,
|
|
args: make([]any, 0),
|
|
joins: make([]string, 0),
|
|
}
|
|
}
|
|
func (opt *QueryOption) Query(query string) *QueryOption {
|
|
opt.query = query
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Fields(args []string) *QueryOption {
|
|
opt.fields = args
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Select(cols ...string) *QueryOption {
|
|
opt.fields = cols
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Offset(offset int) *QueryOption {
|
|
opt.offset = offset
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Limit(limit int) *QueryOption {
|
|
opt.limit = limit
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Sort(sort string) *QueryOption {
|
|
opt.sort = sort
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Set(set string) *QueryOption {
|
|
opt.set = set
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Args(args ...any) *QueryOption {
|
|
opt.args = args
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) Join(table string, cond string) *QueryOption {
|
|
opt.joins = append(opt.joins, "join "+table+" on "+cond)
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) LeftJoin(table string, cond string) *QueryOption {
|
|
opt.joins = append(opt.joins, "left join "+table+" on "+cond)
|
|
return opt
|
|
}
|
|
func (opt *QueryOption) RightJoin(table string, cond string) *QueryOption {
|
|
opt.joins = append(opt.joins, "right join "+table+" on "+cond)
|
|
return opt
|
|
}
|