{"html_url": "https://github.com/simonw/datasette/issues/617#issuecomment-552253893", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/617", "id": 552253893, "node_id": "MDEyOklzc3VlQ29tbWVudDU1MjI1Mzg5Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-11T00:46:42Z", "updated_at": "2021-12-18T01:41:47Z", "author_association": "OWNER", "body": "As noted in https://github.com/simonw/datasette/issues/621#issuecomment-552253208 a common pattern in this method is blocks of code that append new items to the `where_clauses`, `params` and `extra_human_descriptions` arrays. This is a useful refactoring opportunity.\r\n\r\nCode that fits this pattern:\r\n\r\n* The code that builds based on the filters: `where_clauses, params = filters.build_where_clauses(table)` and `human_description_en = filters.human_description_en(extra=extra_human_descriptions)`\r\n* Code that handles `?_where=`: `where_clauses.extend(request.args[\"_where\"])` - though note that this also appends to a `extra_wheres_for_ui` array which nothing else uses\r\n* The `_through=` code, see #621 for details\r\n* The code that deals with `?_search=` FTS\r\n\r\nThe keyset pagination code modifies `where_clauses` and `params` too, but I don't think it's quite going to work with the same abstraction that would cover the above examples.\r\n\r\n[UPDATE December 2021 - this comment became the basis for a new `filters_from_request` plugin hook, see also #473]", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 519613116, "label": "Refactor TableView.data() method"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/617#issuecomment-552254238", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/617", "id": 552254238, "node_id": "MDEyOklzc3VlQ29tbWVudDU1MjI1NDIzOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-11T00:49:57Z", "updated_at": "2019-11-11T00:51:35Z", "author_association": "OWNER", "body": "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", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 519613116, "label": "Refactor TableView.data() method"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/617#issuecomment-552254753", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/617", "id": 552254753, "node_id": "MDEyOklzc3VlQ29tbWVudDU1MjI1NDc1Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-11T00:54:51Z", "updated_at": "2019-11-11T00:54:51Z", "author_association": "OWNER", "body": "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.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 519613116, "label": "Refactor TableView.data() method"}, "performed_via_github_app": null}