forked from ebhomengo/niki
Merge pull request 'fix(niki): fix get all kindbox and kindboxreq with filter param' (#206) from stage/hamed/fix-get-all-api into develop
Reviewed-on: ebhomengo/niki#206
This commit is contained in:
commit
bf8a141f68
|
|
@ -19,7 +19,7 @@ import (
|
||||||
// @Param filter_id query int false "Filter by ID"
|
// @Param filter_id query int false "Filter by ID"
|
||||||
// @Param filter_kind_box_req_id query int false "Filter by KindBox request ID"
|
// @Param filter_kind_box_req_id query int false "Filter by KindBox request ID"
|
||||||
// @Param filter_benefactor_id query int false "Filter by benefactor ID"
|
// @Param filter_benefactor_id query int false "Filter by benefactor ID"
|
||||||
// @Param filter_kind_box_type query string false "Filter by KindBox type" Enums(on-table,cylindrical,stand-up)
|
// @Param filter_type query string false "Filter by KindBox type" Enums(on-table,cylindrical,stand-up)
|
||||||
// @Param filter_amount query int false "Filter by amount"
|
// @Param filter_amount query int false "Filter by amount"
|
||||||
// @Param filter_serial_number query string false "Filter by serial number"
|
// @Param filter_serial_number query string false "Filter by serial number"
|
||||||
// @Param filter_status query string false "Filter by status" Enums(delivered,ready-to-return,assigned-receiver-agent,returned,enumerated)
|
// @Param filter_status query string false "Filter by status" Enums(delivered,ready-to-return,assigned-receiver-agent,returned,enumerated)
|
||||||
|
|
|
||||||
|
|
@ -441,7 +441,7 @@
|
||||||
],
|
],
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Filter by KindBox type",
|
"description": "Filter by KindBox type",
|
||||||
"name": "filter_kind_box_type",
|
"name": "filter_type",
|
||||||
"in": "query"
|
"in": "query"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1378,7 +1378,7 @@ paths:
|
||||||
- cylindrical
|
- cylindrical
|
||||||
- stand-up
|
- stand-up
|
||||||
in: query
|
in: query
|
||||||
name: filter_kind_box_type
|
name: filter_type
|
||||||
type: string
|
type: string
|
||||||
- description: Filter by amount
|
- description: Filter by amount
|
||||||
in: query
|
in: query
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ func (s *SearchRequest) GetSearch() *QuerySearch {
|
||||||
s.Query = strings.TrimSpace(s.Query)
|
s.Query = strings.TrimSpace(s.Query)
|
||||||
re := regexp.MustCompile(`[\p{P}\p{S}]+`)
|
re := regexp.MustCompile(`[\p{P}\p{S}]+`)
|
||||||
s.Query = re.ReplaceAllString(s.Query, "")
|
s.Query = re.ReplaceAllString(s.Query, "")
|
||||||
|
s.Query = strings.ReplaceAll(s.Query, " ", "")
|
||||||
for _, val := range searchItems {
|
for _, val := range searchItems {
|
||||||
searchParams[val] = s.Query
|
searchParams[val] = s.Query
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,19 @@ import (
|
||||||
func BuildDeletedAtQuery(query, table string) string {
|
func BuildDeletedAtQuery(query, table string) string {
|
||||||
deletedAtClause := fmt.Sprintf(" %s.deleted_at IS NULL ", table)
|
deletedAtClause := fmt.Sprintf(" %s.deleted_at IS NULL ", table)
|
||||||
|
|
||||||
if !strings.Contains(query, "WHERE") {
|
if strings.Contains(query, "WHERE") {
|
||||||
return appendStringBefore(query, "WHERE", deletedAtClause)
|
|
||||||
}
|
|
||||||
|
|
||||||
return appendStringAfter(query, "AND", deletedAtClause)
|
return appendStringAfter(query, "AND", deletedAtClause)
|
||||||
}
|
}
|
||||||
|
|
||||||
func appendStringBefore(s, operator, appendage string) string {
|
if strings.Contains(query, "ORDER") {
|
||||||
limitIndex := strings.Index(strings.ToUpper(s), "LIMIT")
|
return appendStringBefore(query, "WHERE", "ORDER", deletedAtClause)
|
||||||
|
}
|
||||||
|
return appendStringBefore(query, "WHERE", "LIMIT", deletedAtClause)
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendStringBefore(s, operator, needle, appendage string) string {
|
||||||
|
limitIndex := strings.Index(strings.ToUpper(s), needle)
|
||||||
|
|
||||||
if limitIndex == -1 {
|
if limitIndex == -1 {
|
||||||
return s + operator + appendage
|
return s + operator + appendage
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,11 @@ func BuildGetSearchQuery(baseQuery string, filter map[string]interface{}, exist
|
||||||
for key, value := range filter {
|
for key, value := range filter {
|
||||||
if key == "id" {
|
if key == "id" {
|
||||||
conditions = append(conditions, fmt.Sprintf("%s = ?", key))
|
conditions = append(conditions, fmt.Sprintf("%s = ?", key))
|
||||||
|
args = append(args, value)
|
||||||
} else {
|
} else {
|
||||||
conditions = append(conditions, fmt.Sprintf("%s LIKE ?", key))
|
conditions = append(conditions, fmt.Sprintf("%s LIKE ?", key))
|
||||||
|
args = append(args, "%"+value.(string)+"%")
|
||||||
}
|
}
|
||||||
args = append(args, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
query := baseQuery
|
query := baseQuery
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,15 @@ import (
|
||||||
|
|
||||||
func (d *DB) GetAllBenefactor(ctx context.Context, filter params.FilterRequest, pagination params.PaginationRequest, sort params.SortRequest, searchParams *params.QuerySearch) ([]entity.Benefactor, uint, error) {
|
func (d *DB) GetAllBenefactor(ctx context.Context, filter params.FilterRequest, pagination params.PaginationRequest, sort params.SortRequest, searchParams *params.QuerySearch) ([]entity.Benefactor, uint, error) {
|
||||||
const op = "mysqlbenefactor.GetAllBenefactor"
|
const op = "mysqlbenefactor.GetAllBenefactor"
|
||||||
|
var sArgs []any
|
||||||
table := "benefactors"
|
table := "benefactors"
|
||||||
|
|
||||||
baseQuery := `SELECT * FROM benefactors`
|
baseQuery := `SELECT * FROM benefactors`
|
||||||
|
|
||||||
searchQuery, sArgs := builder.BuildGetSearchQuery(baseQuery, *searchParams, false)
|
if searchParams != nil {
|
||||||
query, fArgs := builder.BuildGetAllQuery(searchQuery, table, filter, pagination, sort)
|
baseQuery, sArgs = builder.BuildGetSearchQuery(baseQuery, *searchParams, false)
|
||||||
|
}
|
||||||
|
query, fArgs := builder.BuildGetAllQuery(baseQuery, table, filter, pagination, sort)
|
||||||
args := append(sArgs, fArgs...)
|
args := append(sArgs, fArgs...)
|
||||||
|
|
||||||
rows, qErr := d.conn.Conn().QueryContext(ctx, query, args...)
|
rows, qErr := d.conn.Conn().QueryContext(ctx, query, args...)
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,15 @@ import (
|
||||||
|
|
||||||
func (d *DB) GetAllKindBox(ctx context.Context, filter params.FilterRequest, pagination params.PaginationRequest, sort params.SortRequest, searchParams *params.QuerySearch) ([]entity.KindBox, uint, error) {
|
func (d *DB) GetAllKindBox(ctx context.Context, filter params.FilterRequest, pagination params.PaginationRequest, sort params.SortRequest, searchParams *params.QuerySearch) ([]entity.KindBox, uint, error) {
|
||||||
const op = "mysqlkindbox.GetAllKindBox"
|
const op = "mysqlkindbox.GetAllKindBox"
|
||||||
|
var sArgs []any
|
||||||
table := "kind_boxes"
|
table := "kind_boxes"
|
||||||
|
|
||||||
baseQuery := `SELECT kind_boxes.* FROM kind_boxes`
|
baseQuery := `SELECT kind_boxes.* FROM kind_boxes`
|
||||||
|
|
||||||
searchQuery, sArgs := builder.BuildGetSearchQuery(baseQuery, *searchParams, true)
|
if searchParams != nil {
|
||||||
filterQuery, fArgs := builder.BuildGetAllQuery(searchQuery, table, filter, pagination, sort)
|
baseQuery, sArgs = builder.BuildGetSearchQuery(baseQuery, *searchParams, true)
|
||||||
|
}
|
||||||
|
filterQuery, fArgs := builder.BuildGetAllQuery(baseQuery, table, filter, pagination, sort)
|
||||||
query := builder.BuildDeletedAtQuery(filterQuery, table)
|
query := builder.BuildDeletedAtQuery(filterQuery, table)
|
||||||
args := append(sArgs, fArgs...)
|
args := append(sArgs, fArgs...)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,15 @@ import (
|
||||||
|
|
||||||
func (d *DB) GetAllKindBoxReq(ctx context.Context, filter param.FilterRequest, pagination param.PaginationRequest, sort param.SortRequest, searchParams *param.QuerySearch) ([]entity.KindBoxReq, uint, error) {
|
func (d *DB) GetAllKindBoxReq(ctx context.Context, filter param.FilterRequest, pagination param.PaginationRequest, sort param.SortRequest, searchParams *param.QuerySearch) ([]entity.KindBoxReq, uint, error) {
|
||||||
const op = "mysqlkindboxreq.GetAllKindBoxReq"
|
const op = "mysqlkindboxreq.GetAllKindBoxReq"
|
||||||
|
var sArgs []any
|
||||||
table := "kind_box_reqs"
|
table := "kind_box_reqs"
|
||||||
|
|
||||||
baseQuery := `SELECT kind_box_reqs.* FROM kind_box_reqs`
|
baseQuery := `SELECT kind_box_reqs.* FROM kind_box_reqs`
|
||||||
|
|
||||||
searchQuery, sArgs := builder.BuildGetSearchQuery(baseQuery, *searchParams, true)
|
if searchParams != nil {
|
||||||
filterQuery, fArgs := builder.BuildGetAllQuery(searchQuery, table, filter, pagination, sort)
|
baseQuery, sArgs = builder.BuildGetSearchQuery(baseQuery, *searchParams, true)
|
||||||
|
}
|
||||||
|
filterQuery, fArgs := builder.BuildGetAllQuery(baseQuery, table, filter, pagination, sort)
|
||||||
query := builder.BuildDeletedAtQuery(filterQuery, table)
|
query := builder.BuildDeletedAtQuery(filterQuery, table)
|
||||||
args := append(sArgs, fArgs...)
|
args := append(sArgs, fArgs...)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ func (v Validator) ValidateGetAll(req param.KindBoxGetAllRequest) (map[string]st
|
||||||
const op = "adminkindboxvalidator.ValidateGetAll"
|
const op = "adminkindboxvalidator.ValidateGetAll"
|
||||||
|
|
||||||
validFields := []string{
|
validFields := []string{
|
||||||
"id", "created_at", "kind_box_req_id", "benefactor_id", "kind_box_type", "amount", "serial_number",
|
"id", "created_at", "kind_box_req_id", "benefactor_id", "type", "amount", "serial_number",
|
||||||
"status", "deliver_refer_time_id", "deliver_refer_date", "deliver_address_id", "sender_agent_id",
|
"status", "deliver_refer_time_id", "deliver_refer_date", "deliver_address_id", "sender_agent_id",
|
||||||
"delivered_at", "return_refer_time_id", "return_refer_date",
|
"delivered_at", "return_refer_time_id", "return_refer_date",
|
||||||
"return_address_id", "receiver_agent_id", "returned_at",
|
"return_address_id", "receiver_agent_id", "returned_at",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue