{"html_url": "https://github.com/simonw/datasette/issues/834#issuecomment-650811919", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/834", "id": 650811919, "node_id": "MDEyOklzc3VlQ29tbWVudDY1MDgxMTkxOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-28T19:38:50Z", "updated_at": "2020-06-28T19:38:50Z", "author_association": "OWNER", "body": "I have two plugins in progress that use this hook now:\r\n\r\n- https://github.com/simonw/datasette-init creates tables and views on startup\r\n- https://github.com/simonw/datasette-glitch outputs the login-as-root secret link on Glitch", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 637342551, "label": "startup() plugin hook"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/834#issuecomment-643657067", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/834", "id": 643657067, "node_id": "MDEyOklzc3VlQ29tbWVudDY0MzY1NzA2Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-13T17:59:42Z", "updated_at": "2020-06-28T04:01:52Z", "author_association": "OWNER", "body": "Documentation: https://datasette.readthedocs.io/en/latest/plugin_hooks.html#startup-datasette", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 637342551, "label": "startup() plugin hook"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/834#issuecomment-643648359", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/834", "id": 643648359, "node_id": "MDEyOklzc3VlQ29tbWVudDY0MzY0ODM1OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-13T16:47:29Z", "updated_at": "2020-06-13T16:47:29Z", "author_association": "OWNER", "body": "Implementing this is proving surprisingly tricky, because of the need to be able to optionally `await` the returned value. It's a bit of a fiddle to get this to work within unit tests because they run in non-async functions - due to this cunning `async_to_sync` usage in the test client:\r\n\r\nhttps://github.com/simonw/datasette/blob/b906030235efbdff536405d66078f4868ce0d3bd/tests/fixtures.py#L115-L133\r\n\r\nI could switch to using `async def test_*` functions decorated with `@pytest.mark.asyncio` but I'd rather not re-engineer the entire test suite just for this one feature, so I'll try to find another way.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 637342551, "label": "startup() plugin hook"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/834#issuecomment-643510240", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/834", "id": 643510240, "node_id": "MDEyOklzc3VlQ29tbWVudDY0MzUxMDI0MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-12T22:40:26Z", "updated_at": "2020-06-12T22:40:26Z", "author_association": "OWNER", "body": "Another use-case: plugins that need their own database with the correct tables. They can write to the database on startup to create their tables.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 637342551, "label": "startup() plugin hook"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/834#issuecomment-643509358", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/834", "id": 643509358, "node_id": "MDEyOklzc3VlQ29tbWVudDY0MzUwOTM1OA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-12T22:36:37Z", "updated_at": "2020-06-12T22:36:37Z", "author_association": "OWNER", "body": "This should be able to optionally return an async function which is then awaited.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 637342551, "label": "startup() plugin hook"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/834#issuecomment-643501064", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/834", "id": 643501064, "node_id": "MDEyOklzc3VlQ29tbWVudDY0MzUwMTA2NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-12T22:04:43Z", "updated_at": "2020-06-12T22:04:43Z", "author_association": "OWNER", "body": "Another use-case for this: I want to use the `--root` option on Glitch but it gives me a 127.0.0.1 URL. Glitch has a `PROJECT_DOMAIN` environment variable which tells me the URL. A `datasette-glitch` plugin could use a `startup` hook to output the correct login URL.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 637342551, "label": "startup() plugin hook"}, "performed_via_github_app": null}