summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Manuel <nilslice@gmail.com>2016-10-18 13:18:55 -0700
committerSteve Manuel <nilslice@gmail.com>2016-10-18 13:18:55 -0700
commit3b8689047ea6c38d1033b391f1598d40b1341103 (patch)
treed094a9b9a235498641613d0d8f6e43d9f26375d1
parent68c4324fc16dae18f4f599515283a566b541ef41 (diff)
updating sort logic on Less and storing sorted values in _sorted bucket
-rw-r--r--system/db/content.go52
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)
+ }
}