From 55947c56628c2d44fb202d563b34d5ce230ac76c Mon Sep 17 00:00:00 2001 From: Toby Padilla Date: Wed, 26 May 2021 13:23:55 -0500 Subject: [PATCH] Sort stash by CreatedAt desc --- client/client.go | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/client/client.go b/client/client.go index a10e211..d8b16ac 100644 --- a/client/client.go +++ b/client/client.go @@ -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 }