home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 474398127

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/420#issuecomment-474398127 https://api.github.com/repos/simonw/datasette/issues/420 474398127 MDEyOklzc3VlQ29tbWVudDQ3NDM5ODEyNw== 9599 2019-03-19T14:34:55Z 2019-03-19T14:34:55Z OWNER

I systematically reviewed the codebase for things that .inspect() is used for:

In app.py:

  • table_exists() uses table in self.inspect().get(database, {}).get("tables")
  • .execute() looks up the database name to get the info["file"] (the correct filename with the .db extension)

In cli.py:

  • The datasette inspect command dumps it to JSON
  • datasette skeleton iterates over it
  • datasette serve calls it on startup (to populate static cache of inspect data)

In base.py:

  • .database_url(database) calls it to lookup the hash (if hash_urls config turned on)
  • .resolve_db_name() uses it to lookup the hash

In database.py:

  • DatabaseView uses it to find up the list of tables and views to display, plus the size of the DB file in bytes
  • DatabaseDownload uses it to get the filepath for download

In index.py:

  • IndexView uses it extensively - to loop through every database and every table. This would make a good starting point for the refactor.

In table.py:

  • sortable_columns_for_table() uses it to find the columns in a table
  • expandable_columns() uses it to find foreign keys
  • expand_foreign_keys() uses it to find foreign keys
  • display_columns_and_rows() uses it to find primary keys and foreign keys... but also has access to a cursor.description which it uses to list the columns
  • TableView.data uses it to lookup columns and primary keys and the table_rows_count (used if the thing isn't a view) and probably a few more things, this method is huge!
  • RowView.data uses it for primary keys
  • foreign_key_tables() uses it for foreign keys

In the tests it's used by test_api.test_inspect_json() and by a couple of tests in test_inspect.

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