html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app
https://github.com/simonw/datasette/issues/2112#issuecomment-1668798642,https://api.github.com/repos/simonw/datasette/issues/2112,1668798642,IC_kwDOBm6k_c5jd9iy,9599,2023-08-08T02:01:01Z,2023-08-08T02:01:01Z,OWNER,Shipped: https://latest.datasette.io/fixtures?sql=select+*+from+facetable,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1822938661,
https://github.com/simonw/datasette/issues/2112#issuecomment-1652751140,https://api.github.com/repos/simonw/datasette/issues/2112,1652751140,IC_kwDOBm6k_c5igvsk,9599,2023-07-27T00:52:53Z,2023-07-27T00:52:53Z,OWNER,"Maybe I teach `datasette.render_template()` to take a dataclass instance as an optional alternative to a dictionary, and if it gets one it turns it into something that works well in the template context.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1822938661,
https://github.com/simonw/datasette/issues/2112#issuecomment-1652746185,https://api.github.com/repos/simonw/datasette/issues/2112,1652746185,IC_kwDOBm6k_c5igufJ,9599,2023-07-27T00:46:37Z,2023-07-27T00:46:37Z,OWNER,"Got Claude to generate this code:
```python
from dataclasses import dataclass, field
@dataclass
class QueryContext:
database: str = field(metadata={""help"": ""The name of the database being queried""})
query: dict = field(metadata={""help"": ""The SQL query object containing the `sql` string""})
canned_query: str = field(metadata={""help"": ""The name of the canned query if this is a canned query""})
private: bool = field(metadata={""help"": ""Boolean indicating if this is a private database""})
urls: dict = field(metadata={""help"": ""Object containing URL helpers like `database()`""})
canned_write: bool = field(metadata={""help"": ""Boolean indicating if this canned query allows writes""})
db_is_immutable: bool = field(metadata={""help"": ""Boolean indicating if this database is immutable""})
error: str = field(metadata={""help"": ""Any query error message""})
hide_sql: bool = field(metadata={""help"": ""Boolean indicating if the SQL should be hidden""})
show_hide_link: str = field(metadata={""help"": ""The URL to toggle showing/hiding the SQL""})
show_hide_text: str = field(metadata={""help"": ""The text for the show/hide SQL link""})
editable: bool = field(metadata={""help"": ""Boolean indicating if the SQL can be edited""})
allow_execute_sql: bool = field(metadata={""help"": ""Boolean indicating if custom SQL can be executed""})
tables: list = field(metadata={""help"": ""List of table objects in the database""})
named_parameter_values: dict = field(metadata={""help"": ""Dictionary of parameter names/values""})
csrftoken: callable = field(metadata={""help"": ""Function to generate a CSRF token""})
edit_sql_url: str = field(metadata={""help"": ""URL to edit the SQL for a canned query""})
display_rows: list = field(metadata={""help"": ""List of result rows to display""})
columns: list = field(metadata={""help"": ""List of column names""})
renderers: dict = field(metadata={""help"": ""Dictionary of renderer name to URL""})
url_csv: str = field(metadata={""help"": ""URL for CSV export""})
metadata: dict = field(metadata={""help"": ""Metadata about the query/database""})
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1822938661,
https://github.com/simonw/datasette/issues/2112#issuecomment-1652723029,https://api.github.com/repos/simonw/datasette/issues/2112,1652723029,IC_kwDOBm6k_c5igo1V,9599,2023-07-27T00:25:49Z,2023-07-27T00:25:49Z,OWNER,"Getting the query page working with all of the necessary HTML context variables is a slog.
I uploaded `query.html` to Claude and asked it ""List of every template context variable with a detailed description of each one"":
> Based on the template code provided, here is a list of the template context variables and a description of each one:
>
> - `database` - The name of the database being queried.
> - `query` - The SQL query object containing the `sql` string.
> - `canned_query` - The name of the canned query if this is a canned query.
> - `private` - Boolean indicating if this is a private database.
> - `urls` - Object containing URL helpers like `database()`.
> - `canned_write` - Boolean indicating if this canned query allows writes.
> - `db_is_immutable` - Boolean indicating if this database is immutable.
> - `error` - Any query error message.
> - `hide_sql` - Boolean indicating if the SQL should be hidden.
> - `show_hide_link` - The URL to toggle showing/hiding the SQL.
> - `show_hide_text` - The text for the show/hide SQL link.
> - `editable` - Boolean indicating if the SQL can be edited.
> - `allow_execute_sql` - Boolean indicating if custom SQL can be executed.
> - `tables` - List of table objects in the database.
> - `named_parameter_values` - Dictionary of parameter names/values.
> - `csrftoken()` - Function to generate a CSRF token.
> - `edit_sql_url` - URL to edit the SQL for a canned query.
> - `display_rows` - List of result rows to display.
> - `columns` - List of column names.
> - `renderers` - Dictionary of renderer name to URL.
> - `url_csv` - URL for CSV export.
> - `metadata` - Metadata about the query/database.
> - `crumbs` - Breadcrumb navigation object.
>
> So in summary, it includes variables for the database, query, results, URLs, permissions, and metadata to power the template.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1822938661,
https://github.com/simonw/datasette/issues/2112#issuecomment-1652722208,https://api.github.com/repos/simonw/datasette/issues/2112,1652722208,IC_kwDOBm6k_c5igoog,9599,2023-07-27T00:24:50Z,2023-07-27T00:25:16Z,OWNER,"I changed my mind, I'm not going to do this with a format hook.
Also: https://github.com/simonw/datasette/issues/2109#issuecomment-1652715823
I've decided to let HTML have its own special context. I'm going to try formalizing that as a `@dataclass` with fields with `metadata={""help"": ...}` to see what that looks like.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1822938661,