Introduce new /$DB/-/query endpoint, soft replaces /$DB?sql=... (#2363)

* Introduce new default /$DB/-/query endpoint
* Fix a lot of tests
* Update pyodide test to use query endpoint
* Link to /fixtures/-/query in a few places
* Documentation for QueryView

---------

Co-authored-by: Simon Willison <swillison@gmail.com>
This commit is contained in:
Alex Garcia 2024-07-15 10:33:51 -07:00 committed by GitHub
commit a23c2aee00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 148 additions and 83 deletions

View file

@ -25,15 +25,15 @@ async def test_load_extension_default_entrypoint():
# should fail.
ds = Datasette(sqlite_extensions=[COMPILED_EXTENSION_PATH])
response = await ds.client.get("/_memory.json?_shape=arrays&sql=select+a()")
response = await ds.client.get("/_memory/-/query.json?_shape=arrays&sql=select+a()")
assert response.status_code == 200
assert response.json()["rows"][0][0] == "a"
response = await ds.client.get("/_memory.json?_shape=arrays&sql=select+b()")
response = await ds.client.get("/_memory/-/query.json?_shape=arrays&sql=select+b()")
assert response.status_code == 400
assert response.json()["error"] == "no such function: b"
response = await ds.client.get("/_memory.json?_shape=arrays&sql=select+c()")
response = await ds.client.get("/_memory/-/query.json?_shape=arrays&sql=select+c()")
assert response.status_code == 400
assert response.json()["error"] == "no such function: c"
@ -51,14 +51,14 @@ async def test_load_extension_multiple_entrypoints():
]
)
response = await ds.client.get("/_memory.json?_shape=arrays&sql=select+a()")
response = await ds.client.get("/_memory/-/query.json?_shape=arrays&sql=select+a()")
assert response.status_code == 200
assert response.json()["rows"][0][0] == "a"
response = await ds.client.get("/_memory.json?_shape=arrays&sql=select+b()")
response = await ds.client.get("/_memory/-/query.json?_shape=arrays&sql=select+b()")
assert response.status_code == 200
assert response.json()["rows"][0][0] == "b"
response = await ds.client.get("/_memory.json?_shape=arrays&sql=select+c()")
response = await ds.client.get("/_memory/-/query.json?_shape=arrays&sql=select+c()")
assert response.status_code == 200
assert response.json()["rows"][0][0] == "c"