{"sha": "3fe21b91bb37b0dded09f73e119b5e1ae5035d85", "message": "Typo", "author_date": "2019-05-27T18:27:21Z", "committer_date": "2019-05-27T18:27:21Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "6569287d9001fb7e37f99b4bc5eddb78d047fa6f", "message": "Refactored ConnectedDatabase to datasette/database.py\n\nCloses #487", "author_date": "2019-05-27T05:07:27Z", "committer_date": "2019-05-27T05:07:43Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "edb36629e7356f70f42b9d37fea5dfe9cc3c364a", "message": "Database.get_outbound_foreign_keys() refactor\n\nFollowing this, the only module that ever makes calls to the low-level\nexecute_against_connection_in_thread() method is datasette/database.py", "author_date": "2019-05-27T18:41:44Z", "committer_date": "2019-05-27T18:41:44Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}}