home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 1499462324

This data as json

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/2054#issuecomment-1499462324 https://api.github.com/repos/simonw/datasette/issues/2054 1499462324 IC_kwDOBm6k_c5ZX_q0 9599 2023-04-06T18:31:56Z 2023-04-06T18:31:56Z OWNER

The DataView class does a LOT of work - mostly involving CSV responses.

https://github.com/simonw/datasette/blob/8b9d7fdbd8de7e74414cc29e3005382669a812dc/datasette/views/base.py#L160-L544

It has a redirect() method with some complex logic and CORS handling:

https://github.com/simonw/datasette/blob/8b9d7fdbd8de7e74414cc29e3005382669a812dc/datasette/views/base.py#L163-L172

It uses this method a lot, which has to be over-ridden in the TableView and RowView and QueryView subclasses:

https://github.com/simonw/datasette/blob/8b9d7fdbd8de7e74414cc29e3005382669a812dc/datasette/views/base.py#L174-L175

This method:

https://github.com/simonw/datasette/blob/8b9d7fdbd8de7e74414cc29e3005382669a812dc/datasette/views/base.py#L180

Is the bulk of the complexity, because it knows how to both turn a list of SQLite rows into a CSV file but also knows how to call .data() repeatedly with different pagination arguments in order to stream CSV back for a large table.

The async def get() method for GET requests is also very complicated. It mainly handles format stuff - knowing how to render HTML v.s. JSON v.s. CSV v.s. other formats specified using this plugin hook: https://docs.datasette.io/en/1.0a2/plugin_hooks.html#register-output-renderer-datasette

Plus it catches interrupted queries and returns a special error page for those (and other error messages too): https://github.com/simonw/datasette/blob/8b9d7fdbd8de7e74414cc29e3005382669a812dc/datasette/views/base.py#L381-L408

It adds the time taken to execute the queries: https://github.com/simonw/datasette/blob/8b9d7fdbd8de7e74414cc29e3005382669a812dc/datasette/views/base.py#L410-L411

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
1657861026  
Powered by Datasette · Queries took 1.184ms · About: github-to-sqlite