html_url,issue_url,id,node_id,user,user_label,created_at,updated_at,author_association,body,reactions,issue,issue_label,performed_via_github_app https://github.com/simonw/datasette/issues/131#issuecomment-345526171,https://api.github.com/repos/simonw/datasette/issues/131,345526171,MDEyOklzc3VlQ29tbWVudDM0NTUyNjE3MQ==,9599,simonw,2017-11-19T15:44:30Z,2017-11-19T15:44:30Z,OWNER,"Relevant SQLite docs: * https://sqlite.org/fts5.html * https://www.sqlite.org/fts3.html","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275166669,UI support for running FTS searches, https://github.com/simonw/datasette/issues/131#issuecomment-345526517,https://api.github.com/repos/simonw/datasette/issues/131,345526517,MDEyOklzc3VlQ29tbWVudDM0NTUyNjUxNw==,9599,simonw,2017-11-19T15:48:28Z,2017-11-19T15:48:28Z,OWNER,"Since SQLite supports column specifications in the MATCH body itself, there's no need to provide a separate mechanism for specifying columns in the query string: https://sqlite.org/fts5.html#fts5_column_filters","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275166669,UI support for running FTS searches, https://github.com/simonw/datasette/issues/131#issuecomment-345533274,https://api.github.com/repos/simonw/datasette/issues/131,345533274,MDEyOklzc3VlQ29tbWVudDM0NTUzMzI3NA==,9599,simonw,2017-11-19T17:17:37Z,2017-11-19T17:18:05Z,OWNER,"Demo: https://sf-trees.now.sh/sf-trees-ebc2ad9/Street_Tree_List?_search=grove+st ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275166669,UI support for running FTS searches, https://github.com/simonw/datasette/issues/134#issuecomment-345537268,https://api.github.com/repos/simonw/datasette/issues/134,345537268,MDEyOklzc3VlQ29tbWVudDM0NTUzNzI2OA==,9599,simonw,2017-11-19T18:10:48Z,2017-11-19T18:10:48Z,OWNER,Dupe of #127 ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275176094,Filtered table view should show a count, https://github.com/simonw/datasette/issues/44#issuecomment-345537315,https://api.github.com/repos/simonw/datasette/issues/44,345537315,MDEyOklzc3VlQ29tbWVudDM0NTUzNzMxNQ==,9599,simonw,2017-11-19T18:11:27Z,2017-11-19T18:11:27Z,OWNER,This would enable faceted search - moving it to the search milestone.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",269731374,?_group_count=country - return counts by specific column(s), https://github.com/simonw/datasette/issues/127#issuecomment-345538016,https://api.github.com/repos/simonw/datasette/issues/127,345538016,MDEyOklzc3VlQ29tbWVudDM0NTUzODAxNg==,9599,simonw,2017-11-19T18:22:45Z,2017-11-19T18:22:45Z,OWNER,I implemented a basic version of this in f59c840e7db8870afcdeba7a53bdea07bb674334 for custom SQL.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275135719,"Filtered tables should show count of all matching rows, if fast enough", https://github.com/simonw/datasette/issues/122#issuecomment-345552358,https://api.github.com/repos/simonw/datasette/issues/122,345552358,MDEyOklzc3VlQ29tbWVudDM0NTU1MjM1OA==,9599,simonw,2017-11-19T21:45:38Z,2017-12-05T19:09:52Z,OWNER,"For the overall shape of the rows: `?_shape=lists` (default), `?_shape=objects`, `?_shape=object` (primary key as object keys) For getting back extra keys: `?_extras=schema,query,timing` For expanding columns: `?_expand_all=1` Or `?_expand=qSpecies&_expand=qCaretaker` The template view will only be allowed to work with data it can request using extra options. That leaves one sighted nasty edge-case: the default view will expand all columns, but the `.json` view of it won't? I think that's OK. The default view won't include the extras used by the template to render the page either.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275092453,"Redesign JSON output, ditch jsono, offer variants controlled by parameter instead", https://github.com/simonw/datasette/issues/122#issuecomment-345552440,https://api.github.com/repos/simonw/datasette/issues/122,345552440,MDEyOklzc3VlQ29tbWVudDM0NTU1MjQ0MA==,9599,simonw,2017-11-19T21:46:43Z,2017-11-19T21:46:43Z,OWNER,"This calls for refactoring the code so the table view, the row view and the custom SQL view share as much logic as possible.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275092453,"Redesign JSON output, ditch jsono, offer variants controlled by parameter instead", https://github.com/simonw/datasette/issues/122#issuecomment-345552500,https://api.github.com/repos/simonw/datasette/issues/122,345552500,MDEyOklzc3VlQ29tbWVudDM0NTU1MjUwMA==,9599,simonw,2017-11-19T21:47:27Z,2017-11-19T21:47:27Z,OWNER,"To start with, I could just ditch the .jsono in favour of the new _shape argument.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275092453,"Redesign JSON output, ditch jsono, offer variants controlled by parameter instead", https://github.com/simonw/datasette/issues/86#issuecomment-345559864,https://api.github.com/repos/simonw/datasette/issues/86,345559864,MDEyOklzc3VlQ29tbWVudDM0NTU1OTg2NA==,9599,simonw,2017-11-19T23:35:48Z,2017-11-19T23:35:48Z,OWNER,"I need a nicer abstraction around the concept of filters. It needs to be able to: - convert querystring parameters into filters - convert filters into a querystring - iterate through currently applied filters - convert selected filters into a human description (e.g. for a title) - expand filters that involve a foreign key - add filters - remove filters - define different types of filters It should replace my current `build_where_clauses` implementation, in particular this bit: https://github.com/simonw/datasette/blob/a5881e105a02830d26f07e98177248d5910893da/datasette/utils.py#L38-L56","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273703829,Filter UI on table page, https://github.com/simonw/datasette/issues/44#issuecomment-345601103,https://api.github.com/repos/simonw/datasette/issues/44,345601103,MDEyOklzc3VlQ29tbWVudDM0NTYwMTEwMw==,9599,simonw,2017-11-20T06:13:35Z,2017-11-20T06:13:35Z,OWNER,"Some demos: Single column: https://sf-trees-flat.now.sh/sf-trees-flat-ba738ce/Street_Tree_List?_group_count=qSpecies Multi column: https://sf-trees-flat.now.sh/sf-trees-flat-ba738ce/Street_Tree_List?_group_count=qLegalStatus&_group_count=qSpecies ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",269731374,?_group_count=country - return counts by specific column(s), https://github.com/simonw/datasette/issues/133#issuecomment-345601870,https://api.github.com/repos/simonw/datasette/issues/133,345601870,MDEyOklzc3VlQ29tbWVudDM0NTYwMTg3MA==,9599,simonw,2017-11-20T06:18:53Z,2017-11-20T06:18:53Z,OWNER,This may be tackled by the filters work happening in #86,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275176006,"If view is filtered, search should apply within those filtered rows", https://github.com/simonw/datasette/issues/137#issuecomment-345750135,https://api.github.com/repos/simonw/datasette/issues/137,345750135,MDEyOklzc3VlQ29tbWVudDM0NTc1MDEzNQ==,9599,simonw,2017-11-20T16:30:56Z,2018-07-10T17:53:13Z,OWNER,"One possible route: introduce prefixes eg `?a.Trees.age__gt=5&a.Trees._group_count=qSpecies&b.Trees.age__gt=10&b.Trees._group_count=qSpecies` ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275415799,Ability to combine multiple SQL queries on a single graph, https://github.com/simonw/datasette/issues/129#issuecomment-345793887,https://api.github.com/repos/simonw/datasette/issues/129,345793887,MDEyOklzc3VlQ29tbWVudDM0NTc5Mzg4Nw==,9599,simonw,2017-11-20T19:00:30Z,2017-11-20T19:00:30Z,OWNER,"Need to hide these from the index summary page as well: ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275164558,Hide FTS-created tables by default on the database index page, https://github.com/simonw/datasette/issues/105#issuecomment-345809808,https://api.github.com/repos/simonw/datasette/issues/105,345809808,MDEyOklzc3VlQ29tbWVudDM0NTgwOTgwOA==,9599,simonw,2017-11-20T19:50:53Z,2017-11-20T19:50:53Z,OWNER,"OK, https://github.com/openclimatedata/global-carbon-budget/blob/master/datapackage.json really does look like it covers all of the bases I need for #138. Closing this ticket in favour of that new one.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",274314940,Consider data-package as a format for metadata, https://github.com/simonw/datasette/issues/42#issuecomment-345810031,https://api.github.com/repos/simonw/datasette/issues/42,345810031,MDEyOklzc3VlQ29tbWVudDM0NTgxMDAzMQ==,9599,simonw,2017-11-20T19:51:29Z,2017-11-20T19:51:29Z,OWNER,See also #138,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268591332,Homepage UI for editing metadata file, https://github.com/simonw/datasette/issues/14#issuecomment-345893877,https://api.github.com/repos/simonw/datasette/issues/14,345893877,MDEyOklzc3VlQ29tbWVudDM0NTg5Mzg3Nw==,9599,simonw,2017-11-21T02:11:27Z,2017-11-21T02:11:27Z,OWNER,http://setuptools.readthedocs.io/en/latest/setuptools.html#dynamic-discovery-of-services-and-plugins Is pretty good ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",267707940,Datasette Plugins, https://github.com/simonw/datasette/issues/141#issuecomment-346157542,https://api.github.com/repos/simonw/datasette/issues/141,346157542,MDEyOklzc3VlQ29tbWVudDM0NjE1NzU0Mg==,9599,simonw,2017-11-21T20:53:47Z,2017-11-21T20:53:47Z,OWNER,"I think a copy is the right thing to do here - it will be cleaned up when the temp directory is removed. The hard link thing was always intended to save space, but if we can't do a hard link I don't see any harm in a temporary file copy.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275814941,datasette publish can fail if /tmp is on a different device, https://github.com/simonw/datasette/issues/90#issuecomment-346161985,https://api.github.com/repos/simonw/datasette/issues/90,346161985,MDEyOklzc3VlQ29tbWVudDM0NjE2MTk4NQ==,9599,simonw,2017-11-21T21:10:22Z,2017-11-21T21:10:22Z,OWNER,"Woohoo! I've found one tiny issue: right now, the following doesn't work: datasette publish heroku ../demo-databses/google-trends.db It results in this error in the Heroku logs: 2017-11-21T21:03:29.210511+00:00 app[web.1]: Usage: datasette serve [OPTIONS] [FILES]... 2017-11-21T21:03:29.210524+00:00 app[web.1]: 2017-11-21T21:03:29.210555+00:00 app[web.1]: Error: Invalid value for ""files"": Path ""../demo-databses/google-trends.db"" does not exist. The command works fine if you run it in the same directory as the database file you are publishing.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273846123,datasette publish heroku, https://github.com/simonw/datasette/issues/90#issuecomment-346163513,https://api.github.com/repos/simonw/datasette/issues/90,346163513,MDEyOklzc3VlQ29tbWVudDM0NjE2MzUxMw==,9599,simonw,2017-11-21T21:16:16Z,2017-11-21T21:16:16Z,OWNER,"The reason relative paths work for `publish now` is that the `make_dockerfile()` function is called by passing the file names, not the full file paths: https://github.com/simonw/datasette/blob/e47117ce1d15f11246a3120aa49de70205713d05/datasette/utils.py#L166 Clearly the correct thing to do here is for us to refactor the shared code between heroku/package/now.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273846123,datasette publish heroku, https://github.com/simonw/datasette/issues/142#issuecomment-346217739,https://api.github.com/repos/simonw/datasette/issues/142,346217739,MDEyOklzc3VlQ29tbWVudDM0NjIxNzczOQ==,9599,simonw,2017-11-22T01:45:30Z,2017-11-22T01:45:30Z,OWNER,Might be nice to have a --no-limits option that disables time and maximum row count limits.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275917760,Show extra instructions with the interrupted, https://github.com/simonw/datasette/issues/144#issuecomment-346405660,https://api.github.com/repos/simonw/datasette/issues/144,346405660,MDEyOklzc3VlQ29tbWVudDM0NjQwNTY2MA==,9599,simonw,2017-11-22T16:38:05Z,2017-11-22T16:38:05Z,OWNER,"I have a solution for FTS already, but I'm interested in apsw as a mechanism for allowing custom virtual tables to be written in Python (pysqlite only lets you write custom functions) Not having PyPI support is pretty tough though. I'm planning a plugin/extension system which would be ideal for things like an optional apsw mode, but that's a lot harder if apsw isn't in PyPI.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",276091279,apsw as alternative sqlite3 binding (for full text search), https://github.com/simonw/datasette/issues/14#issuecomment-346406009,https://api.github.com/repos/simonw/datasette/issues/14,346406009,MDEyOklzc3VlQ29tbWVudDM0NjQwNjAwOQ==,9599,simonw,2017-11-22T16:39:08Z,2017-11-22T16:39:08Z,OWNER,"Oh thanks, that definitely looks like an interesting option.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",267707940,Datasette Plugins, https://github.com/simonw/datasette/issues/129#issuecomment-346463342,https://api.github.com/repos/simonw/datasette/issues/129,346463342,MDEyOklzc3VlQ29tbWVudDM0NjQ2MzM0Mg==,9599,simonw,2017-11-22T20:22:02Z,2017-11-22T20:22:02Z,OWNER,"On the index page: On the database index page: After clicking that link: ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275164558,Hide FTS-created tables by default on the database index page, https://github.com/simonw/datasette/issues/86#issuecomment-346530498,https://api.github.com/repos/simonw/datasette/issues/86,346530498,MDEyOklzc3VlQ29tbWVudDM0NjUzMDQ5OA==,9599,simonw,2017-11-23T04:35:07Z,2017-11-23T04:35:07Z,OWNER,"Here's where I am now. Needs a bit of UI tidy up and it will be good to release: ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273703829,Filter UI on table page, https://github.com/simonw/datasette/issues/146#issuecomment-346682905,https://api.github.com/repos/simonw/datasette/issues/146,346682905,MDEyOklzc3VlQ29tbWVudDM0NjY4MjkwNQ==,9599,simonw,2017-11-23T18:55:08Z,2017-11-23T18:55:08Z,OWNER," ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",276455748,datasette publish gcloud, https://github.com/simonw/datasette/issues/86#issuecomment-346691243,https://api.github.com/repos/simonw/datasette/issues/86,346691243,MDEyOklzc3VlQ29tbWVudDM0NjY5MTI0Mw==,9599,simonw,2017-11-23T20:07:15Z,2017-11-23T20:07:15Z,OWNER," ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273703829,Filter UI on table page, https://github.com/simonw/datasette/issues/86#issuecomment-346694211,https://api.github.com/repos/simonw/datasette/issues/86,346694211,MDEyOklzc3VlQ29tbWVudDM0NjY5NDIxMQ==,9599,simonw,2017-11-23T20:34:32Z,2017-11-23T20:34:32Z,OWNER,And with ef3eacf622e69723d48ab1ad597645770a7361db I'm ready to call this one done.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",273703829,Filter UI on table page, https://github.com/simonw/datasette/issues/132#issuecomment-346701751,https://api.github.com/repos/simonw/datasette/issues/132,346701751,MDEyOklzc3VlQ29tbWVudDM0NjcwMTc1MQ==,9599,simonw,2017-11-23T21:51:51Z,2017-11-23T21:51:51Z,OWNER," ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",275175929,Row view is not currently expanding foreign keys, https://github.com/simonw/datasette/issues/133#issuecomment-346705879,https://api.github.com/repos/simonw/datasette/issues/133,346705879,MDEyOklzc3VlQ29tbWVudDM0NjcwNTg3OQ==,9599,simonw,2017-11-23T22:43:42Z,2017-11-24T22:07:46Z,OWNER,"Easiest way to do this will be to move it into the same `