home / github

Menu
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

7 rows where issue = 1656432059

✎ 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
1498279469 https://github.com/simonw/datasette/pull/2053#issuecomment-1498279469 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5ZTe4t simonw 9599 2023-04-05T23:28:53Z 2023-04-05T23:28:53Z OWNER Table errors page currently does this: ```json { "ok": false, "error": "no such column: blah", "status": 400, "title": "Invalid SQL" } ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  
1563285150 https://github.com/simonw/datasette/pull/2053#issuecomment-1563285150 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5dLdae simonw 9599 2023-05-25T17:48:50Z 2023-05-25T17:49:52Z OWNER Uncommitted experimental code: ```diff diff --git a/datasette/views/database.py b/datasette/views/database.py index 455ebd1f..85775433 100644 --- a/datasette/views/database.py +++ b/datasette/views/database.py @@ -909,12 +909,13 @@ async def query_view( elif format_ in datasette.renderers.keys(): # Dispatch request to the correct output format renderer # (CSV is not handled here due to streaming) + print(data) result = call_with_supported_arguments( datasette.renderers[format_][0], datasette=datasette, - columns=columns, - rows=rows, - sql=sql, + columns=data["rows"][0].keys(), + rows=data["rows"], + sql='', query_name=None, database=db.name, table=None, @@ -923,7 +924,7 @@ async def query_view( # These will be deprecated in Datasette 1.0: args=request.args, data={ - "rows": rows, + "rows": data["rows"], }, # TODO what should this be? ) result = await await_me_maybe(result) diff --git a/docs/index.rst b/docs/index.rst index 5a9cc7ed..254ed3da 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -57,6 +57,7 @@ Contents settings introspection custom_templates + template_context plugins writing_plugins plugin_hooks ``` Where `docs/template_context.rst` looked like this: ```rst .. _template_context: Template context ================ .. currentmodule:: datasette.context This page describes the variables made available to templates used by Datasette to render different pages of the application. .. autoclass:: QueryContext :members: ``` And `datasette/context.py` had this: ```python from dataclasses import dataclass @dataclass class QueryContext: """ Used by the ``/database`` page when showing the results of a SQL query """ id: int "… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  
1563663616 https://github.com/simonw/datasette/pull/2053#issuecomment-1563663616 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5dM50A simonw 9599 2023-05-26T00:32:08Z 2023-05-26T00:32:08Z OWNER Now that I have the new `View` subclass from #2078 I want to use it to simplify this code. Challenge: there are several things to consider here: - The `/db` page without `?sql=` displays a list of tables in that database - With `?sql=` it shows the query results for that query (or an error) - If it's a `/db/name-of-canned-query` it works a bit like the query page, but executes a canned query instead of the `?sql=` query - POST `/db/name-of-canned-query` is support for writable canned queries {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  
1563663925 https://github.com/simonw/datasette/pull/2053#issuecomment-1563663925 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5dM541 simonw 9599 2023-05-26T00:32:47Z 2023-05-26T00:35:47Z OWNER I'm going to entirely split canned queries off from `?sql=` queries - they share a bunch of code right now which is just making everything much harder to follow. I'll refactor their shared bits into functions that they both call. Or _maybe_ I'll try having `CannedQueryView` as a subclass of `QueryView`. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  
1563667574 https://github.com/simonw/datasette/pull/2053#issuecomment-1563667574 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5dM6x2 simonw 9599 2023-05-26T00:40:22Z 2023-05-26T00:40:22Z OWNER Or maybe... - `BaseQueryView(View)` - knows how to render the results of a SQL query - `QueryView(BaseQueryView)` - renders from `?sql=` - `CannedQueryView(BaseQueryView)` - renders for a named canned query And then later perhaps: - `RowQueryView(BaseQueryView)` - renders the `select * from t where pk = ?` - `TableQueryView(BaseQueryView)` - replaces the super complex existing `TableView` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  
1563793781 https://github.com/simonw/datasette/pull/2053#issuecomment-1563793781 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5dNZl1 simonw 9599 2023-05-26T04:27:55Z 2023-05-26T04:27:55Z OWNER I should split out a `canned_query.html` template too, as something that extends the `query.html` template. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  
1565058994 https://github.com/simonw/datasette/pull/2053#issuecomment-1565058994 https://api.github.com/repos/simonw/datasette/issues/2053 IC_kwDOBm6k_c5dSOey simonw 9599 2023-05-26T23:13:02Z 2023-05-26T23:13:02Z OWNER I should have an extra called `extra_html_context` which bundles together all of the weird extra stuff needed by the HTML template, and is then passed as the root context when the template is rendered (with the other stuff from extras patched into it). {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} WIP new JSON for queries 1656432059  

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