{"action":"opened","number":66,"pull_request":{"url":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/66","id":92429444,"html_url":"https://github.com/elixir-ecto/db_connection/pull/66","diff_url":"https://github.com/elixir-ecto/db_connection/pull/66.diff","patch_url":"https://github.com/elixir-ecto/db_connection/pull/66.patch","issue_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues/66","number":66,"state":"open","locked":false,"title":"Introduce prepare_stream and stream using cursors","user":{"login":"fishcakez","id":2001229,"avatar_url":"https://avatars.githubusercontent.com/u/2001229?v=3","gravatar_id":"","url":"https://api.github.com/users/fishcakez","html_url":"https://github.com/fishcakez","followers_url":"https://api.github.com/users/fishcakez/followers","following_url":"https://api.github.com/users/fishcakez/following{/other_user}","gists_url":"https://api.github.com/users/fishcakez/gists{/gist_id}","starred_url":"https://api.github.com/users/fishcakez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fishcakez/subscriptions","organizations_url":"https://api.github.com/users/fishcakez/orgs","repos_url":"https://api.github.com/users/fishcakez/repos","events_url":"https://api.github.com/users/fishcakez/events{/privacy}","received_events_url":"https://api.github.com/users/fishcakez/received_events","type":"User","site_admin":false},"body":"Adds prepare_stream and stream that stream results using new callbacks\r\nhandle_open/4, handle_fetch/4, handle_close/4.\r\n\r\nThe prepare phase of prepare_stream follows the same rules as\r\nprepare_execute: close query on describe or encode error. Other errors\r\ndo not cause a close.\r\n\r\nFor the cursor `handle_close/4` is not called if `handle_fetch/4`\r\nreturns a :done tuple, it is assumed `handle_fetch/4` did any required\r\ncleanup. Otherwise cursor is closed.\r\n\r\nThe cursor is a constant throughout the stream because it may not be\r\npossible to recover a change in cursor if an error occurs. As a query\r\nshould not be executed in `handle_open/4`, but started in\r\n`handle_fetch/4, cursors may need to be tracked in the callback module.","created_at":"2016-11-04T23:08:07Z","updated_at":"2016-11-04T23:08:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/66/commits","review_comments_url":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/66/comments","review_comment_url":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues/66/comments","statuses_url":"https://api.github.com/repos/elixir-ecto/db_connection/statuses/4bc2916343b9c468b9c3f9793180819ca908e19f","head":{"label":"elixir-ecto:jf-stream","ref":"jf-stream","sha":"4bc2916343b9c468b9c3f9793180819ca908e19f","user":{"login":"elixir-ecto","id":19973437,"avatar_url":"https://avatars.githubusercontent.com/u/19973437?v=3","gravatar_id":"","url":"https://api.github.com/users/elixir-ecto","html_url":"https://github.com/elixir-ecto","followers_url":"https://api.github.com/users/elixir-ecto/followers","following_url":"https://api.github.com/users/elixir-ecto/following{/other_user}","gists_url":"https://api.github.com/users/elixir-ecto/gists{/gist_id}","starred_url":"https://api.github.com/users/elixir-ecto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elixir-ecto/subscriptions","organizations_url":"https://api.github.com/users/elixir-ecto/orgs","repos_url":"https://api.github.com/users/elixir-ecto/repos","events_url":"https://api.github.com/users/elixir-ecto/events{/privacy}","received_events_url":"https://api.github.com/users/elixir-ecto/received_events","type":"Organization","site_admin":false},"repo":{"id":46829184,"name":"db_connection","full_name":"elixir-ecto/db_connection","owner":{"login":"elixir-ecto","id":19973437,"avatar_url":"https://avatars.githubusercontent.com/u/19973437?v=3","gravatar_id":"","url":"https://api.github.com/users/elixir-ecto","html_url":"https://github.com/elixir-ecto","followers_url":"https://api.github.com/users/elixir-ecto/followers","following_url":"https://api.github.com/users/elixir-ecto/following{/other_user}","gists_url":"https://api.github.com/users/elixir-ecto/gists{/gist_id}","starred_url":"https://api.github.com/users/elixir-ecto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elixir-ecto/subscriptions","organizations_url":"https://api.github.com/users/elixir-ecto/orgs","repos_url":"https://api.github.com/users/elixir-ecto/repos","events_url":"https://api.github.com/users/elixir-ecto/events{/privacy}","received_events_url":"https://api.github.com/users/elixir-ecto/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/elixir-ecto/db_connection","description":"Database connection behaviour","fork":false,"url":"https://api.github.com/repos/elixir-ecto/db_connection","forks_url":"https://api.github.com/repos/elixir-ecto/db_connection/forks","keys_url":"https://api.github.com/repos/elixir-ecto/db_connection/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elixir-ecto/db_connection/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elixir-ecto/db_connection/teams","hooks_url":"https://api.github.com/repos/elixir-ecto/db_connection/hooks","issue_events_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues/events{/number}","events_url":"https://api.github.com/repos/elixir-ecto/db_connection/events","assignees_url":"https://api.github.com/repos/elixir-ecto/db_connection/assignees{/user}","branches_url":"https://api.github.com/repos/elixir-ecto/db_connection/branches{/branch}","tags_url":"https://api.github.com/repos/elixir-ecto/db_connection/tags","blobs_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/refs{/sha}","trees_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elixir-ecto/db_connection/statuses/{sha}","languages_url":"https://api.github.com/repos/elixir-ecto/db_connection/languages","stargazers_url":"https://api.github.com/repos/elixir-ecto/db_connection/stargazers","contributors_url":"https://api.github.com/repos/elixir-ecto/db_connection/contributors","subscribers_url":"https://api.github.com/repos/elixir-ecto/db_connection/subscribers","subscription_url":"https://api.github.com/repos/elixir-ecto/db_connection/subscription","commits_url":"https://api.github.com/repos/elixir-ecto/db_connection/commits{/sha}","git_commits_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/commits{/sha}","comments_url":"https://api.github.com/repos/elixir-ecto/db_connection/comments{/number}","issue_comment_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues/comments{/number}","contents_url":"https://api.github.com/repos/elixir-ecto/db_connection/contents/{+path}","compare_url":"https://api.github.com/repos/elixir-ecto/db_connection/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elixir-ecto/db_connection/merges","archive_url":"https://api.github.com/repos/elixir-ecto/db_connection/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elixir-ecto/db_connection/downloads","issues_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues{/number}","pulls_url":"https://api.github.com/repos/elixir-ecto/db_connection/pulls{/number}","milestones_url":"https://api.github.com/repos/elixir-ecto/db_connection/milestones{/number}","notifications_url":"https://api.github.com/repos/elixir-ecto/db_connection/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elixir-ecto/db_connection/labels{/name}","releases_url":"https://api.github.com/repos/elixir-ecto/db_connection/releases{/id}","deployments_url":"https://api.github.com/repos/elixir-ecto/db_connection/deployments","created_at":"2015-11-25T01:17:42Z","updated_at":"2016-11-03T20:36:07Z","pushed_at":"2016-11-04T23:06:15Z","git_url":"git://github.com/elixir-ecto/db_connection.git","ssh_url":"git@github.com:elixir-ecto/db_connection.git","clone_url":"https://github.com/elixir-ecto/db_connection.git","svn_url":"https://github.com/elixir-ecto/db_connection","homepage":"http://hexdocs.pm/db_connection/DBConnection.html","size":366,"stargazers_count":73,"watchers_count":73,"language":"Elixir","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":3,"forks":25,"open_issues":3,"watchers":73,"default_branch":"master"}},"base":{"label":"elixir-ecto:master","ref":"master","sha":"d01fa70bb4ed97b785b0c070b7784a8bf0c76dd3","user":{"login":"elixir-ecto","id":19973437,"avatar_url":"https://avatars.githubusercontent.com/u/19973437?v=3","gravatar_id":"","url":"https://api.github.com/users/elixir-ecto","html_url":"https://github.com/elixir-ecto","followers_url":"https://api.github.com/users/elixir-ecto/followers","following_url":"https://api.github.com/users/elixir-ecto/following{/other_user}","gists_url":"https://api.github.com/users/elixir-ecto/gists{/gist_id}","starred_url":"https://api.github.com/users/elixir-ecto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elixir-ecto/subscriptions","organizations_url":"https://api.github.com/users/elixir-ecto/orgs","repos_url":"https://api.github.com/users/elixir-ecto/repos","events_url":"https://api.github.com/users/elixir-ecto/events{/privacy}","received_events_url":"https://api.github.com/users/elixir-ecto/received_events","type":"Organization","site_admin":false},"repo":{"id":46829184,"name":"db_connection","full_name":"elixir-ecto/db_connection","owner":{"login":"elixir-ecto","id":19973437,"avatar_url":"https://avatars.githubusercontent.com/u/19973437?v=3","gravatar_id":"","url":"https://api.github.com/users/elixir-ecto","html_url":"https://github.com/elixir-ecto","followers_url":"https://api.github.com/users/elixir-ecto/followers","following_url":"https://api.github.com/users/elixir-ecto/following{/other_user}","gists_url":"https://api.github.com/users/elixir-ecto/gists{/gist_id}","starred_url":"https://api.github.com/users/elixir-ecto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elixir-ecto/subscriptions","organizations_url":"https://api.github.com/users/elixir-ecto/orgs","repos_url":"https://api.github.com/users/elixir-ecto/repos","events_url":"https://api.github.com/users/elixir-ecto/events{/privacy}","received_events_url":"https://api.github.com/users/elixir-ecto/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/elixir-ecto/db_connection","description":"Database connection behaviour","fork":false,"url":"https://api.github.com/repos/elixir-ecto/db_connection","forks_url":"https://api.github.com/repos/elixir-ecto/db_connection/forks","keys_url":"https://api.github.com/repos/elixir-ecto/db_connection/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elixir-ecto/db_connection/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elixir-ecto/db_connection/teams","hooks_url":"https://api.github.com/repos/elixir-ecto/db_connection/hooks","issue_events_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues/events{/number}","events_url":"https://api.github.com/repos/elixir-ecto/db_connection/events","assignees_url":"https://api.github.com/repos/elixir-ecto/db_connection/assignees{/user}","branches_url":"https://api.github.com/repos/elixir-ecto/db_connection/branches{/branch}","tags_url":"https://api.github.com/repos/elixir-ecto/db_connection/tags","blobs_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/refs{/sha}","trees_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elixir-ecto/db_connection/statuses/{sha}","languages_url":"https://api.github.com/repos/elixir-ecto/db_connection/languages","stargazers_url":"https://api.github.com/repos/elixir-ecto/db_connection/stargazers","contributors_url":"https://api.github.com/repos/elixir-ecto/db_connection/contributors","subscribers_url":"https://api.github.com/repos/elixir-ecto/db_connection/subscribers","subscription_url":"https://api.github.com/repos/elixir-ecto/db_connection/subscription","commits_url":"https://api.github.com/repos/elixir-ecto/db_connection/commits{/sha}","git_commits_url":"https://api.github.com/repos/elixir-ecto/db_connection/git/commits{/sha}","comments_url":"https://api.github.com/repos/elixir-ecto/db_connection/comments{/number}","issue_comment_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues/comments{/number}","contents_url":"https://api.github.com/repos/elixir-ecto/db_connection/contents/{+path}","compare_url":"https://api.github.com/repos/elixir-ecto/db_connection/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elixir-ecto/db_connection/merges","archive_url":"https://api.github.com/repos/elixir-ecto/db_connection/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elixir-ecto/db_connection/downloads","issues_url":"https://api.github.com/repos/elixir-ecto/db_connection/issues{/number}","pulls_url":"https://api.github.com/repos/elixir-ecto/db_connection/pulls{/number}","milestones_url":"https://api.github.com/repos/elixir-ecto/db_connection/milestones{/number}","notifications_url":"https://api.github.com/repos/elixir-ecto/db_connection/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elixir-ecto/db_connection/labels{/name}","releases_url":"https://api.github.com/repos/elixir-ecto/db_connection/releases{/id}","deployments_url":"https://api.github.com/repos/elixir-ecto/db_connection/deployments","created_at":"2015-11-25T01:17:42Z","updated_at":"2016-11-03T20:36:07Z","pushed_at":"2016-11-04T23:06:15Z","git_url":"git://github.com/elixir-ecto/db_connection.git","ssh_url":"git@github.com:elixir-ecto/db_connection.git","clone_url":"https://github.com/elixir-ecto/db_connection.git","svn_url":"https://github.com/elixir-ecto/db_connection","homepage":"http://hexdocs.pm/db_connection/DBConnection.html","size":366,"stargazers_count":73,"watchers_count":73,"language":"Elixir","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":3,"forks":25,"open_issues":3,"watchers":73,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/66"},"html":{"href":"https://github.com/elixir-ecto/db_connection/pull/66"},"issue":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/issues/66"},"comments":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/issues/66/comments"},"review_comments":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/66/comments"},"review_comment":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/pulls/66/commits"},"statuses":{"href":"https://api.github.com/repos/elixir-ecto/db_connection/statuses/4bc2916343b9c468b9c3f9793180819ca908e19f"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":1592,"deletions":10,"changed_files":6}}
{"actor":{"display_login":"fishcakez"}}