{"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/46#issuecomment-735482187", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/46", "id": 735482187, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTQ4MjE4Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T00:20:11Z", "updated_at": "2020-11-30T00:20:11Z", "author_association": "MEMBER", "body": "Pull request are now added, thanks to @adamjonas.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 664485022, "label": "Feature: pull request reviews and comments"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/46#issuecomment-735482546", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/46", "id": 735482546, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTQ4MjU0Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T00:22:02Z", "updated_at": "2020-11-30T00:22:02Z", "author_association": "MEMBER", "body": "As for reviews... here's the output of `github-to-sqlite get https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48/reviews --accept 'application/vnd.github.v3+json'`\r\n\r\n```json\r\n[\r\n {\r\n \"id\": 503368921,\r\n \"node_id\": \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3NTAzMzY4OTIx\",\r\n \"user\": {\r\n \"login\": \"simonw\",\r\n \"id\": 9599,\r\n \"node_id\": \"MDQ6VXNlcjk1OTk=\",\r\n \"avatar_url\": \"https://avatars0.githubusercontent.com/u/9599?u=5968723deb1a55b82620e106f5ca58e9b11a0942&v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/simonw\",\r\n \"html_url\": \"https://github.com/simonw\",\r\n \"followers_url\": \"https://api.github.com/users/simonw/followers\",\r\n \"following_url\": \"https://api.github.com/users/simonw/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/simonw/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/simonw/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/simonw/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/simonw/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/simonw/repos\",\r\n \"events_url\": \"https://api.github.com/users/simonw/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/simonw/received_events\",\r\n \"type\": \"User\",\r\n \"site_admin\": false\r\n },\r\n \"body\": \"\",\r\n \"state\": \"CHANGES_REQUESTED\",\r\n \"html_url\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#pullrequestreview-503368921\",\r\n \"pull_request_url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\",\r\n \"author_association\": \"MEMBER\",\r\n \"_links\": {\r\n \"html\": {\r\n \"href\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#pullrequestreview-503368921\"\r\n },\r\n \"pull_request\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\"\r\n }\r\n },\r\n \"submitted_at\": \"2020-10-06T21:28:40Z\",\r\n \"commit_id\": \"4f33b850bd37829262dd29e1c520afffebedc19c\"\r\n },\r\n {\r\n \"id\": 513118561,\r\n \"node_id\": \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3NTEzMTE4NTYx\",\r\n \"user\": {\r\n \"login\": \"adamjonas\",\r\n \"id\": 755825,\r\n \"node_id\": \"MDQ6VXNlcjc1NTgyNQ==\",\r\n \"avatar_url\": \"https://avatars1.githubusercontent.com/u/755825?v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/adamjonas\",\r\n \"html_url\": \"https://github.com/adamjonas\",\r\n \"followers_url\": \"https://api.github.com/users/adamjonas/followers\",\r\n \"following_url\": \"https://api.github.com/users/adamjonas/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/adamjonas/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/adamjonas/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/adamjonas/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/adamjonas/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/adamjonas/repos\",\r\n \"events_url\": \"https://api.github.com/users/adamjonas/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/adamjonas/received_events\",\r\n \"type\": \"User\",\r\n \"site_admin\": false\r\n },\r\n \"body\": \"\",\r\n \"state\": \"COMMENTED\",\r\n \"html_url\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#pullrequestreview-513118561\",\r\n \"pull_request_url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\",\r\n \"author_association\": \"CONTRIBUTOR\",\r\n \"_links\": {\r\n \"html\": {\r\n \"href\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#pullrequestreview-513118561\"\r\n },\r\n \"pull_request\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\"\r\n }\r\n },\r\n \"submitted_at\": \"2020-10-20T20:45:05Z\",\r\n \"commit_id\": \"4f33b850bd37829262dd29e1c520afffebedc19c\"\r\n },\r\n {\r\n \"id\": 513127529,\r\n \"node_id\": \"MDE3OlB1bGxSZXF1ZXN0UmV2aWV3NTEzMTI3NTI5\",\r\n \"user\": {\r\n \"login\": \"adamjonas\",\r\n \"id\": 755825,\r\n \"node_id\": \"MDQ6VXNlcjc1NTgyNQ==\",\r\n \"avatar_url\": \"https://avatars1.githubusercontent.com/u/755825?v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/adamjonas\",\r\n \"html_url\": \"https://github.com/adamjonas\",\r\n \"followers_url\": \"https://api.github.com/users/adamjonas/followers\",\r\n \"following_url\": \"https://api.github.com/users/adamjonas/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/adamjonas/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/adamjonas/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/adamjonas/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/adamjonas/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/adamjonas/repos\",\r\n \"events_url\": \"https://api.github.com/users/adamjonas/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/adamjonas/received_events\",\r\n \"type\": \"User\",\r\n \"site_admin\": false\r\n },\r\n \"body\": \"\",\r\n \"state\": \"COMMENTED\",\r\n \"html_url\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#pullrequestreview-513127529\",\r\n \"pull_request_url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\",\r\n \"author_association\": \"CONTRIBUTOR\",\r\n \"_links\": {\r\n \"html\": {\r\n \"href\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#pullrequestreview-513127529\"\r\n },\r\n \"pull_request\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\"\r\n }\r\n },\r\n \"submitted_at\": \"2020-10-20T20:57:33Z\",\r\n \"commit_id\": \"3a0d5c498f9faae4e40aab204cd01b965a4f61f3\"\r\n }\r\n]\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 664485022, "label": "Feature: pull request reviews and comments"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/46#issuecomment-735483604", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/46", "id": 735483604, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTQ4MzYwNA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T00:26:50Z", "updated_at": "2020-11-30T00:26:50Z", "author_association": "MEMBER", "body": "It seems like there's a lot missing from that - those aren't particularly interesting given the data that is returned.\r\n\r\nFrom the docs at https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls#reviews it looks like each review consists of multiple comments, and the comments are where the useful material is - https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls#list-comments-for-a-pull-request-review\r\n\r\n`github-to-sqlite get https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48/reviews/503368921/comments --accept 'application/vnd.github.v3+json'`\r\n\r\n```json\r\n[\r\n {\r\n \"id\": 500603838,\r\n \"node_id\": \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDUwMDYwMzgzOA==\",\r\n \"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/comments/500603838\",\r\n \"pull_request_review_id\": 503368921,\r\n \"diff_hunk\": \"@@ -0,0 +1,370 @@\\n+[\\n+ {\\n+ \\\"url\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/571\\\",\\n+ \\\"id\\\": 313384926,\\n+ \\\"node_id\\\": \\\"MDExOlB1bGxSZXF1ZXN0MzEzMzg0OTI2\\\",\\n+ \\\"html_url\\\": \\\"https://github.com/simonw/datasette/pull/571\\\",\\n+ \\\"diff_url\\\": \\\"https://github.com/simonw/datasette/pull/571.diff\\\",\\n+ \\\"patch_url\\\": \\\"https://github.com/simonw/datasette/pull/571.patch\\\",\\n+ \\\"issue_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/571\\\",\\n+ \\\"number\\\": 571,\\n+ \\\"state\\\": \\\"closed\\\",\\n+ \\\"locked\\\": false,\\n+ \\\"title\\\": \\\"detect_fts now works with alternative table escaping\\\",\\n+ \\\"user\\\": {\\n+ \\\"login\\\": \\\"simonw\\\",\\n+ \\\"id\\\": 9599,\\n+ \\\"node_id\\\": \\\"MDQ6VXNlcjk1OTk=\\\",\\n+ \\\"avatar_url\\\": \\\"https://avatars0.githubusercontent.com/u/9599?v=4\\\",\\n+ \\\"gravatar_id\\\": \\\"\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/users/simonw\\\",\\n+ \\\"html_url\\\": \\\"https://github.com/simonw\\\",\\n+ \\\"followers_url\\\": \\\"https://api.github.com/users/simonw/followers\\\",\\n+ \\\"following_url\\\": \\\"https://api.github.com/users/simonw/following{/other_user}\\\",\\n+ \\\"gists_url\\\": \\\"https://api.github.com/users/simonw/gists{/gist_id}\\\",\\n+ \\\"starred_url\\\": \\\"https://api.github.com/users/simonw/starred{/owner}{/repo}\\\",\\n+ \\\"subscriptions_url\\\": \\\"https://api.github.com/users/simonw/subscriptions\\\",\\n+ \\\"organizations_url\\\": \\\"https://api.github.com/users/simonw/orgs\\\",\\n+ \\\"repos_url\\\": \\\"https://api.github.com/users/simonw/repos\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/users/simonw/events{/privacy}\\\",\\n+ \\\"received_events_url\\\": \\\"https://api.github.com/users/simonw/received_events\\\",\\n+ \\\"type\\\": \\\"User\\\",\\n+ \\\"site_admin\\\": false\\n+ },\\n+ \\\"body\\\": \\\"Fixes #570\\\",\\n+ \\\"created_at\\\": \\\"2019-09-03T00:23:39Z\\\",\\n+ \\\"updated_at\\\": \\\"2019-09-03T00:32:28Z\\\",\\n+ \\\"closed_at\\\": \\\"2019-09-03T00:32:28Z\\\",\\n+ \\\"merged_at\\\": \\\"2019-09-03T00:32:28Z\\\",\\n+ \\\"merge_commit_sha\\\": \\\"2dc5c8dc259a0606162673d394ba8cc1c6f54428\\\",\\n+ \\\"assignee\\\": null,\\n+ \\\"assignees\\\": [\\n+\\n+ ],\\n+ \\\"requested_reviewers\\\": [\\n+\\n+ ],\\n+ \\\"requested_teams\\\": [\\n+\\n+ ],\\n+ \\\"labels\\\": [\\n+\\n+ ],\\n+ \\\"milestone\\\": null,\\n+ \\\"draft\\\": false,\\n+ \\\"commits_url\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/571/commits\\\",\\n+ \\\"review_comments_url\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/571/comments\\\",\\n+ \\\"review_comment_url\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/comments{/number}\\\",\\n+ \\\"comments_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/571/comments\\\",\\n+ \\\"statuses_url\\\": \\\"https://api.github.com/repos/simonw/datasette/statuses/a85239f69261c10f1a9f90514c8b5d113cb94585\\\",\\n+ \\\"head\\\": {\\n+ \\\"label\\\": \\\"simonw:detect-fts\\\",\\n+ \\\"ref\\\": \\\"detect-fts\\\",\\n+ \\\"sha\\\": \\\"a85239f69261c10f1a9f90514c8b5d113cb94585\\\",\\n+ \\\"user\\\": {\\n+ \\\"login\\\": \\\"simonw\\\",\\n+ \\\"id\\\": 9599,\\n+ \\\"node_id\\\": \\\"MDQ6VXNlcjk1OTk=\\\",\\n+ \\\"avatar_url\\\": \\\"https://avatars0.githubusercontent.com/u/9599?v=4\\\",\\n+ \\\"gravatar_id\\\": \\\"\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/users/simonw\\\",\\n+ \\\"html_url\\\": \\\"https://github.com/simonw\\\",\\n+ \\\"followers_url\\\": \\\"https://api.github.com/users/simonw/followers\\\",\\n+ \\\"following_url\\\": \\\"https://api.github.com/users/simonw/following{/other_user}\\\",\\n+ \\\"gists_url\\\": \\\"https://api.github.com/users/simonw/gists{/gist_id}\\\",\\n+ \\\"starred_url\\\": \\\"https://api.github.com/users/simonw/starred{/owner}{/repo}\\\",\\n+ \\\"subscriptions_url\\\": \\\"https://api.github.com/users/simonw/subscriptions\\\",\\n+ \\\"organizations_url\\\": \\\"https://api.github.com/users/simonw/orgs\\\",\\n+ \\\"repos_url\\\": \\\"https://api.github.com/users/simonw/repos\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/users/simonw/events{/privacy}\\\",\\n+ \\\"received_events_url\\\": \\\"https://api.github.com/users/simonw/received_events\\\",\\n+ \\\"type\\\": \\\"User\\\",\\n+ \\\"site_admin\\\": false\\n+ },\\n+ \\\"repo\\\": {\\n+ \\\"id\\\": 107914493,\\n+ \\\"node_id\\\": \\\"MDEwOlJlcG9zaXRvcnkxMDc5MTQ0OTM=\\\",\\n+ \\\"name\\\": \\\"datasette\\\",\\n+ \\\"full_name\\\": \\\"simonw/datasette\\\",\\n+ \\\"private\\\": false,\\n+ \\\"owner\\\": {\\n+ \\\"login\\\": \\\"simonw\\\",\\n+ \\\"id\\\": 9599,\\n+ \\\"node_id\\\": \\\"MDQ6VXNlcjk1OTk=\\\",\\n+ \\\"avatar_url\\\": \\\"https://avatars0.githubusercontent.com/u/9599?v=4\\\",\\n+ \\\"gravatar_id\\\": \\\"\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/users/simonw\\\",\\n+ \\\"html_url\\\": \\\"https://github.com/simonw\\\",\\n+ \\\"followers_url\\\": \\\"https://api.github.com/users/simonw/followers\\\",\\n+ \\\"following_url\\\": \\\"https://api.github.com/users/simonw/following{/other_user}\\\",\\n+ \\\"gists_url\\\": \\\"https://api.github.com/users/simonw/gists{/gist_id}\\\",\\n+ \\\"starred_url\\\": \\\"https://api.github.com/users/simonw/starred{/owner}{/repo}\\\",\\n+ \\\"subscriptions_url\\\": \\\"https://api.github.com/users/simonw/subscriptions\\\",\\n+ \\\"organizations_url\\\": \\\"https://api.github.com/users/simonw/orgs\\\",\\n+ \\\"repos_url\\\": \\\"https://api.github.com/users/simonw/repos\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/users/simonw/events{/privacy}\\\",\\n+ \\\"received_events_url\\\": \\\"https://api.github.com/users/simonw/received_events\\\",\\n+ \\\"type\\\": \\\"User\\\",\\n+ \\\"site_admin\\\": false\\n+ },\\n+ \\\"html_url\\\": \\\"https://github.com/simonw/datasette\\\",\\n+ \\\"description\\\": \\\"An open source multi-tool for exploring and publishing data\\\",\\n+ \\\"fork\\\": false,\\n+ \\\"url\\\": \\\"https://api.github.com/repos/simonw/datasette\\\",\\n+ \\\"forks_url\\\": \\\"https://api.github.com/repos/simonw/datasette/forks\\\",\\n+ \\\"keys_url\\\": \\\"https://api.github.com/repos/simonw/datasette/keys{/key_id}\\\",\\n+ \\\"collaborators_url\\\": \\\"https://api.github.com/repos/simonw/datasette/collaborators{/collaborator}\\\",\\n+ \\\"teams_url\\\": \\\"https://api.github.com/repos/simonw/datasette/teams\\\",\\n+ \\\"hooks_url\\\": \\\"https://api.github.com/repos/simonw/datasette/hooks\\\",\\n+ \\\"issue_events_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/events{/number}\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/repos/simonw/datasette/events\\\",\\n+ \\\"assignees_url\\\": \\\"https://api.github.com/repos/simonw/datasette/assignees{/user}\\\",\\n+ \\\"branches_url\\\": \\\"https://api.github.com/repos/simonw/datasette/branches{/branch}\\\",\\n+ \\\"tags_url\\\": \\\"https://api.github.com/repos/simonw/datasette/tags\\\",\\n+ \\\"blobs_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/blobs{/sha}\\\",\\n+ \\\"git_tags_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/tags{/sha}\\\",\\n+ \\\"git_refs_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/refs{/sha}\\\",\\n+ \\\"trees_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/trees{/sha}\\\",\\n+ \\\"statuses_url\\\": \\\"https://api.github.com/repos/simonw/datasette/statuses/{sha}\\\",\\n+ \\\"languages_url\\\": \\\"https://api.github.com/repos/simonw/datasette/languages\\\",\\n+ \\\"stargazers_url\\\": \\\"https://api.github.com/repos/simonw/datasette/stargazers\\\",\\n+ \\\"contributors_url\\\": \\\"https://api.github.com/repos/simonw/datasette/contributors\\\",\\n+ \\\"subscribers_url\\\": \\\"https://api.github.com/repos/simonw/datasette/subscribers\\\",\\n+ \\\"subscription_url\\\": \\\"https://api.github.com/repos/simonw/datasette/subscription\\\",\\n+ \\\"commits_url\\\": \\\"https://api.github.com/repos/simonw/datasette/commits{/sha}\\\",\\n+ \\\"git_commits_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/commits{/sha}\\\",\\n+ \\\"comments_url\\\": \\\"https://api.github.com/repos/simonw/datasette/comments{/number}\\\",\\n+ \\\"issue_comment_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/comments{/number}\\\",\\n+ \\\"contents_url\\\": \\\"https://api.github.com/repos/simonw/datasette/contents/{+path}\\\",\\n+ \\\"compare_url\\\": \\\"https://api.github.com/repos/simonw/datasette/compare/{base}...{head}\\\",\\n+ \\\"merges_url\\\": \\\"https://api.github.com/repos/simonw/datasette/merges\\\",\\n+ \\\"archive_url\\\": \\\"https://api.github.com/repos/simonw/datasette/{archive_format}{/ref}\\\",\\n+ \\\"downloads_url\\\": \\\"https://api.github.com/repos/simonw/datasette/downloads\\\",\\n+ \\\"issues_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues{/number}\\\",\\n+ \\\"pulls_url\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls{/number}\\\",\\n+ \\\"milestones_url\\\": \\\"https://api.github.com/repos/simonw/datasette/milestones{/number}\\\",\\n+ \\\"notifications_url\\\": \\\"https://api.github.com/repos/simonw/datasette/notifications{?since,all,participating}\\\",\\n+ \\\"labels_url\\\": \\\"https://api.github.com/repos/simonw/datasette/labels{/name}\\\",\\n+ \\\"releases_url\\\": \\\"https://api.github.com/repos/simonw/datasette/releases{/id}\\\",\\n+ \\\"deployments_url\\\": \\\"https://api.github.com/repos/simonw/datasette/deployments\\\",\\n+ \\\"created_at\\\": \\\"2017-10-23T00:39:03Z\\\",\\n+ \\\"updated_at\\\": \\\"2020-07-27T20:42:15Z\\\",\\n+ \\\"pushed_at\\\": \\\"2020-07-26T01:21:05Z\\\",\\n+ \\\"git_url\\\": \\\"git://github.com/simonw/datasette.git\\\",\\n+ \\\"ssh_url\\\": \\\"git@github.com:simonw/datasette.git\\\",\\n+ \\\"clone_url\\\": \\\"https://github.com/simonw/datasette.git\\\",\\n+ \\\"svn_url\\\": \\\"https://github.com/simonw/datasette\\\",\\n+ \\\"homepage\\\": \\\"http://datasette.readthedocs.io/\\\",\\n+ \\\"size\\\": 3487,\\n+ \\\"stargazers_count\\\": 3642,\\n+ \\\"watchers_count\\\": 3642,\\n+ \\\"language\\\": \\\"Python\\\",\\n+ \\\"has_issues\\\": true,\\n+ \\\"has_projects\\\": false,\\n+ \\\"has_downloads\\\": true,\\n+ \\\"has_wiki\\\": true,\\n+ \\\"has_pages\\\": false,\\n+ \\\"forks_count\\\": 206,\\n+ \\\"mirror_url\\\": null,\\n+ \\\"archived\\\": false,\\n+ \\\"disabled\\\": false,\\n+ \\\"open_issues_count\\\": 190,\\n+ \\\"license\\\": {\\n+ \\\"key\\\": \\\"apache-2.0\\\",\\n+ \\\"name\\\": \\\"Apache License 2.0\\\",\\n+ \\\"spdx_id\\\": \\\"Apache-2.0\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/licenses/apache-2.0\\\",\\n+ \\\"node_id\\\": \\\"MDc6TGljZW5zZTI=\\\"\\n+ },\\n+ \\\"forks\\\": 206,\\n+ \\\"open_issues\\\": 190,\\n+ \\\"watchers\\\": 3642,\\n+ \\\"default_branch\\\": \\\"master\\\"\\n+ }\\n+ },\\n+ \\\"base\\\": {\\n+ \\\"label\\\": \\\"simonw:master\\\",\\n+ \\\"ref\\\": \\\"master\\\",\\n+ \\\"sha\\\": \\\"f04deebec4f3842f7bd610cd5859de529f77d50e\\\",\\n+ \\\"user\\\": {\\n+ \\\"login\\\": \\\"simonw\\\",\\n+ \\\"id\\\": 9599,\\n+ \\\"node_id\\\": \\\"MDQ6VXNlcjk1OTk=\\\",\\n+ \\\"avatar_url\\\": \\\"https://avatars0.githubusercontent.com/u/9599?v=4\\\",\\n+ \\\"gravatar_id\\\": \\\"\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/users/simonw\\\",\\n+ \\\"html_url\\\": \\\"https://github.com/simonw\\\",\\n+ \\\"followers_url\\\": \\\"https://api.github.com/users/simonw/followers\\\",\\n+ \\\"following_url\\\": \\\"https://api.github.com/users/simonw/following{/other_user}\\\",\\n+ \\\"gists_url\\\": \\\"https://api.github.com/users/simonw/gists{/gist_id}\\\",\\n+ \\\"starred_url\\\": \\\"https://api.github.com/users/simonw/starred{/owner}{/repo}\\\",\\n+ \\\"subscriptions_url\\\": \\\"https://api.github.com/users/simonw/subscriptions\\\",\\n+ \\\"organizations_url\\\": \\\"https://api.github.com/users/simonw/orgs\\\",\\n+ \\\"repos_url\\\": \\\"https://api.github.com/users/simonw/repos\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/users/simonw/events{/privacy}\\\",\\n+ \\\"received_events_url\\\": \\\"https://api.github.com/users/simonw/received_events\\\",\\n+ \\\"type\\\": \\\"User\\\",\\n+ \\\"site_admin\\\": false\\n+ },\\n+ \\\"repo\\\": {\\n+ \\\"id\\\": 107914493,\\n+ \\\"node_id\\\": \\\"MDEwOlJlcG9zaXRvcnkxMDc5MTQ0OTM=\\\",\\n+ \\\"name\\\": \\\"datasette\\\",\\n+ \\\"full_name\\\": \\\"simonw/datasette\\\",\\n+ \\\"private\\\": false,\\n+ \\\"owner\\\": {\\n+ \\\"login\\\": \\\"simonw\\\",\\n+ \\\"id\\\": 9599,\\n+ \\\"node_id\\\": \\\"MDQ6VXNlcjk1OTk=\\\",\\n+ \\\"avatar_url\\\": \\\"https://avatars0.githubusercontent.com/u/9599?v=4\\\",\\n+ \\\"gravatar_id\\\": \\\"\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/users/simonw\\\",\\n+ \\\"html_url\\\": \\\"https://github.com/simonw\\\",\\n+ \\\"followers_url\\\": \\\"https://api.github.com/users/simonw/followers\\\",\\n+ \\\"following_url\\\": \\\"https://api.github.com/users/simonw/following{/other_user}\\\",\\n+ \\\"gists_url\\\": \\\"https://api.github.com/users/simonw/gists{/gist_id}\\\",\\n+ \\\"starred_url\\\": \\\"https://api.github.com/users/simonw/starred{/owner}{/repo}\\\",\\n+ \\\"subscriptions_url\\\": \\\"https://api.github.com/users/simonw/subscriptions\\\",\\n+ \\\"organizations_url\\\": \\\"https://api.github.com/users/simonw/orgs\\\",\\n+ \\\"repos_url\\\": \\\"https://api.github.com/users/simonw/repos\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/users/simonw/events{/privacy}\\\",\\n+ \\\"received_events_url\\\": \\\"https://api.github.com/users/simonw/received_events\\\",\\n+ \\\"type\\\": \\\"User\\\",\\n+ \\\"site_admin\\\": false\\n+ },\\n+ \\\"html_url\\\": \\\"https://github.com/simonw/datasette\\\",\\n+ \\\"description\\\": \\\"An open source multi-tool for exploring and publishing data\\\",\\n+ \\\"fork\\\": false,\\n+ \\\"url\\\": \\\"https://api.github.com/repos/simonw/datasette\\\",\\n+ \\\"forks_url\\\": \\\"https://api.github.com/repos/simonw/datasette/forks\\\",\\n+ \\\"keys_url\\\": \\\"https://api.github.com/repos/simonw/datasette/keys{/key_id}\\\",\\n+ \\\"collaborators_url\\\": \\\"https://api.github.com/repos/simonw/datasette/collaborators{/collaborator}\\\",\\n+ \\\"teams_url\\\": \\\"https://api.github.com/repos/simonw/datasette/teams\\\",\\n+ \\\"hooks_url\\\": \\\"https://api.github.com/repos/simonw/datasette/hooks\\\",\\n+ \\\"issue_events_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/events{/number}\\\",\\n+ \\\"events_url\\\": \\\"https://api.github.com/repos/simonw/datasette/events\\\",\\n+ \\\"assignees_url\\\": \\\"https://api.github.com/repos/simonw/datasette/assignees{/user}\\\",\\n+ \\\"branches_url\\\": \\\"https://api.github.com/repos/simonw/datasette/branches{/branch}\\\",\\n+ \\\"tags_url\\\": \\\"https://api.github.com/repos/simonw/datasette/tags\\\",\\n+ \\\"blobs_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/blobs{/sha}\\\",\\n+ \\\"git_tags_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/tags{/sha}\\\",\\n+ \\\"git_refs_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/refs{/sha}\\\",\\n+ \\\"trees_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/trees{/sha}\\\",\\n+ \\\"statuses_url\\\": \\\"https://api.github.com/repos/simonw/datasette/statuses/{sha}\\\",\\n+ \\\"languages_url\\\": \\\"https://api.github.com/repos/simonw/datasette/languages\\\",\\n+ \\\"stargazers_url\\\": \\\"https://api.github.com/repos/simonw/datasette/stargazers\\\",\\n+ \\\"contributors_url\\\": \\\"https://api.github.com/repos/simonw/datasette/contributors\\\",\\n+ \\\"subscribers_url\\\": \\\"https://api.github.com/repos/simonw/datasette/subscribers\\\",\\n+ \\\"subscription_url\\\": \\\"https://api.github.com/repos/simonw/datasette/subscription\\\",\\n+ \\\"commits_url\\\": \\\"https://api.github.com/repos/simonw/datasette/commits{/sha}\\\",\\n+ \\\"git_commits_url\\\": \\\"https://api.github.com/repos/simonw/datasette/git/commits{/sha}\\\",\\n+ \\\"comments_url\\\": \\\"https://api.github.com/repos/simonw/datasette/comments{/number}\\\",\\n+ \\\"issue_comment_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/comments{/number}\\\",\\n+ \\\"contents_url\\\": \\\"https://api.github.com/repos/simonw/datasette/contents/{+path}\\\",\\n+ \\\"compare_url\\\": \\\"https://api.github.com/repos/simonw/datasette/compare/{base}...{head}\\\",\\n+ \\\"merges_url\\\": \\\"https://api.github.com/repos/simonw/datasette/merges\\\",\\n+ \\\"archive_url\\\": \\\"https://api.github.com/repos/simonw/datasette/{archive_format}{/ref}\\\",\\n+ \\\"downloads_url\\\": \\\"https://api.github.com/repos/simonw/datasette/downloads\\\",\\n+ \\\"issues_url\\\": \\\"https://api.github.com/repos/simonw/datasette/issues{/number}\\\",\\n+ \\\"pulls_url\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls{/number}\\\",\\n+ \\\"milestones_url\\\": \\\"https://api.github.com/repos/simonw/datasette/milestones{/number}\\\",\\n+ \\\"notifications_url\\\": \\\"https://api.github.com/repos/simonw/datasette/notifications{?since,all,participating}\\\",\\n+ \\\"labels_url\\\": \\\"https://api.github.com/repos/simonw/datasette/labels{/name}\\\",\\n+ \\\"releases_url\\\": \\\"https://api.github.com/repos/simonw/datasette/releases{/id}\\\",\\n+ \\\"deployments_url\\\": \\\"https://api.github.com/repos/simonw/datasette/deployments\\\",\\n+ \\\"created_at\\\": \\\"2017-10-23T00:39:03Z\\\",\\n+ \\\"updated_at\\\": \\\"2020-07-27T20:42:15Z\\\",\\n+ \\\"pushed_at\\\": \\\"2020-07-26T01:21:05Z\\\",\\n+ \\\"git_url\\\": \\\"git://github.com/simonw/datasette.git\\\",\\n+ \\\"ssh_url\\\": \\\"git@github.com:simonw/datasette.git\\\",\\n+ \\\"clone_url\\\": \\\"https://github.com/simonw/datasette.git\\\",\\n+ \\\"svn_url\\\": \\\"https://github.com/simonw/datasette\\\",\\n+ \\\"homepage\\\": \\\"http://datasette.readthedocs.io/\\\",\\n+ \\\"size\\\": 3487,\\n+ \\\"stargazers_count\\\": 3642,\\n+ \\\"watchers_count\\\": 3642,\\n+ \\\"language\\\": \\\"Python\\\",\\n+ \\\"has_issues\\\": true,\\n+ \\\"has_projects\\\": false,\\n+ \\\"has_downloads\\\": true,\\n+ \\\"has_wiki\\\": true,\\n+ \\\"has_pages\\\": false,\\n+ \\\"forks_count\\\": 206,\\n+ \\\"mirror_url\\\": null,\\n+ \\\"archived\\\": false,\\n+ \\\"disabled\\\": false,\\n+ \\\"open_issues_count\\\": 190,\\n+ \\\"license\\\": {\\n+ \\\"key\\\": \\\"apache-2.0\\\",\\n+ \\\"name\\\": \\\"Apache License 2.0\\\",\\n+ \\\"spdx_id\\\": \\\"Apache-2.0\\\",\\n+ \\\"url\\\": \\\"https://api.github.com/licenses/apache-2.0\\\",\\n+ \\\"node_id\\\": \\\"MDc6TGljZW5zZTI=\\\"\\n+ },\\n+ \\\"forks\\\": 206,\\n+ \\\"open_issues\\\": 190,\\n+ \\\"watchers\\\": 3642,\\n+ \\\"default_branch\\\": \\\"master\\\"\\n+ }\\n+ },\\n+ \\\"_links\\\": {\\n+ \\\"self\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/571\\\"\\n+ },\\n+ \\\"html\\\": {\\n+ \\\"href\\\": \\\"https://github.com/simonw/datasette/pull/571\\\"\\n+ },\\n+ \\\"issue\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/571\\\"\\n+ },\\n+ \\\"comments\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/issues/571/comments\\\"\\n+ },\\n+ \\\"review_comments\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/571/comments\\\"\\n+ },\\n+ \\\"review_comment\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/comments{/number}\\\"\\n+ },\\n+ \\\"commits\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/pulls/571/commits\\\"\\n+ },\\n+ \\\"statuses\\\": {\\n+ \\\"href\\\": \\\"https://api.github.com/repos/simonw/datasette/statuses/a85239f69261c10f1a9f90514c8b5d113cb94585\\\"\\n+ }\\n+ },\\n+ \\\"author_association\\\": \\\"OWNER\\\",\\n+ \\\"active_lock_reason\\\": null,\\n+ \\\"merged\\\": true,\\n+ \\\"mergeable\\\": null,\\n+ \\\"rebaseable\\\": null,\\n+ \\\"mergeable_state\\\": \\\"unknown\\\",\\n+ \\\"merged_by\\\": {\",\r\n \"path\": \"tests/pull_requests.json\",\r\n \"position\": 342,\r\n \"original_position\": 342,\r\n \"commit_id\": \"3a0d5c498f9faae4e40aab204cd01b965a4f61f3\",\r\n \"user\": {\r\n \"login\": \"simonw\",\r\n \"id\": 9599,\r\n \"node_id\": \"MDQ6VXNlcjk1OTk=\",\r\n \"avatar_url\": \"https://avatars0.githubusercontent.com/u/9599?u=5968723deb1a55b82620e106f5ca58e9b11a0942&v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/simonw\",\r\n \"html_url\": \"https://github.com/simonw\",\r\n \"followers_url\": \"https://api.github.com/users/simonw/followers\",\r\n \"following_url\": \"https://api.github.com/users/simonw/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/simonw/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/simonw/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/simonw/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/simonw/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/simonw/repos\",\r\n \"events_url\": \"https://api.github.com/users/simonw/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/simonw/received_events\",\r\n \"type\": \"User\",\r\n \"site_admin\": false\r\n },\r\n \"body\": \"Running this should create a `merged_by` column on the `pull_requests` table which is a foreign key to the `users` table.\",\r\n \"created_at\": \"2020-10-06T21:22:47Z\",\r\n \"updated_at\": \"2020-10-20T20:56:33Z\",\r\n \"html_url\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#discussion_r500603838\",\r\n \"pull_request_url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\",\r\n \"author_association\": \"MEMBER\",\r\n \"_links\": {\r\n \"self\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/comments/500603838\"\r\n },\r\n \"html\": {\r\n \"href\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#discussion_r500603838\"\r\n },\r\n \"pull_request\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\"\r\n }\r\n },\r\n \"original_commit_id\": \"4f33b850bd37829262dd29e1c520afffebedc19c\"\r\n },\r\n {\r\n \"id\": 500606198,\r\n \"node_id\": \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDUwMDYwNjE5OA==\",\r\n \"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/comments/500606198\",\r\n \"pull_request_review_id\": 503368921,\r\n \"diff_hunk\": \"@@ -0,0 +1,124 @@\\n+from github_to_sqlite import utils\\n+import pytest\\n+import pathlib\\n+import sqlite_utils\\n+from sqlite_utils.db import ForeignKey\\n+import json\\n+\\n+\\n+@pytest.fixture\\n+def pull_requests():\\n+ return json.load(open(pathlib.Path(__file__).parent / \\\"pull_requests.json\\\"))\\n+\\n+\\n+@pytest.fixture\\n+def db(pull_requests):\\n+ db = sqlite_utils.Database(memory=True)\\n+ db[\\\"repos\\\"].insert(\\n+ {\\\"id\\\": 1},\\n+ pk=\\\"id\\\",\\n+ columns={\\\"organization\\\": int, \\\"topics\\\": str, \\\"name\\\": str, \\\"description\\\": str},\\n+ )\\n+ utils.save_pull_requests(db, pull_requests, {\\\"id\\\": 1})\\n+ return db\\n+\\n+\\n+def test_tables(db):\\n+ assert {\\\"pull_requests\\\", \\\"users\\\", \\\"repos\\\", \\\"milestones\\\"} == set(\\n+ db.table_names()\\n+ )\\n+ assert {\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\", column=\\\"repo\\\", other_table=\\\"repos\\\", other_column=\\\"id\\\"\\n+ ),\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\",\\n+ column=\\\"milestone\\\",\\n+ other_table=\\\"milestones\\\",\\n+ other_column=\\\"id\\\",\\n+ ),\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\", column=\\\"assignee\\\", other_table=\\\"users\\\", other_column=\\\"id\\\"\\n+ ),\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\", column=\\\"user\\\", other_table=\\\"users\\\", other_column=\\\"id\\\"\\n+ ),\\n+ } == set(db[\\\"pull_requests\\\"].foreign_keys)\\n+\\n+\\n+def test_pull_requests(db):\\n+ pull_request_rows = list(db[\\\"pull_requests\\\"].rows)\\n+ assert [\\n+ {\\n+ 'id': 313384926,\\n+ 'node_id': 'MDExOlB1bGxSZXF1ZXN0MzEzMzg0OTI2',\\n+ 'number': 571,\\n+ 'state': 'closed',\\n+ 'locked': 0,\\n+ 'title': 'detect_fts now works with alternative table escaping',\\n+ 'user': 9599,\\n+ 'body': 'Fixes #570',\\n+ 'created_at': '2019-09-03T00:23:39Z',\\n+ 'updated_at': '2019-09-03T00:32:28Z',\\n+ 'closed_at': '2019-09-03T00:32:28Z',\\n+ 'merged_at': '2019-09-03T00:32:28Z',\\n+ 'merge_commit_sha': '2dc5c8dc259a0606162673d394ba8cc1c6f54428',\\n+ 'assignee': None,\\n+ 'milestone': None,\\n+ 'draft': 0,\\n+ 'head': 'a85239f69261c10f1a9f90514c8b5d113cb94585',\\n+ 'base': 'f04deebec4f3842f7bd610cd5859de529f77d50e',\\n+ 'author_association': 'OWNER',\\n+ 'merged': 1,\\n+ 'mergeable': None,\\n+ 'rebaseable': None,\\n+ 'mergeable_state': 'unknown',\\n+ 'merged_by': '{\\\"login\\\": \\\"simonw\\\", \\\"id\\\": 9599, \\\"node_id\\\": \\\"MDQ6VXNlcjk1OTk=\\\", \\\"avatar_url\\\": \\\"https://avatars0.githubusercontent.com/u/9599?v=4\\\", \\\"gravatar_id\\\": \\\"\\\", \\\"url\\\": \\\"https://api.github.com/users/simonw\\\", \\\"html_url\\\": \\\"https://github.com/simonw\\\", \\\"followers_url\\\": \\\"https://api.github.com/users/simonw/followers\\\", \\\"following_url\\\": \\\"https://api.github.com/users/simonw/following{/other_user}\\\", \\\"gists_url\\\": \\\"https://api.github.com/users/simonw/gists{/gist_id}\\\", \\\"starred_url\\\": \\\"https://api.github.com/users/simonw/starred{/owner}{/repo}\\\", \\\"subscriptions_url\\\": \\\"https://api.github.com/users/simonw/subscriptions\\\", \\\"organizations_url\\\": \\\"https://api.github.com/users/simonw/orgs\\\", \\\"repos_url\\\": \\\"https://api.github.com/users/simonw/repos\\\", \\\"events_url\\\": \\\"https://api.github.com/users/simonw/events{/privacy}\\\", \\\"received_events_url\\\": \\\"https://api.github.com/users/simonw/received_events\\\", \\\"type\\\": \\\"User\\\", \\\"site_admin\\\": false}',\",\r\n \"path\": \"tests/test_pull_requests.py\",\r\n \"position\": null,\r\n \"original_position\": 76,\r\n \"commit_id\": \"3a0d5c498f9faae4e40aab204cd01b965a4f61f3\",\r\n \"user\": {\r\n \"login\": \"simonw\",\r\n \"id\": 9599,\r\n \"node_id\": \"MDQ6VXNlcjk1OTk=\",\r\n \"avatar_url\": \"https://avatars0.githubusercontent.com/u/9599?u=5968723deb1a55b82620e106f5ca58e9b11a0942&v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/simonw\",\r\n \"html_url\": \"https://github.com/simonw\",\r\n \"followers_url\": \"https://api.github.com/users/simonw/followers\",\r\n \"following_url\": \"https://api.github.com/users/simonw/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/simonw/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/simonw/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/simonw/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/simonw/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/simonw/repos\",\r\n \"events_url\": \"https://api.github.com/users/simonw/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/simonw/received_events\",\r\n \"type\": \"User\",\r\n \"site_admin\": false\r\n },\r\n \"body\": \"See above - this should be 9599, an integer reference to the row in the users table.\",\r\n \"created_at\": \"2020-10-06T21:27:43Z\",\r\n \"updated_at\": \"2020-10-20T20:56:33Z\",\r\n \"html_url\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#discussion_r500606198\",\r\n \"pull_request_url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\",\r\n \"author_association\": \"MEMBER\",\r\n \"_links\": {\r\n \"self\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/comments/500606198\"\r\n },\r\n \"html\": {\r\n \"href\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#discussion_r500606198\"\r\n },\r\n \"pull_request\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\"\r\n }\r\n },\r\n \"original_commit_id\": \"4f33b850bd37829262dd29e1c520afffebedc19c\"\r\n },\r\n {\r\n \"id\": 500606665,\r\n \"node_id\": \"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDUwMDYwNjY2NQ==\",\r\n \"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/comments/500606665\",\r\n \"pull_request_review_id\": 503368921,\r\n \"diff_hunk\": \"@@ -0,0 +1,124 @@\\n+from github_to_sqlite import utils\\n+import pytest\\n+import pathlib\\n+import sqlite_utils\\n+from sqlite_utils.db import ForeignKey\\n+import json\\n+\\n+\\n+@pytest.fixture\\n+def pull_requests():\\n+ return json.load(open(pathlib.Path(__file__).parent / \\\"pull_requests.json\\\"))\\n+\\n+\\n+@pytest.fixture\\n+def db(pull_requests):\\n+ db = sqlite_utils.Database(memory=True)\\n+ db[\\\"repos\\\"].insert(\\n+ {\\\"id\\\": 1},\\n+ pk=\\\"id\\\",\\n+ columns={\\\"organization\\\": int, \\\"topics\\\": str, \\\"name\\\": str, \\\"description\\\": str},\\n+ )\\n+ utils.save_pull_requests(db, pull_requests, {\\\"id\\\": 1})\\n+ return db\\n+\\n+\\n+def test_tables(db):\\n+ assert {\\\"pull_requests\\\", \\\"users\\\", \\\"repos\\\", \\\"milestones\\\"} == set(\\n+ db.table_names()\\n+ )\\n+ assert {\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\", column=\\\"repo\\\", other_table=\\\"repos\\\", other_column=\\\"id\\\"\\n+ ),\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\",\\n+ column=\\\"milestone\\\",\\n+ other_table=\\\"milestones\\\",\\n+ other_column=\\\"id\\\",\\n+ ),\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\", column=\\\"assignee\\\", other_table=\\\"users\\\", other_column=\\\"id\\\"\\n+ ),\\n+ ForeignKey(\\n+ table=\\\"pull_requests\\\", column=\\\"user\\\", other_table=\\\"users\\\", other_column=\\\"id\\\"\\n+ ),\\n+ } == set(db[\\\"pull_requests\\\"].foreign_keys)\\n+\\n+\\n+def test_pull_requests(db):\\n+ pull_request_rows = list(db[\\\"pull_requests\\\"].rows)\\n+ assert [\\n+ {\\n+ 'id': 313384926,\",\r\n \"path\": \"tests/test_pull_requests.py\",\r\n \"position\": null,\r\n \"original_position\": 53,\r\n \"commit_id\": \"3a0d5c498f9faae4e40aab204cd01b965a4f61f3\",\r\n \"user\": {\r\n \"login\": \"simonw\",\r\n \"id\": 9599,\r\n \"node_id\": \"MDQ6VXNlcjk1OTk=\",\r\n \"avatar_url\": \"https://avatars0.githubusercontent.com/u/9599?u=5968723deb1a55b82620e106f5ca58e9b11a0942&v=4\",\r\n \"gravatar_id\": \"\",\r\n \"url\": \"https://api.github.com/users/simonw\",\r\n \"html_url\": \"https://github.com/simonw\",\r\n \"followers_url\": \"https://api.github.com/users/simonw/followers\",\r\n \"following_url\": \"https://api.github.com/users/simonw/following{/other_user}\",\r\n \"gists_url\": \"https://api.github.com/users/simonw/gists{/gist_id}\",\r\n \"starred_url\": \"https://api.github.com/users/simonw/starred{/owner}{/repo}\",\r\n \"subscriptions_url\": \"https://api.github.com/users/simonw/subscriptions\",\r\n \"organizations_url\": \"https://api.github.com/users/simonw/orgs\",\r\n \"repos_url\": \"https://api.github.com/users/simonw/repos\",\r\n \"events_url\": \"https://api.github.com/users/simonw/events{/privacy}\",\r\n \"received_events_url\": \"https://api.github.com/users/simonw/received_events\",\r\n \"type\": \"User\",\r\n \"site_admin\": false\r\n },\r\n \"body\": \"Minor detail: I use Black for this repo, which requires double quotes - running \\\"black .\\\" in the root directory (with the latest version of Black) should handle this for you.\",\r\n \"created_at\": \"2020-10-06T21:28:31Z\",\r\n \"updated_at\": \"2020-10-20T20:56:33Z\",\r\n \"html_url\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#discussion_r500606665\",\r\n \"pull_request_url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\",\r\n \"author_association\": \"MEMBER\",\r\n \"_links\": {\r\n \"self\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/comments/500606665\"\r\n },\r\n \"html\": {\r\n \"href\": \"https://github.com/dogsheep/github-to-sqlite/pull/48#discussion_r500606665\"\r\n },\r\n \"pull_request\": {\r\n \"href\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/pulls/48\"\r\n }\r\n },\r\n \"original_commit_id\": \"4f33b850bd37829262dd29e1c520afffebedc19c\"\r\n }\r\n]\r\n```\r\nThat's a lot more interesting.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 664485022, "label": "Feature: pull request reviews and comments"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/46#issuecomment-735483820", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/46", "id": 735483820, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTQ4MzgyMA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T00:27:47Z", "updated_at": "2020-11-30T00:27:47Z", "author_association": "MEMBER", "body": "So it looks like anything that pulls reviews needs to pull each review, then for each one pull the comments.\r\n\r\nI'm going to consider this blocked on smarter rate limit handling in #51.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 664485022, "label": "Feature: pull request reviews and comments"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/51#issuecomment-735484186", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/51", "id": 735484186, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTQ4NDE4Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T00:29:31Z", "updated_at": "2020-11-30T00:29:31Z", "author_association": "MEMBER", "body": "This just caused a failure in deploying the demo: https://github.com/dogsheep/github-to-sqlite/runs/1471304407?check_suite_focus=true\r\n\r\n```\r\n File \"/opt/hostedtoolcache/Python/3.8.6/x64/bin/github-to-sqlite\", line 33, in \r\n sys.exit(load_entry_point('github-to-sqlite', 'console_scripts', 'github-to-sqlite')())\r\n File \"/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py\", line 829, in __call__\r\n return self.main(*args, **kwargs)\r\n File \"/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py\", line 782, in main\r\n rv = self.invoke(ctx)\r\n File \"/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py\", line 1259, in invoke\r\n return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n File \"/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py\", line 1066, in invoke\r\n return ctx.invoke(self.callback, **ctx.params)\r\n File \"/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py\", line 610, in invoke\r\n return callback(*args, **kwargs)\r\n File \"/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/cli.py\", line 142, in issue_comments\r\n for comment in utils.fetch_issue_comments(repo, token, issue):\r\n File \"/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/utils.py\", line 380, in fetch_issue_comments\r\n for comments in paginate(url, headers):\r\n File \"/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/utils.py\", line 472, in paginate\r\n raise GitHubError.from_response(response)\r\ngithub_to_sqlite.utils.GitHubError: ('API rate limit exceeded for user ID 9599.', 403)\r\nError: Process completed with exit code 1.\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 703246031, "label": "github-to-sqlite should handle rate limits better"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/53#issuecomment-735485677", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/53", "id": 735485677, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTQ4NTY3Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T00:36:09Z", "updated_at": "2020-11-30T00:36:09Z", "author_association": "MEMBER", "body": "Given rate limits (see #51) this command might be better implemented by running a `git clone` into a temporary directory - doing so would retrieve all of the files in one go.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753000405, "label": "Command for fetching file contents"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/263#issuecomment-735960132", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/263", "id": 735960132, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTk2MDEzMg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T18:25:17Z", "updated_at": "2020-11-30T18:25:17Z", "author_association": "OWNER", "body": "Fixing this would unblock this issue for switching `datasette-graphql` to using `datasette.client` internally: https://github.com/simonw/datasette-graphql/issues/61", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 323671577, "label": "Facets should not execute for ?shape=array|object"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-735992106", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 735992106, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTk5MjEwNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T19:27:10Z", "updated_at": "2020-11-30T19:27:10Z", "author_association": "OWNER", "body": "I'm treating this as a bug - these columns should definitely be visible in Datasette.\r\n\r\nI created my own test database using SQLite from Homebrew like this:\r\n```\r\n/usr/local/Cellar/sqlite/3.33.0/bin/sqlite3 deeds.db << EOF\r\nCREATE TABLE deeds (\r\n body TEXT,\r\n id INT GENERATED ALWAYS AS (json_extract(body, '$.id')) STORED,\r\n consideration INT GENERATED ALWAYS AS (json_extract(body, '$.consideration')) STORED\r\n);\r\nINSERT INTO deeds (body) VALUES ('{\r\n \"id\": 1,\r\n \"consideration\": \"This is the consideration\"\r\n}');\r\nEOF\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-735993935", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 735993935, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTk5MzkzNQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T19:30:44Z", "updated_at": "2020-11-30T19:32:15Z", "author_association": "OWNER", "body": "It looks like `PRAGMA table_info` skips \"hidden\" columns: https://www.sqlite.org/pragma.html#pragma_table_info\r\n\r\nBut `PRAGMA table_xinfo` does not: https://www.sqlite.org/pragma.html#pragma_table_xinfo\r\n\r\nCompare https://latest.datasette.io/fixtures?sql=select+*+from+pragma_table_info%28%27searchable%27%29 to https://latest.datasette.io/fixtures?sql=select+*+from+pragma_table_xinfo%28%27searchable%27%29 - the `xinfo` one has an additional `hidden` column.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-735995695", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 735995695, "node_id": "MDEyOklzc3VlQ29tbWVudDczNTk5NTY5NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T19:34:15Z", "updated_at": "2020-11-30T19:34:15Z", "author_association": "OWNER", "body": "Generated column support was added in SQLite 3.31.0, so any unit tests I write for this should use skipIf to only run on that version or later.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-736004383", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 736004383, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAwNDM4Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T19:51:51Z", "updated_at": "2020-11-30T19:51:51Z", "author_association": "OWNER", "body": "This change will also have an impact on how hidden virtual FTS tables are displayed, since apparently those have some hidden columns: https://latest.datasette.io/fixtures?sql=select+*+from+pragma_table_xinfo%28%27searchable_fts%27%29\r\n\r\n| cid | name | type | notnull | dflt_value | pk | hidden |\r\n| --- | --- | --- | --- | --- | --- | --- |\r\n| 0 | text1 | | 0 | | 0 | 0 |\r\n| 1 | text2 | | 0 | | 0 | 0 |\r\n| 2 | name with . and spaces | | 0 | | 0 | 0 |\r\n| 3 | searchable_fts | | 0 | | 0 | 1 |\r\n| 4 | docid | | 0 | | 0 | 1 |\r\n| 5 | __langid | | 0 | | 0 | 1 |", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-736005833", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 736005833, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAwNTgzMw==", "user": {"value": 2789593, "label": "nattaylor"}, "created_at": "2020-11-30T19:54:39Z", "updated_at": "2020-11-30T19:54:39Z", "author_association": "NONE", "body": "@simonw thanks for investigating so quickly. If it is undesirable to change that hidden behavior, maybe something like this is a suitable workaround:\r\n```\r\nSELECT * FROM pragma_table_xinfo('deeds') where hidden in (0,2);\r\n0|body|TEXT|0||0|0\r\n1|id|INT GENERATED ALWAYS|0||0|2\r\n2|consideration|INT GENERATED ALWAYS|0||0|2\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-736010720", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 736010720, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAxMDcyMA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:01:53Z", "updated_at": "2020-11-30T20:01:53Z", "author_association": "OWNER", "body": "I'm OK exposing hidden columns, unless someone comes up with a pressing reason not to.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-736014372", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 736014372, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAxNDM3Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:08:48Z", "updated_at": "2020-11-30T20:08:48Z", "author_association": "OWNER", "body": "Ouch, the tests pass on my laptop but failed in CI: https://github.com/simonw/datasette/actions/runs/392367997\r\n\r\nLots of failures look like this:\r\n```\r\nERROR: conn=, sql = 'select rowid, from facetable order by rowid limit 51', params = {}: near \"from\": syntax error\r\n```\r\nNote the `select rowid, from...` - so it looks like invalid SQL queries are being constructed maybe due to mis-detecting columns somehow.\r\n\r\nI wonder why it didn't fail on my laptop?", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-736015487", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 736015487, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAxNTQ4Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:11:07Z", "updated_at": "2020-11-30T20:11:07Z", "author_association": "OWNER", "body": "Working on this in a pull request: https://github.com/simonw/datasette/pull/1117", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1117#issuecomment-736018609", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1117", "id": 736018609, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAxODYwOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:17:31Z", "updated_at": "2020-11-30T20:17:31Z", "author_association": "OWNER", "body": "I need to replicate these failures on my laptop. My hunch is that this is down to the version of SQLite available to Python.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753767911, "label": "Support for generated columns"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1117#issuecomment-736023089", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1117", "id": 736023089, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAyMzA4OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:26:27Z", "updated_at": "2020-11-30T20:26:27Z", "author_association": "OWNER", "body": "On my laptop:\r\n```\r\nplatform darwin -- Python 3.8.6, pytest-6.0.1, py-1.9.0, pluggy-0.13.1\r\nSQLite: 3.33.0\r\n```\r\nIn CI they are all SQLite: 3.22.0", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753767911, "label": "Support for generated columns"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1117#issuecomment-736028726", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1117", "id": 736028726, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAyODcyNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:37:50Z", "updated_at": "2020-11-30T20:37:50Z", "author_association": "OWNER", "body": "This kind of problem is why I have a `tmate` workflow:\r\n\r\n\"Actions_\u00b7_simonw_datasette\"\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753767911, "label": "Support for generated columns"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1117#issuecomment-736029337", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1117", "id": 736029337, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAyOTMzNw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:39:06Z", "updated_at": "2020-11-30T20:39:06Z", "author_association": "OWNER", "body": "Here's the problem: https://www.sqlite.org/changes.html#version_3_26_0\r\n\r\n> ### 2018-12-01 (3.26.0)\r\n> \r\n> - Added [PRAGMA table_xinfo](https://www.sqlite.org/pragma.html#pragma_table_xinfo) that works just like [PRAGMA table_info](https://www.sqlite.org/pragma.html#pragma_table_info) except that it also shows [hidden columns](https://www.sqlite.org/vtab.html#hiddencol) in virtual tables.\r\n\r\nCI is running 3.22.0.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753767911, "label": "Support for generated columns"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1116#issuecomment-736030599", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1116", "id": 736030599, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjAzMDU5OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-11-30T20:41:41Z", "updated_at": "2020-11-30T20:41:41Z", "author_association": "OWNER", "body": "Here's the problem: https://www.sqlite.org/changes.html#version_3_26_0\r\n\r\n> ### 2018-12-01 (3.26.0)\r\n> \r\n> - Added [PRAGMA table_xinfo](https://www.sqlite.org/pragma.html#pragma_table_xinfo) that works just like [PRAGMA table_info](https://www.sqlite.org/pragma.html#pragma_table_info) except that it also shows [hidden columns](https://www.sqlite.org/vtab.html#hiddencol) in virtual tables.\r\n\r\nCI is running 3.22.0.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753668177, "label": "GENERATED column support"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1117#issuecomment-736067475", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1117", "id": 736067475, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjA2NzQ3NQ==", "user": {"value": 22429695, "label": "codecov[bot]"}, "created_at": "2020-11-30T21:28:22Z", "updated_at": "2020-11-30T21:28:22Z", "author_association": "NONE", "body": "# [Codecov](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=h1) Report\n> Merging [#1117](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=desc) (ccdf2c6) into [main](https://codecov.io/gh/simonw/datasette/commit/dea3c508b39528e566d711c38a467b3d372d220b?el=desc) (dea3c50) will **decrease** coverage by `0.00%`.\n> The diff coverage is `95.23%`.\n\n[![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1117/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## main #1117 +/- ##\n==========================================\n- Coverage 91.48% 91.48% -0.01% \n==========================================\n Files 30 31 +1 \n Lines 3841 3852 +11 \n==========================================\n+ Hits 3514 3524 +10 \n- Misses 327 328 +1 \n```\n\n\n| [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=tree) | Coverage \u0394 | |\n|---|---|---|\n| [datasette/utils/\\_\\_init\\_\\_.py](https://codecov.io/gh/simonw/datasette/pull/1117/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL19faW5pdF9fLnB5) | `94.10% <87.50%> (-0.20%)` | :arrow_down: |\n| [datasette/utils/sqlite.py](https://codecov.io/gh/simonw/datasette/pull/1117/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL3NxbGl0ZS5weQ==) | `100.00% <100.00%> (\u00f8)` | |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `\u0394 = absolute (impact)`, `\u00f8 = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=footer). Last update [dea3c50...ccdf2c6](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753767911, "label": "Support for generated columns"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1117#issuecomment-736088949", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1117", "id": 736088949, "node_id": "MDEyOklzc3VlQ29tbWVudDczNjA4ODk0OQ==", "user": {"value": 2789593, "label": "nattaylor"}, "created_at": "2020-11-30T22:15:58Z", "updated_at": "2020-11-30T22:23:19Z", "author_association": "NONE", "body": "I just deployed this and its working great.\r\n\r\n~In a very unscientific benchmark my response times went from around 22-25ms to 33-36ms, but I didn't even dig enough to confirm the latency is related to the change. It's on a VPS, so maybe the load changed.~ I don't see any difference in performance.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 753767911, "label": "Support for generated columns"}, "performed_via_github_app": null}