Sort stash by CreatedAt desc

This commit is contained in:
Toby Padilla 2021-05-26 13:23:55 -05:00 committed by Christian Rocha
commit 55947c5662
No known key found for this signature in database
GPG key ID: D6CC7A16E5878018

View file

@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"log"
"sort"
"time"
"github.com/charmbracelet/charm/kv"
@ -18,19 +19,6 @@ type Client struct {
kv *kv.KV
}
// NewClient creates a new Client with the default settings
func NewClient() (*Client, error) {
kv, err := kv.OpenWithDefaults("charm.sh.glow", "./data")
if err != nil {
return nil, err
}
err = kv.Sync()
if err != nil {
return nil, err
}
return &Client{kv: kv}, nil
}
var stashPrefix = []byte("stash_")
// ErrorPageOutOfBounds is an error for an invalid page number.
@ -56,6 +44,19 @@ type Markdown struct {
CreatedAt time.Time `json:"created_at"`
}
// NewClient creates a new Client with the default settings
func NewClient() (*Client, error) {
kv, err := kv.OpenWithDefaults("charm.sh.glow", "./data")
if err != nil {
return nil, err
}
err = kv.Sync()
if err != nil {
return nil, err
}
return &Client{kv: kv}, nil
}
// GetNews returns the Glow paginated news results.
func (cc *Client) GetNews(page int) ([]*Markdown, error) {
if page < 1 {
@ -87,7 +88,7 @@ func (cc *Client) GetStash(page int) ([]*Markdown, error) {
limit := 50
startOffset := (page * limit) - limit
endOffset := page * limit
var stash []*Markdown
var stash MarkdownsByCreatedAtDesc
err := cc.kv.View(func(txn *badger.Txn) error {
opt := badger.DefaultIteratorOptions
opt.Prefix = stashPrefix
@ -116,6 +117,7 @@ func (cc *Client) GetStash(page int) ([]*Markdown, error) {
if err != nil {
return nil, err
}
sort.Sort(stash)
if startOffset >= len(stash) {
return []*Markdown{}, nil
}