forked from ebhomengo/niki
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package mysqlquerybuilder
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.gocasts.ir/ebhomengo/niki/param"
|
|
)
|
|
|
|
func BuildGetAllQuery(baseQuery, table string, filter param.FilterRequest, pagination param.PaginationRequest, sort param.SortRequest) (query string, args []any) {
|
|
filterQuery, fArgs := BuildFilterQuery(baseQuery, table, filter)
|
|
paginationQuery, pArgs := BuildPaginationQuery(pagination)
|
|
sortQuery := BuildSortQuery(sort)
|
|
|
|
args = append(args, fArgs...)
|
|
args = append(args, pArgs...)
|
|
|
|
query = filterQuery
|
|
|
|
if sortQuery != "" {
|
|
query = fmt.Sprintf("%s %s", query, sortQuery)
|
|
}
|
|
if paginationQuery != "" {
|
|
query = fmt.Sprintf("%s %s", query, paginationQuery)
|
|
}
|
|
|
|
return query, args
|
|
}
|
|
|
|
func BuildGetTotalQuery(table, joinQuery string, filter param.FilterRequest, searchParams *param.QuerySearch, hasDeletedAt bool) (string, []any) {
|
|
var sArgs []any
|
|
|
|
baseQuery := fmt.Sprintf("SELECT COUNT(*) FROM %s ", table)
|
|
|
|
if searchParams != nil {
|
|
baseQuery, sArgs = BuildGetSearchQuery(baseQuery, joinQuery, *searchParams)
|
|
}
|
|
query, fArgs := BuildGetAllQuery(baseQuery, table, filter, param.PaginationRequest{}, param.SortRequest{})
|
|
if hasDeletedAt {
|
|
query = BuildDeletedAtQuery(query, table)
|
|
}
|
|
args := append(sArgs, fArgs...)
|
|
|
|
return query, args
|
|
}
|