Skip to content

Commit

Permalink
fix(bunpaginate): time columns
Browse files Browse the repository at this point in the history
  • Loading branch information
gfyrag committed Sep 23, 2024
1 parent d7dde6d commit 32ec92a
Showing 1 changed file with 25 additions and 7 deletions.
32 changes: 25 additions & 7 deletions bun/bunpaginate/pagination_column.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,22 +114,40 @@ func findPaginationFieldPath(v any, paginationColumn string) []reflect.StructFie
field := typeOfT.Field(i)
switch field.Type.Kind() {
case reflect.Struct:
fields := findPaginationFieldPath(reflect.New(field.Type).Elem().Interface(), paginationColumn)
if len(fields) > 0 {
return fields
if field.Type.AssignableTo(reflect.TypeOf(time.Time{})) ||
field.Type.AssignableTo(reflect.TypeOf(&time.Time{})) ||
field.Type.AssignableTo(reflect.TypeOf(libtime.Time{})) ||
field.Type.AssignableTo(reflect.TypeOf(&libtime.Time{})) {

if fields := checkTag(field, paginationColumn); len(fields) > 0 {
return fields
}
} else {
fields := findPaginationFieldPath(reflect.New(field.Type).Elem().Interface(), paginationColumn)
if len(fields) > 0 {
return fields
}
}
default:
tag := field.Tag.Get("bun")
column := strings.Split(tag, ",")[0]
if column == paginationColumn {
return []reflect.StructField{field}
if fields := checkTag(field, paginationColumn); len(fields) > 0 {
return fields
}
}
}

return nil
}

func checkTag(field reflect.StructField, paginationColumn string) []reflect.StructField {
tag := field.Tag.Get("bun")
column := strings.Split(tag, ",")[0]
if column == paginationColumn {
return []reflect.StructField{field}
}

return nil
}

func findPaginationField(v any, fields ...reflect.StructField) *big.Int {
vOf := reflect.ValueOf(v)
field := vOf.FieldByName(fields[0].Name)
Expand Down

0 comments on commit 32ec92a

Please sign in to comment.