本文整理汇总了Golang中github.com/rs/rest-layer/resource.Lookup.Sort方法的典型用法代码示例。如果您正苦于以下问题:Golang Lookup.Sort方法的具体用法?Golang Lookup.Sort怎么用?Golang Lookup.Sort使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/rs/rest-layer/resource.Lookup
的用法示例。
在下文中一共展示了Lookup.Sort方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getSort
// getSort transform a resource.Lookup into a Mongo sort list.
// If the sort list is empty, fallback to _id.
func getSort(l *resource.Lookup) []string {
ln := len(l.Sort())
if ln == 0 {
return []string{"_id"}
}
s := make([]string, ln)
for i, sort := range l.Sort() {
if len(sort) > 0 && sort[0] == '-' {
s[i] = "-" + getField(sort[1:])
} else {
s[i] = getField(sort)
}
}
return s
}
示例2: Find
// Find items from memory matching the provided lookup
func (m *MemoryHandler) Find(ctx context.Context, lookup *resource.Lookup, page, perPage int) (list *resource.ItemList, err error) {
m.RLock()
defer m.RUnlock()
err = handleWithLatency(m.Latency, ctx, func() error {
items := []*resource.Item{}
// Apply filter
for _, id := range m.ids {
item, _, err := m.fetch(id)
if err != nil {
return err
}
if !lookup.Filter().Match(item.Payload) {
continue
}
items = append(items, item)
}
// Apply sort
if len(lookup.Sort()) > 0 {
s := sortableItems{lookup.Sort(), items}
sort.Sort(s)
}
// Apply pagination
total := len(items)
start := (page - 1) * perPage
end := total
if perPage > 0 {
end = start + perPage
if start > total-1 {
start = 0
end = 0
} else if end > total-1 {
end = total
}
}
list = &resource.ItemList{total, page, items[start:end]}
return nil
})
return list, err
}