html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app https://github.com/simonw/datasette/pull/104#issuecomment-344710204,https://api.github.com/repos/simonw/datasette/issues/104,344710204,MDEyOklzc3VlQ29tbWVudDM0NDcxMDIwNA==,21148,2017-11-15T19:57:50Z,2017-11-15T19:57:50Z,CONTRIBUTOR,"A first basic stab at making this work, just to prove the approach. Right now this requires [a Heroku CLI plugin](https://github.com/heroku/heroku-builds), which seems pretty unreasonable. I think this can be replaced with direct API calls, which could clean up a lot of things. But I wanted to prove it worked first, and it does.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",274284246, https://github.com/simonw/datasette/issues/90#issuecomment-344687328,https://api.github.com/repos/simonw/datasette/issues/90,344687328,MDEyOklzc3VlQ29tbWVudDM0NDY4NzMyOA==,9599,2017-11-15T18:39:14Z,2017-11-15T18:39:49Z,OWNER,"By default the command could use a temporary directory that gets cleaned up after the deploy, but we could allow users to opt in to keeping the generated directory like so: datasette publish heroku mydb.py -d ~/dev/my-heroku-app This would create the my-heroku-app folder so you can later execute further git deploys from there.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273846123, https://github.com/simonw/datasette/issues/90#issuecomment-344686483,https://api.github.com/repos/simonw/datasette/issues/90,344686483,MDEyOklzc3VlQ29tbWVudDM0NDY4NjQ4Mw==,9599,2017-11-15T18:36:23Z,2017-11-15T18:36:23Z,OWNER,The “datasette build” command would need to run in a bin/post_compile script eg https://github.com/simonw/simonwillisonblog/blob/cloudflare-ips/bin/post_compile,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273846123, https://github.com/simonw/datasette/issues/90#issuecomment-344680385,https://api.github.com/repos/simonw/datasette/issues/90,344680385,MDEyOklzc3VlQ29tbWVudDM0NDY4MDM4NQ==,9599,2017-11-15T18:14:11Z,2017-11-15T18:14:11Z,OWNER,"Maybe we don’t even need a buildpack... we could create a temporary directory, set up a classic heroku app with the datasette serve command in the Procfile and then git push to deploy.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273846123, https://github.com/simonw/datasette/issues/90#issuecomment-344667202,https://api.github.com/repos/simonw/datasette/issues/90,344667202,MDEyOklzc3VlQ29tbWVudDM0NDY2NzIwMg==,9599,2017-11-15T17:29:38Z,2017-11-15T17:29:38Z,OWNER,@jacobian points out that a buildpack may be a better fit than a Docker container for implementing this: https://twitter.com/jacobian/status/930849058465255424,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273846123, https://github.com/simonw/datasette/issues/85#issuecomment-344657040,https://api.github.com/repos/simonw/datasette/issues/85,344657040,MDEyOklzc3VlQ29tbWVudDM0NDY1NzA0MA==,9599,2017-11-15T16:56:48Z,2017-11-15T16:56:48Z,OWNER,"Since detecting foreign keys that point to a specific table is a bit expensive (you have to call a PRAGMA on every other table) I’m going to add this to the build/inspect stage. Idea: if we detect that the foreign key table only has one other column in it (id, name) AND we know that the id is the primary key, we can add an efficient lookup on the table list view and prefetch a dictionary mapping IDs to their value. Then we can feed that dictionary in as extra tenplate context and use it to render labeled hyperlinks in the corresponding column. This means our build step should also cache which columns are indexed, and add a “label_column” property for tables with an obvious lane column.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273678673, https://github.com/simonw/datasette/issues/101#issuecomment-344597274,https://api.github.com/repos/simonw/datasette/issues/101,344597274,MDEyOklzc3VlQ29tbWVudDM0NDU5NzI3NA==,450244,2017-11-15T13:48:55Z,2017-11-15T13:48:55Z,NONE,This is a duplicate of https://github.com/simonw/datasette/issues/100,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",274161964, https://github.com/simonw/datasette/issues/93#issuecomment-344516406,https://api.github.com/repos/simonw/datasette/issues/93,344516406,MDEyOklzc3VlQ29tbWVudDM0NDUxNjQwNg==,67420,2017-11-15T08:09:41Z,2017-11-15T08:09:41Z,NONE,actually you can use travis to build for linux/macos and [appveyor](https://www.appveyor.com/) to build for windows.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273944952, https://github.com/simonw/datasette/issues/25#issuecomment-344487639,https://api.github.com/repos/simonw/datasette/issues/25,344487639,MDEyOklzc3VlQ29tbWVudDM0NDQ4NzYzOQ==,9599,2017-11-15T05:11:11Z,2017-11-15T05:11:11Z,OWNER,"Since you can already download the database directly, I'm not going to bother with this one.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",267857622, https://github.com/simonw/datasette/pull/94#issuecomment-344472313,https://api.github.com/repos/simonw/datasette/issues/94,344472313,MDEyOklzc3VlQ29tbWVudDM0NDQ3MjMxMw==,9599,2017-11-15T03:08:00Z,2017-11-15T03:08:00Z,OWNER,"Works for me. I'm going to land this. Just one thing: simonw$ docker run --rm -t -i -p 9001:8001 c408e8cfbe40 datasette publish now The publish command requires ""now"" to be installed and configured Follow the instructions at https://zeit.co/now#whats-now Maybe we should have the Docker container install the ""now"" client? Not sure how much size that would add though. I think it's OK without for the moment.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273961179, https://github.com/simonw/datasette/issues/95#issuecomment-344463436,https://api.github.com/repos/simonw/datasette/issues/95,344463436,MDEyOklzc3VlQ29tbWVudDM0NDQ2MzQzNg==,9599,2017-11-15T02:10:10Z,2017-11-15T02:10:10Z,OWNER,"This means clients can ask questions but say ""don't bother if it takes longer than X"" - which is really handy when you're working against unknown databases that might be small or might be enormous.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273998513, https://github.com/simonw/datasette/issues/13#issuecomment-344462608,https://api.github.com/repos/simonw/datasette/issues/13,344462608,MDEyOklzc3VlQ29tbWVudDM0NDQ2MjYwOA==,9599,2017-11-15T02:04:51Z,2017-11-15T02:04:51Z,OWNER,"Fixed in https://github.com/simonw/datasette/commit/8252daa4c14d73b4b69e3f2db4576bb39d73c070 - thanks, @tomdyson!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",267542338, https://github.com/simonw/datasette/pull/89#issuecomment-344462277,https://api.github.com/repos/simonw/datasette/issues/89,344462277,MDEyOklzc3VlQ29tbWVudDM0NDQ2MjI3Nw==,9599,2017-11-15T02:02:52Z,2017-11-15T02:02:52Z,OWNER,"This is exactly what I was after, thanks!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273816720, https://github.com/simonw/datasette/issues/85#issuecomment-344452326,https://api.github.com/repos/simonw/datasette/issues/85,344452326,MDEyOklzc3VlQ29tbWVudDM0NDQ1MjMyNg==,9599,2017-11-15T01:04:38Z,2017-11-15T01:04:38Z,OWNER,This will work well in conjunction with https://github.com/simonw/csvs-to-sqlite/issues/2,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273678673, https://github.com/simonw/datasette/issues/85#issuecomment-344452063,https://api.github.com/repos/simonw/datasette/issues/85,344452063,MDEyOklzc3VlQ29tbWVudDM0NDQ1MjA2Mw==,9599,2017-11-15T01:03:03Z,2017-11-15T01:03:03Z,OWNER,"This can work in reverse too. If you view the row page for something that has foreign keys against it, we can show you “53 items in TABLE link to this” and provide a link to view them all. That count worry could be prohibitively expensive. To counter that, we could run the count query via Ajax and set a strict time limit on it. See #95","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273678673,