home / github

Menu
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

13 rows where issue = 445850934

✎ 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
493781417 https://github.com/simonw/datasette/issues/473#issuecomment-493781417 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5Mzc4MTQxNw== simonw 9599 2019-05-19T18:45:15Z 2019-05-19T18:45:15Z OWNER This expands on the refactoring work from https://github.com/simonw/datasette/commit/6da567dda953c7ac0e5500f17d8e220467a3499e {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
496337533 https://github.com/simonw/datasette/issues/473#issuecomment-496337533 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5NjMzNzUzMw== simonw 9599 2019-05-28T01:59:19Z 2019-05-28T01:59:19Z OWNER It would be nice if this plugin was passed the current database/table so it can decide to enable new filters only for specific tables. This will require a bit of refactoring because the filters list is static at the moment - it would instead have to be returned by a function that runs when the table view is rendered. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
496338533 https://github.com/simonw/datasette/issues/473#issuecomment-496338533 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5NjMzODUzMw== simonw 9599 2019-05-28T02:05:39Z 2019-05-28T02:05:39Z OWNER I wonder if this is the right hook? The more likely case is that we need a hook that registers a new type of lookup entirely - `?_spatial_within={geojson}` for example. These aren't necessarily attached to a specific column and may have entirely custom syntax - but they still need to be able to influence the query (like the `_where=` clause does) and the human-readable description of the page. Is there a strong case for supporting both custom filter plugins AND custom table where plugins, or could those where plugins cover both bases? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
496338666 https://github.com/simonw/datasette/issues/473#issuecomment-496338666 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5NjMzODY2Ng== simonw 9599 2019-05-28T02:06:23Z 2019-05-28T02:06:23Z OWNER I'm having trouble coming up with interesting column-based filters which don't make sense to ship as default behaviour. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
496338808 https://github.com/simonw/datasette/issues/473#issuecomment-496338808 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5NjMzODgwOA== simonw 9599 2019-05-28T02:07:23Z 2019-05-28T02:07:23Z OWNER Assuming I do go ahead with this plugin hook, the existing `InFilter` makes for a nice simple example that illustrates the two key methods: `.where_clause()` and `.human_clause()`: ```python class InFilter(Filter): key = "in" display = "in" def split_value(self, value): if value.startswith("["): return json.loads(value) else: return [v.strip() for v in value.split(",")] def where_clause(self, table, column, value, param_counter): values = self.split_value(value) params = [":p{}".format(param_counter + i) for i in range(len(values))] sql = "{} in ({})".format(escape_sqlite(column), ", ".join(params)) return sql, values def human_clause(self, column, value): return "{} in {}".format(column, json.dumps(self.split_value(value))) ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
496339574 https://github.com/simonw/datasette/issues/473#issuecomment-496339574 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5NjMzOTU3NA== simonw 9599 2019-05-28T02:12:13Z 2019-05-28T02:13:07Z OWNER Here's an older version of what that custom table filtering plugin might look like: https://github.com/simonw/datasette/commit/5116c4ec8aed5091e1f75415424b80f613518dc6 ```python from datasette.utils import TableFilter @hookimpl def table_filter(): async def inner(view, name, table, request): extra_human_descriptions = [] where_clauses = [] params = {} # ... build those things here return TableFilter( human_description_extras=extra_human_descriptions, where_clauses=where_clauses, params=params, ) return inner ``` I built this for the https://github.com/simonw/russian-ira-facebook-ads-datasette project. It's pretty neat. Maybe I should go with that? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
496339819 https://github.com/simonw/datasette/issues/473#issuecomment-496339819 https://api.github.com/repos/simonw/datasette/issues/473 MDEyOklzc3VlQ29tbWVudDQ5NjMzOTgxOQ== simonw 9599 2019-05-28T02:13:44Z 2019-05-28T02:13:44Z OWNER I'm leaning towards supporting both hooks. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
996267817 https://github.com/simonw/datasette/issues/473#issuecomment-996267817 https://api.github.com/repos/simonw/datasette/issues/473 IC_kwDOBm6k_c47Ydcp simonw 9599 2021-12-16T23:17:52Z 2021-12-16T23:19:00Z OWNER I revisited this idea in #1518 and came up with a slightly different name and design for the hook: ```python @hookspec def filters_from_request(request, database, table, datasette): """ Return FilterArguments( where_clauses=[str, str, str], params={}, human_descriptions=[str, str, str], extra_context={} ) based on the request""" ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
996275108 https://github.com/simonw/datasette/issues/473#issuecomment-996275108 https://api.github.com/repos/simonw/datasette/issues/473 IC_kwDOBm6k_c47YfOk simonw 9599 2021-12-16T23:32:22Z 2021-12-16T23:32:30Z OWNER This filter design can only influence the `where` component of the SQL clause - it's not able to modify the `SELECT` columns or adjust the `ORDER BY` or `OFFSET LIMIT` parts. I think that's OK. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
996286199 https://github.com/simonw/datasette/issues/473#issuecomment-996286199 https://api.github.com/repos/simonw/datasette/issues/473 IC_kwDOBm6k_c47Yh73 simonw 9599 2021-12-17T00:00:22Z 2021-12-17T00:00:22Z OWNER Documentation for that hook in the PR branch: https://github.com/simonw/datasette/blob/54e9b3972f277431a001e685f78e5dd6403a6d8d/docs/plugin_hooks.rst#filters_from_requestrequest-database-table-datasette {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
996345233 https://github.com/simonw/datasette/issues/473#issuecomment-996345233 https://api.github.com/repos/simonw/datasette/issues/473 IC_kwDOBm6k_c47YwWR simonw 9599 2021-12-17T01:20:31Z 2021-12-17T18:13:01Z OWNER I could use this hook to add table filtering on a map to the existing `datasette-leaflet-freedraw` plugin. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
996484551 https://github.com/simonw/datasette/issues/473#issuecomment-996484551 https://api.github.com/repos/simonw/datasette/issues/473 IC_kwDOBm6k_c47ZSXH simonw 9599 2021-12-17T07:02:21Z 2021-12-17T07:04:23Z OWNER The one slightly weird thing about this hook is how it adds `extra_context` without an obvious way for plugins to add extra HTML to the templates based on that context. Maybe I need the proposed mechanism from - #1191 Which has an in-progress PR: - #1204 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  
996958442 https://github.com/simonw/datasette/issues/473#issuecomment-996958442 https://api.github.com/repos/simonw/datasette/issues/473 IC_kwDOBm6k_c47bGDq simonw 9599 2021-12-17T18:59:27Z 2021-12-17T18:59:27Z OWNER I'm happy with how the prototype that used this plugin in `datasette-leaflet-freedraw` turned out: https://github.com/simonw/datasette-leaflet-freedraw/blob/e8a16a0fe90656b8d655c02881d23a2b9833281d/datasette_leaflet_freedraw/__init__.py {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Plugin hook: filters_from_request 445850934  

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 64.611ms · About: simonw/datasette-graphql