{"html_url": "https://github.com/simonw/datasette/issues/85#issuecomment-344452063", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/85", "id": 344452063, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ1MjA2Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T01:03:03Z", "updated_at": "2017-11-15T01:03:03Z", "author_association": "OWNER", "body": "This can work in reverse too. If you view the row page for something that has foreign keys against it, we can show you \u201c53 items in TABLE link to this\u201d and provide a link to view them all.\r\n\r\nThat 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", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273678673, "label": "Detect foreign keys and use them to link HTML pages together"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/85#issuecomment-344452326", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/85", "id": 344452326, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ1MjMyNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T01:04:38Z", "updated_at": "2017-11-15T01:04:38Z", "author_association": "OWNER", "body": "This will work well in conjunction with https://github.com/simonw/csvs-to-sqlite/issues/2", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273678673, "label": "Detect foreign keys and use them to link HTML pages together"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/89#issuecomment-344462277", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/89", "id": 344462277, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ2MjI3Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T02:02:52Z", "updated_at": "2017-11-15T02:02:52Z", "author_association": "OWNER", "body": "This is exactly what I was after, thanks!", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273816720, "label": "SQL syntax highlighting with CodeMirror"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/13#issuecomment-344462608", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/13", "id": 344462608, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ2MjYwOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T02:04:51Z", "updated_at": "2017-11-15T02:04:51Z", "author_association": "OWNER", "body": "Fixed in https://github.com/simonw/datasette/commit/8252daa4c14d73b4b69e3f2db4576bb39d73c070 - thanks, @tomdyson!", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 267542338, "label": "Add a syntax highlighting SQL editor"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/95#issuecomment-344463436", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/95", "id": 344463436, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ2MzQzNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T02:10:10Z", "updated_at": "2017-11-15T02:10:10Z", "author_association": "OWNER", "body": "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.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273998513, "label": "Allow shorter time limits to be set using a ?_sql_time_limit_ms =20 query string limit"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/94#issuecomment-344472313", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/94", "id": 344472313, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ3MjMxMw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T03:08:00Z", "updated_at": "2017-11-15T03:08:00Z", "author_association": "OWNER", "body": "Works for me. I'm going to land this.\r\n\r\nJust one thing:\r\n\r\n simonw$ docker run --rm -t -i -p 9001:8001 c408e8cfbe40 datasette publish now\r\n The publish command requires \"now\" to be installed and configured \r\n Follow the instructions at https://zeit.co/now#whats-now\r\n\r\nMaybe 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.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273961179, "label": "Initial add simple prod ready Dockerfile refs #57"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/25#issuecomment-344487639", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/25", "id": 344487639, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDQ4NzYzOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T05:11:11Z", "updated_at": "2017-11-15T05:11:11Z", "author_association": "OWNER", "body": "Since you can already download the database directly, I'm not going to bother with this one.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 267857622, "label": "Endpoint that returns SQL ready to be piped into DB"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/101#issuecomment-344597274", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/101", "id": 344597274, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDU5NzI3NA==", "user": {"value": 450244, "label": "eaubin"}, "created_at": "2017-11-15T13:48:55Z", "updated_at": "2017-11-15T13:48:55Z", "author_association": "NONE", "body": "This is a duplicate of https://github.com/simonw/datasette/issues/100", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 274161964, "label": "TemplateAssertionError: no filter named 'tojson'"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/93#issuecomment-344516406", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/93", "id": 344516406, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDUxNjQwNg==", "user": {"value": 67420, "label": "atomotic"}, "created_at": "2017-11-15T08:09:41Z", "updated_at": "2017-11-15T08:09:41Z", "author_association": "NONE", "body": "actually you can use travis to build for linux/macos and [appveyor](https://www.appveyor.com/) to build for windows.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273944952, "label": "Package as standalone binary"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/85#issuecomment-344657040", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/85", "id": 344657040, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDY1NzA0MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T16:56:48Z", "updated_at": "2017-11-15T16:56:48Z", "author_association": "OWNER", "body": "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\u2019m going to add this to the build/inspect stage.\r\n\r\nIdea: 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.\r\n\r\nThis means our build step should also cache which columns are indexed, and add a \u201clabel_column\u201d property for tables with an obvious lane column.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273678673, "label": "Detect foreign keys and use them to link HTML pages together"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/90#issuecomment-344667202", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/90", "id": 344667202, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDY2NzIwMg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T17:29:38Z", "updated_at": "2017-11-15T17:29:38Z", "author_association": "OWNER", "body": "@jacobian points out that a buildpack may be a better fit than a Docker container for implementing this: https://twitter.com/jacobian/status/930849058465255424", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273846123, "label": "datasette publish heroku"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/90#issuecomment-344680385", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/90", "id": 344680385, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDY4MDM4NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T18:14:11Z", "updated_at": "2017-11-15T18:14:11Z", "author_association": "OWNER", "body": "Maybe we don\u2019t 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.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273846123, "label": "datasette publish heroku"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/90#issuecomment-344686483", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/90", "id": 344686483, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDY4NjQ4Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T18:36:23Z", "updated_at": "2017-11-15T18:36:23Z", "author_association": "OWNER", "body": "The \u201cdatasette build\u201d command would need to run in a bin/post_compile script eg https://github.com/simonw/simonwillisonblog/blob/cloudflare-ips/bin/post_compile", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273846123, "label": "datasette publish heroku"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/90#issuecomment-344687328", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/90", "id": 344687328, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDY4NzMyOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2017-11-15T18:39:14Z", "updated_at": "2017-11-15T18:39:49Z", "author_association": "OWNER", "body": "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:\r\n\r\n datasette publish heroku mydb.py -d ~/dev/my-heroku-app\r\n\r\nThis would create the my-heroku-app folder so you can later execute further git deploys from there.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 273846123, "label": "datasette publish heroku"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/104#issuecomment-344710204", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/104", "id": 344710204, "node_id": "MDEyOklzc3VlQ29tbWVudDM0NDcxMDIwNA==", "user": {"value": 21148, "label": "jacobian"}, "created_at": "2017-11-15T19:57:50Z", "updated_at": "2017-11-15T19:57:50Z", "author_association": "CONTRIBUTOR", "body": "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.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 274284246, "label": "[WIP] Add publish to heroku support"}, "performed_via_github_app": null}