diff options
author | Steve Manuel <nilslice@gmail.com> | 2016-10-18 13:18:55 -0700 |
---|---|---|
committer | Steve Manuel <nilslice@gmail.com> | 2016-10-18 13:18:55 -0700 |
commit | 3b8689047ea6c38d1033b391f1598d40b1341103 (patch) | |
tree | d094a9b9a235498641613d0d8f6e43d9f26375d1 | |
parent | 68c4324fc16dae18f4f599515283a566b541ef41 (diff) |
updating sort logic on Less and storing sorted values in _sorted bucket
-rw-r--r-- | system/db/content.go | 52 |
1 files changed, 40 insertions, 12 deletions
diff --git a/system/db/content.go b/system/db/content.go index 99d662b..524097a 100644 --- a/system/db/content.go +++ b/system/db/content.go @@ -225,22 +225,50 @@ func SortContent(namespace string) { posts = append(posts, post.(editor.Sortable)) } - fmt.Println("-------------------------UN-SORTED------------------------") - - for i := range posts { - fmt.Printf("%v\n", posts[i]) - } - fmt.Println("------------------------NOW SORTED------------------------") - // sort posts sort.Sort(posts) - for i := range posts { - fmt.Printf("%v\n", posts[i]) - } + // store in <namespace>_sorted bucket, first delete existing + err := store.Update(func(tx *bolt.Tx) error { + err := tx.DeleteBucket([]byte(namespace + "_sorted")) + if err != nil { + return err + } + + b, err := tx.CreateBucket([]byte(namespace + "_sorted")) + if err != nil { + err := tx.Rollback() + if err != nil { + return err + } - // one by one, encode to json and store as - // store in <namespace>__sorted bucket, first delete existing + return err + } + + // encode to json and store as post.ID:post + for _, post := range posts { + j, err := json.Marshal(post) + if err != nil { + return err + } + + cid := fmt.Sprintf("%d", post.ContentID()) + err = b.Put([]byte(cid), j) + if err != nil { + err := tx.Rollback() + if err != nil { + return err + } + + return err + } + } + + return nil + }) + if err != nil { + log.Println("Error while updating db with sorted", namespace) + } } |