home / github

Menu
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

9 rows where issue = 519613116

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: created_at (date), updated_at (date)

id ▼ html_url issue_url node_id user created_at updated_at author_association body reactions issue performed_via_github_app
551349022 https://github.com/simonw/datasette/issues/617#issuecomment-551349022 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MTM0OTAyMg== simonw 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} Refactor TableView.data() method 519613116  
551349770 https://github.com/simonw/datasette/issues/617#issuecomment-551349770 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MTM0OTc3MA== simonw 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} Refactor TableView.data() method 519613116  
551349885 https://github.com/simonw/datasette/issues/617#issuecomment-551349885 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MTM0OTg4NQ== simonw 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} Refactor TableView.data() method 519613116  
552141417 https://github.com/simonw/datasette/issues/617#issuecomment-552141417 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MjE0MTQxNw== simonw 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} Refactor TableView.data() method 519613116  
552253893 https://github.com/simonw/datasette/issues/617#issuecomment-552253893 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MjI1Mzg5Mw== simonw 9599 2019-11-11T00:46:42Z 2021-12-18T01:41:47Z OWNER 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. Code that fits this pattern: * 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)` * 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 * The `_through=` code, see #621 for details * The code that deals with `?_search=` FTS The 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. [UPDATE December 2021 - this comment became the basis for a new `filters_from_request` plugin hook, see also #473] {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Refactor TableView.data() method 519613116  
552254238 https://github.com/simonw/datasette/issues/617#issuecomment-552254238 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MjI1NDIzOA== simonw 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} Refactor TableView.data() method 519613116  
552254753 https://github.com/simonw/datasette/issues/617#issuecomment-552254753 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1MjI1NDc1Mw== simonw 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} Refactor TableView.data() method 519613116  
555111571 https://github.com/simonw/datasette/issues/617#issuecomment-555111571 https://api.github.com/repos/simonw/datasette/issues/617 MDEyOklzc3VlQ29tbWVudDU1NTExMTU3MQ== simonw 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} Refactor TableView.data() method 519613116  
991755013 https://github.com/simonw/datasette/issues/617#issuecomment-991755013 https://api.github.com/repos/simonw/datasette/issues/617 IC_kwDOBm6k_c47HPsF simonw 9599 2021-12-11T19:17:11Z 2021-12-11T19:17:11Z OWNER This work is now happening in #1518 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Refactor TableView.data() method 519613116  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 17.688ms · About: simonw/datasette-graphql