home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

7 rows where author_association = "OWNER" and "updated_at" is on date 2021-12-14 sorted by updated_at descending

✎ View and edit SQL

This data as json, CSV (advanced)

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

issue 2

  • Complete refactor of TableView and table.html template 4
  • Syntax for ?_through= that works as a form field 3

user 1

  • simonw 7

author_association 1

  • OWNER · 7 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
994085710 https://github.com/simonw/datasette/issues/1518#issuecomment-994085710 https://api.github.com/repos/simonw/datasette/issues/1518 IC_kwDOBm6k_c47QItO simonw 9599 2021-12-14T22:03:16Z 2021-12-14T22:04:28Z OWNER

There are actually four forms of SQL query used by the table page:

  • from_sql - just the from table_name where ...
  • sql_no_order_no_limit - used for faceting, "select {select_all_columns} from {table_name} {where}"
  • sql - the above but with order and limit clauses: "select {select_specified_columns} from {table_name} {where}{order_by} limit {page_size}{offset}"
  • count_sql used for the count, built out of from_sql: "select count(*) {from_sql}"

I'm tempted to encapsulate those in a Query class.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Complete refactor of TableView and table.html template 1058072543  
994042389 https://github.com/simonw/datasette/issues/1518#issuecomment-994042389 https://api.github.com/repos/simonw/datasette/issues/1518 IC_kwDOBm6k_c47P-IV simonw 9599 2021-12-14T21:35:53Z 2021-12-14T21:35:53Z OWNER

Maybe a better way to approach this would be to focus on the JSON side of things - try to get a basic JSON version with ?_extra= support working, then eventually build that up to the point where it can power the HTML version.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Complete refactor of TableView and table.html template 1058072543  
994005634 https://github.com/simonw/datasette/issues/621#issuecomment-994005634 https://api.github.com/repos/simonw/datasette/issues/621 IC_kwDOBm6k_c47P1KC simonw 9599 2021-12-14T21:02:50Z 2021-12-14T21:02:50Z OWNER

This would also mean that an extra text input box could be easily shown on the page.

https://latest-with-plugins.datasette.io/fixtures/roadside_attractions?_through={"table":"roadside_attraction_characteristics","column":"characteristic_id","value":"1"} but with the annotated box added (and made to look good):

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Syntax for ?_through= that works as a form field 520681725  
993958242 https://github.com/simonw/datasette/issues/621#issuecomment-993958242 https://api.github.com/repos/simonw/datasette/issues/621 IC_kwDOBm6k_c47Ppli simonw 9599 2021-12-14T20:33:25Z 2021-12-14T20:33:56Z OWNER

Alternative idea: since current syntax is:

?_through={"table":"roadside_attraction_characteristics","column":"characteristic_id","value":"1"}

The form-encoding-friendly syntax could be:

?_through.{"table":"roadside_attraction_characteristics","column":"characteristic_id"}=1

Which is more consistent than the array proposal:

?_through.["roadside_attraction_characteristics","characteristic_id"]=1

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Syntax for ?_through= that works as a form field 520681725  
993813210 https://github.com/simonw/datasette/issues/621#issuecomment-993813210 https://api.github.com/repos/simonw/datasette/issues/621 IC_kwDOBm6k_c47PGLa simonw 9599 2021-12-14T17:30:13Z 2021-12-14T20:23:57Z OWNER

Might be able to create a web form that's unambiguous using:

https://latest.datasette.io/fixtures/roadside_attractions?_through.["roadside_attraction_characteristics","characteristic_id"]=1

So:

html <input type="text" name="_through.["roadside_attraction_characteristics","characteristic_id"]' value="1"> I'm pretty confident this is allowed by the HTML specification. This works:

```html

<form action="https://httpbin.org/get"> </form>

``` ASGI parsing seems to work too: https://latest-with-plugins.datasette.io/-/asgi-scope?_through.[%22roadside_attraction_characteristics%22%2C%22characteristic_id%22]=1

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Syntax for ?_through= that works as a form field 520681725  
993794247 https://github.com/simonw/datasette/issues/1518#issuecomment-993794247 https://api.github.com/repos/simonw/datasette/issues/1518 IC_kwDOBm6k_c47PBjH simonw 9599 2021-12-14T17:09:40Z 2021-12-14T17:09:40Z OWNER
  • table_actions should be an extra.
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Complete refactor of TableView and table.html template 1058072543  
993000787 https://github.com/simonw/datasette/issues/1518#issuecomment-993000787 https://api.github.com/repos/simonw/datasette/issues/1518 IC_kwDOBm6k_c47L_1T simonw 9599 2021-12-13T23:19:20Z 2021-12-14T17:06:05Z OWNER

Useful old comment here: https://github.com/simonw/datasette/issues/617#issuecomment-552253893

As noted in #621 (comment) 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 Syntax for ?_through= that works as a form field #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.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Complete refactor of TableView and table.html template 1058072543  

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 518.142ms · About: github-to-sqlite