aboutsummaryrefslogtreecommitdiffstats
path: root/graphql2/resolvers/pagers_template.go
diff options
context:
space:
mode:
Diffstat (limited to 'graphql2/resolvers/pagers_template.go')
-rw-r--r--graphql2/resolvers/pagers_template.go224
1 files changed, 0 insertions, 224 deletions
diff --git a/graphql2/resolvers/pagers_template.go b/graphql2/resolvers/pagers_template.go
deleted file mode 100644
index 0ca7de75..00000000
--- a/graphql2/resolvers/pagers_template.go
+++ /dev/null
@@ -1,224 +0,0 @@
-package resolvers
-
-import (
- "fmt"
- "github.com/cheekybits/genny/generic"
-)
-
-type NodeType generic.Type
-type EdgeType generic.Type
-
-type NodeTypeEdger func(value NodeType, offset int) Edge
-
-func NodeTypePaginate(source []NodeType, edger NodeTypeEdger, input ConnectionInput) ([]EdgeType, PageInfo, error) {
- var result []EdgeType
- var pageInfo PageInfo
-
- offset := 0
-
- if input.After != nil {
- for i, value := range source {
- edge := edger(value, i)
- if edge.GetCursor() == *input.After {
- // remove all previous element including the "after" one
- source = source[i+1:]
- offset = i + 1
- break
- }
- }
- }
-
- if input.Before != nil {
- for i, value := range source {
- edge := edger(value, i+offset)
-
- if edge.GetCursor() == *input.Before {
- // remove all after element including the "before" one
- break
- }
-
- result = append(result, edge.(EdgeType))
- }
- } else {
- result = make([]EdgeType, len(source))
-
- for i, value := range source {
- result[i] = edger(value, i+offset).(EdgeType)
- }
- }
-
- if input.First != nil {
- if *input.First < 0 {
- return nil, PageInfo{}, fmt.Errorf("first less than zero")
- }
-
- if len(result) > *input.First {
- // Slice result to be of length first by removing edges from the end
- result = result[:*input.First]
- pageInfo.HasNextPage = true
- }
- }
-
- if input.Last != nil {
- if *input.Last < 0 {
- return nil, PageInfo{}, fmt.Errorf("last less than zero")
- }
-
- if len(result) > *input.Last {
- // Slice result to be of length last by removing edges from the start
- result = result[len(result)-*input.Last:]
- pageInfo.HasPreviousPage = true
- }
- }
-
- return result, pageInfo, nil
-}
-
-// Apply the before/after cursor params to the source and return an array of edges
-//func ApplyCursorToEdges(source []interface{}, edger Edger, input ConnectionInput) []Edge {
-// var result []Edge
-//
-// if input.After != nil {
-// for i, value := range source {
-// edge := edger(value)
-// if edge.Cursor() == *input.After {
-// // remove all previous element including the "after" one
-// source = source[i+1:]
-// break
-// }
-// }
-// }
-//
-// if input.Before != nil {
-// for _, value := range source {
-// edge := edger(value)
-//
-// if edge.Cursor() == *input.Before {
-// // remove all after element including the "before" one
-// break
-// }
-//
-// result = append(result, edge)
-// }
-// } else {
-// result = make([]Edge, len(source))
-//
-// for i, value := range source {
-// result[i] = edger(value)
-// }
-// }
-//
-// return result
-//}
-
-// Apply the first/last cursor params to the edges
-//func EdgesToReturn(edges []Edge, input ConnectionInput) ([]Edge, PageInfo, error) {
-// hasPreviousPage := false
-// hasNextPage := false
-//
-// if input.First != nil {
-// if *input.First < 0 {
-// return nil, nil, fmt.Errorf("first less than zero")
-// }
-//
-// if len(edges) > *input.First {
-// // Slice result to be of length first by removing edges from the end
-// edges = edges[:*input.First]
-// hasNextPage = true
-// }
-// }
-//
-// if input.Last != nil {
-// if *input.Last < 0 {
-// return nil, nil, fmt.Errorf("last less than zero")
-// }
-//
-// if len(edges) > *input.Last {
-// // Slice result to be of length last by removing edges from the start
-// edges = edges[len(edges)-*input.Last:]
-// hasPreviousPage = true
-// }
-// }
-//
-// pageInfo := PageInfo{
-// HasNextPage: hasNextPage,
-// HasPreviousPage: hasPreviousPage,
-// }
-//
-// return edges, pageInfo, nil
-//}
-
-//func EdgesToReturn(allEdges []Edge, before *cursor, after *cursor, first *int, last *int) ([]Edge, error) {
-// result := ApplyCursorToEdges(allEdges, before, after)
-//
-// if first != nil {
-// if *first < 0 {
-// return nil, fmt.Errorf("first less than zero")
-// }
-//
-// if len(result) > *first {
-// // Slice result to be of length first by removing edges from the end
-// result = result[:*first]
-// }
-// }
-//
-// if last != nil {
-// if *last < 0 {
-// return nil, fmt.Errorf("last less than zero")
-// }
-//
-// if len(result) > *last {
-// // Slice result to be of length last by removing edges from the start
-// result = result[len(result)-*last:]
-// }
-// }
-//
-// return result, nil
-//}
-
-//func ApplyCursorToEdges(allEdges []Edge, before *cursor, after *cursor) []Edge {
-// result := allEdges
-//
-// if after != nil {
-// for i, edge := range result {
-// if edge.Cursor() == *after {
-// // remove all previous element including the "after" one
-// result = result[i+1:]
-// break
-// }
-// }
-// }
-//
-// if before != nil {
-// for i, edge := range result {
-// if edge.Cursor() == *before {
-// // remove all after element including the "before" one
-// result = result[:i]
-// }
-// }
-// }
-//
-// return result
-//}
-
-//func HasPreviousPage(allEdges []Edge, before *cursor, after *cursor, last *int) bool {
-// if last != nil {
-// edges := ApplyCursorToEdges(allEdges, before, after)
-// return len(edges) > *last
-// }
-//
-// // TODO: handle "after", but according to the spec it's ok to return false
-//
-// return false
-//}
-//
-//func HasNextPage(allEdges []Edge, before *cursor, after *cursor, first *int) bool {
-// if first != nil {
-// edges := ApplyCursorToEdges(allEdges, before, after)
-// return len(edges) > *first
-// }
-//
-// // TODO: handle "before", but according to the spec it's ok to return false
-//
-// return false
-//}