{"id": 544571092, "node_id": "MDU6SXNzdWU1NDQ1NzEwOTI=", "number": 15, "title": "Assets table with downloads", "user": {"value": 2029, "label": "garethr"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 4, "created_at": "2020-01-02T13:05:28Z", "updated_at": "2020-03-28T12:17:01Z", "closed_at": "2020-03-23T19:17:32Z", "author_association": "NONE", "pull_request": null, "body": "The `releases` command extracts the releases table, but data about the individual assets are locked up in the JSON document in the `assets` field. My main interest is in individual and aggregate download counts. I was wondering if creating a new table with a record per asset may be useful?\r\nIf so I'm happy to send a PR when I get a moment. Do you have opinions about that simply being part of the `releases` command or would you prefer a separate command as well?", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/15/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 586595839, "node_id": "MDU6SXNzdWU1ODY1OTU4Mzk=", "number": 23, "title": "Release 1.0", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 1, "created_at": "2020-03-24T00:03:55Z", "updated_at": "2020-03-24T00:15:50Z", "closed_at": "2020-03-24T00:15:50Z", "author_association": "MEMBER", "pull_request": null, "body": "Need to compile release notes.", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/23/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 521275281, "node_id": "MDU6SXNzdWU1MjEyNzUyODE=", "number": 13, "title": "Set up a live demo Datasette instance", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 9, "created_at": "2019-11-12T01:27:02Z", "updated_at": "2020-03-24T00:03:26Z", "closed_at": "2020-03-24T00:03:25Z", "author_association": "MEMBER", "pull_request": null, "body": "I deployed https://github-to-sqlite-releases-j7hipcg4aq-uc.a.run.app/ by running this:\r\n```\r\n#!/bin/bash\r\n# Fetch repos for simonw and dogsheep\r\ngithub-to-sqlite repos github.db simonw dogsheep -a auth.json\r\n\r\n# Fetch releases for the repos tagged 'datasette-io'\r\nsqlite-utils github.db \"\r\nselect full_name from repos where rowid in (\r\n select repos.rowid from repos, json_each(repos.topics) j\r\n where j.value = 'datasette-io'\r\n)\" --csv --no-headers | while read repo;\r\n do github-to-sqlite releases \\\r\n github.db $(echo $repo | tr -d '\\r') \\\r\n -a auth.json;\r\n sleep 2;\r\n done;\r\n```\r\nAnd then deploying using this:\r\n```\r\n$ datasette publish cloudrun github.db \\\r\n --title \"github-to-sqlite releases demo\" \\\r\n --about_url=\"https://github.com/simonw/github-to-sqlite\" \\\r\n --about='github-to-sqlite' \\\r\n --install=datasette-render-markdown \\\r\n --install=datasette-json-html \\\r\n --service=github-to-sqlite-releases\r\n```\r\nThis should happen automatically for every release. I can run it once a day in Circle CI to keep the demo database up-to-date.", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/13/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 586561727, "node_id": "MDU6SXNzdWU1ODY1NjE3Mjc=", "number": 21, "title": "Turn GitHub API errors into exceptions", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 2, "created_at": "2020-03-23T22:37:24Z", "updated_at": "2020-03-23T23:48:23Z", "closed_at": "2020-03-23T23:48:22Z", "author_association": "MEMBER", "pull_request": null, "body": "This would have really helped in debugging the mess in #13. Running with this `auth.json` is a useful demo:\r\n```json\r\n{\"github_personal_token\": \"\"}\r\n```", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/21/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 585411547, "node_id": "MDU6SXNzdWU1ODU0MTE1NDc=", "number": 18, "title": "Commits in GitHub API can have null author", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 8, "created_at": "2020-03-21T02:20:56Z", "updated_at": "2020-03-23T20:44:49Z", "closed_at": "2020-03-23T20:44:26Z", "author_association": "MEMBER", "pull_request": null, "body": "```\r\nTraceback (most recent call last):\r\n File \"/home/ubuntu/datasette-venv/bin/github-to-sqlite\", line 8, in \r\n sys.exit(cli())\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py\", line 764, in __call__\r\n return self.main(*args, **kwargs)\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py\", line 717, in main\r\n rv = self.invoke(ctx)\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py\", line 1137, in invoke\r\n return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py\", line 956, in invoke\r\n return ctx.invoke(self.callback, **ctx.params)\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py\", line 555, in invoke\r\n return callback(*args, **kwargs)\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/github_to_sqlite/cli.py\", line 235, in commits\r\n utils.save_commits(db, commits, repo_full[\"id\"])\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/github_to_sqlite/utils.py\", line 290, in save_commits\r\n commit_to_insert[\"author\"] = save_user(db, commit[\"author\"])\r\n File \"/home/ubuntu/datasette-venv/lib/python3.6/site-packages/github_to_sqlite/utils.py\", line 54, in save_user\r\n for key, value in user.items()\r\nAttributeError: 'NoneType' object has no attribute 'items'\r\n```\r\nGot this running the `commits` command from cron.", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/18/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 586454513, "node_id": "MDU6SXNzdWU1ODY0NTQ1MTM=", "number": 20, "title": "Upgrade to sqlite-utils 2.x", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 0, "created_at": "2020-03-23T19:17:58Z", "updated_at": "2020-03-23T19:22:52Z", "closed_at": "2020-03-23T19:22:52Z", "author_association": "MEMBER", "pull_request": null, "body": "", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/20/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"} {"id": 585850715, "node_id": "MDU6SXNzdWU1ODU4NTA3MTU=", "number": 19, "title": "Enable full-text search for more stuff (like commits, issues and issue_comments)", "user": {"value": 9599, "label": "simonw"}, "state": "closed", "locked": 0, "assignee": null, "milestone": {"value": 5225818, "label": "1.0"}, "comments": 2, "created_at": "2020-03-23T00:19:56Z", "updated_at": "2020-03-23T19:06:39Z", "closed_at": "2020-03-23T19:06:39Z", "author_association": "MEMBER", "pull_request": null, "body": "Currently FTS is only enabled for repos and releases.", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "type": "issue", "active_lock_reason": null, "performed_via_github_app": null, "reactions": "{\"url\": \"https://api.github.com/repos/dogsheep/github-to-sqlite/issues/19/reactions\", \"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "draft": null, "state_reason": "completed"}