{"action":"created","issue":{"url":"https://api.github.com/repos/fluffle/sp0rkle/issues/62","repository_url":"https://api.github.com/repos/fluffle/sp0rkle","labels_url":"https://api.github.com/repos/fluffle/sp0rkle/issues/62/labels{/name}","comments_url":"https://api.github.com/repos/fluffle/sp0rkle/issues/62/comments","events_url":"https://api.github.com/repos/fluffle/sp0rkle/issues/62/events","html_url":"https://github.com/fluffle/sp0rkle/pull/62","id":135560833,"number":62,"title":"Initial BoltDB support for #48.","user":{"login":"fluffle","id":169107,"avatar_url":"https://avatars.githubusercontent.com/u/169107?v=3","gravatar_id":"","url":"https://api.github.com/users/fluffle","html_url":"https://github.com/fluffle","followers_url":"https://api.github.com/users/fluffle/followers","following_url":"https://api.github.com/users/fluffle/following{/other_user}","gists_url":"https://api.github.com/users/fluffle/gists{/gist_id}","starred_url":"https://api.github.com/users/fluffle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fluffle/subscriptions","organizations_url":"https://api.github.com/users/fluffle/orgs","repos_url":"https://api.github.com/users/fluffle/repos","events_url":"https://api.github.com/users/fluffle/events{/privacy}","received_events_url":"https://api.github.com/users/fluffle/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2016-02-22T22:10:17Z","updated_at":"2016-03-06T14:20:59Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/fluffle/sp0rkle/pulls/62","html_url":"https://github.com/fluffle/sp0rkle/pull/62","diff_url":"https://github.com/fluffle/sp0rkle/pull/62.diff","patch_url":"https://github.com/fluffle/sp0rkle/pull/62.patch"},"body":"# Initial BoltDB support for #48.\r\n- Introduces a set of interfaces for DB access: `Database`, `Collection` and `Key`.\r\n- Provides MongoDB and BoltDB implementations for `Database` and `Collection`.\r\n- Only enough done to allow migration of config collection.\r\n- Starts mapping MongoDB data model into BoltDB:\r\n  - MongoDB \"Collection\" == BoltDB \"Bucket\".\r\n  - `Key` is represented by an ordered list of string key:value tuples.\r\n    - MongoDB reads/writes turn these into `bson.M{key: value, ...}` for Find/Upsert.\r\n    - BoltDB reads/writes turn these into `[]byte{key + \"\\x1f\" + value}` nested bucket keys for Get/Put.\r\n- Migration triggered manually via notice, logs any diffs as errors.\r\n- Stolen patience diff algorithm from Bram Cohen \\o/\r\n\r\n<!-- Reviewable:start -->\r\n[<img src=\"https://reviewable.io/review_button.svg\" height=\"40\" alt=\"Review on Reviewable\"/>](https://reviewable.io/reviews/fluffle/sp0rkle/62)\r\n<!-- Reviewable:end -->\r\n"},"comment":{"url":"https://api.github.com/repos/fluffle/sp0rkle/issues/comments/192895545","html_url":"https://github.com/fluffle/sp0rkle/pull/62#issuecomment-192895545","issue_url":"https://api.github.com/repos/fluffle/sp0rkle/issues/62","id":192895545,"user":{"login":"bob-smith","id":940557,"avatar_url":"https://avatars.githubusercontent.com/u/940557?v=3","gravatar_id":"","url":"https://api.github.com/users/bob-smith","html_url":"https://github.com/bob-smith","followers_url":"https://api.github.com/users/bob-smith/followers","following_url":"https://api.github.com/users/bob-smith/following{/other_user}","gists_url":"https://api.github.com/users/bob-smith/gists{/gist_id}","starred_url":"https://api.github.com/users/bob-smith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bob-smith/subscriptions","organizations_url":"https://api.github.com/users/bob-smith/orgs","repos_url":"https://api.github.com/users/bob-smith/repos","events_url":"https://api.github.com/users/bob-smith/events{/privacy}","received_events_url":"https://api.github.com/users/bob-smith/received_events","type":"User","site_admin":false},"created_at":"2016-03-06T14:20:59Z","updated_at":"2016-03-06T14:20:59Z","body":"\n\n\n\nReviewed 13 of 24 files at r1, 1 of 4 files at r3, 8 of 9 files at r5, 3 of 3 files at r6.\nReview status: all files reviewed at latest revision, 2 unresolved discussions.\n\n---\n\n\n\n*Comments from the [review on Reviewable.io](https://reviewable.io:443/reviews/fluffle/sp0rkle/62)*\n<!-- Sent from Reviewable.io -->\n"}}