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/issues/617#issuecomment-555111571,https://api.github.com/repos/simonw/datasette/issues/617,555111571,MDEyOklzc3VlQ29tbWVudDU1NTExMTU3MQ==,9599,2019-11-18T17:04:56Z,2019-11-18T17:04:56Z,OWNER,I made some comments on an annotated version of this method a few days ago: https://gist.github.com/simonw/66aca058195d77bae5f614ef73352eb5,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116, https://github.com/simonw/datasette/issues/617#issuecomment-552254753,https://api.github.com/repos/simonw/datasette/issues/617,552254753,MDEyOklzc3VlQ29tbWVudDU1MjI1NDc1Mw==,9599,2019-11-11T00:54:51Z,2019-11-11T00:54:51Z,OWNER,"That `table_filter()` plugin hook should probably be renamed though, since it could now apply to the regular custom SQL view as well as the table view.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116, https://github.com/simonw/datasette/issues/617#issuecomment-551349770,https://api.github.com/repos/simonw/datasette/issues/617,551349770,MDEyOklzc3VlQ29tbWVudDU1MTM0OTc3MA==,9599,2019-11-08T01:59:20Z,2019-11-11T00:53:42Z,OWNER,"This is what the code does: - Check if the table name is actually a canned query - if so execute that - Check for other parameters that need to be redirected - e.g. `?_filter_column=x` or `_sort_by_desc=y` - Turn the table + querystring parameters (`?foo=bar`, `?bar__contains=baz`, `?_where=`, `_sort=` etc) into a SQL query - Figure out pagination (apply limit, and handle [keyset pagination](https://simonwillison.net/2018/Oct/4/datasette-ideas/#Keyset_pagination)) - Calculate suggested facets against the non-paginated version of the query - Calculate facet counts against the non-paginated version of the query - Execute the query - Expand any foreign key references from the results","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116, https://github.com/simonw/datasette/issues/617#issuecomment-552254238,https://api.github.com/repos/simonw/datasette/issues/617,552254238,MDEyOklzc3VlQ29tbWVudDU1MjI1NDIzOA==,9599,2019-11-11T00:49:57Z,2019-11-11T00:51:35Z,OWNER,I experimented with a `table_filter()` plugin hook a while ago which looks very much like the abstraction I'm now talking about here: https://github.com/simonw/datasette/commit/5116c4ec8aed5091e1f75415424b80f613518dc6 - more details here: https://simonwillison.net/2018/Aug/6/russian-facebook-ads/#Weird_implementation_details_106,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116, https://github.com/simonw/datasette/issues/617#issuecomment-552141417,https://api.github.com/repos/simonw/datasette/issues/617,552141417,MDEyOklzc3VlQ29tbWVudDU1MjE0MTQxNw==,9599,2019-11-09T21:58:40Z,2019-11-09T21:58:40Z,OWNER,"The function that builds the query could go in a new `datasette.utils.sql` module. I can design it to only take simple arguments (the table name, list of columns, list of primary keys and a list of key/value tuples from the query string). This will make it really easy to test (and means it won't need to be async since it won't have to use queries to retrieve those values).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116, https://github.com/simonw/datasette/issues/617#issuecomment-551349885,https://api.github.com/repos/simonw/datasette/issues/617,551349885,MDEyOklzc3VlQ29tbWVudDU1MTM0OTg4NQ==,9599,2019-11-08T01:59:43Z,2019-11-08T02:00:52Z,OWNER,"A clean starting point would be to refactor out the ""take a table and a bunch of querystring parameters and turn them into a SQL query"" portion. Added bonus to this: I've long wanted to be able to apply the various trimmings of the TableView (like faceting and foreign key expansion) to other arbitrary SQL queries. Splitting out the code that builds the SELECT query will go a long way to making that a reality.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116, https://github.com/simonw/datasette/issues/617#issuecomment-551349022,https://api.github.com/repos/simonw/datasette/issues/617,551349022,MDEyOklzc3VlQ29tbWVudDU1MTM0OTAyMg==,9599,2019-11-08T01:56:28Z,2019-11-08T01:56:28Z,OWNER,"Here's the current monstrosity: https://github.com/simonw/datasette/blob/f9c146b893856a48afa810ebcce1714f30d0d3a2/datasette/views/table.py#L210-L780","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",519613116,