issue_comments
8,883 rows where user = 9599 sorted by updated_at descending
This data as json, CSV (advanced)
created_at (date) >30 ✖
- 2021-03-22 63
- 2021-11-19 59
- 2020-10-15 52
- 2020-09-22 51
- 2020-10-30 47
- 2022-03-21 45
- 2020-06-09 42
- 2020-12-18 42
- 2022-10-26 42
- 2020-06-18 41
- 2022-06-14 39
- 2022-10-25 39
- 2020-05-27 38
- 2020-12-30 38
- 2021-12-16 38
- 2022-01-09 38
- 2022-10-27 38
- 2020-10-20 37
- 2021-11-16 36
- 2020-09-15 34
- 2021-11-20 34
- 2022-01-20 34
- 2022-03-19 34
- 2020-06-08 33
- 2020-06-01 32
- 2020-10-09 32
- 2021-05-27 31
- 2020-09-21 30
- 2021-08-13 30
- 2021-11-29 30
- …
user 1
- simonw · 7,684 ✖
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1316253186 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316253186 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OdG4C | simonw 9599 | 2022-11-16T03:16:36Z | 2022-11-16T03:16:36Z | OWNER | Yeah I haven't written this down anywhere but Datasette definitely has an undocumented preference for lower-case SQL. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316242752 | https://github.com/simonw/datasette/issues/1890#issuecomment-1316242752 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OdEVA | simonw 9599 | 2022-11-16T03:10:52Z | 2022-11-16T03:12:47Z | OWNER | https://bugs.webkit.org/show_bug.cgi?id=201768 - " Datalist option's label not used" - marked as RESOLVED FIXED on March 31st 2020. The commit: https://trac.webkit.org/changeset/259330/webkit And here's the test mirrored on GitHub: https://cs.github.com/qtwebkit/webkit-mirror/blob/cc3fcd0b4bad1f7cf77c26e34aa01d16618d6d5e/LayoutTests/fast/forms/datalist/datalist-option-labels.html?q=datalist-option-labels.html |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1316240839 | https://github.com/simonw/datasette/issues/1890#issuecomment-1316240839 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OdD3H | simonw 9599 | 2022-11-16T03:09:11Z | 2022-11-16T03:09:11Z | OWNER | Here's a polyfill for It shouldn't be necessary now that Safari has shipped support (apparently added in https://developer.apple.com/documentation/safari-release-notes/safari-12_1-release-notes#3130314 Safari 12.1 in March 2019). But it does look like Safari doesn't support differing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1316236448 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316236448 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OdCyg | simonw 9599 | 2022-11-16T03:04:57Z | 2022-11-16T03:04:57Z | OWNER | If you rebase from |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316233532 | https://github.com/simonw/datasette/issues/1890#issuecomment-1316233532 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OdCE8 | simonw 9599 | 2022-11-16T03:00:58Z | 2022-11-16T03:00:58Z | OWNER | Oops, introduced a test failure: ``` def test_table_html_foreign_key_facets(app_client): response = app_client.get( "/fixtures/foreign_key_references?_facet=foreign_key_with_blank_label" ) assert response.status == 200
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1316232588 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316232588 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OdB2M | simonw 9599 | 2022-11-16T03:00:04Z | 2022-11-16T03:00:04Z | OWNER | Oops, the tests are failing because of a test failure I introduced here: - #1890 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316231560 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316231560 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OdBmI | simonw 9599 | 2022-11-16T02:59:00Z | 2022-11-16T02:59:00Z | OWNER | The resize handle doesn't appear on Mobile Safari on iPhone - I don't think that particularly matters though. The textarea does get a weird border around it when focused on iPhone though. Focused: Not focused: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316227073 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316227073 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OdAgB | simonw 9599 | 2022-11-16T02:54:22Z | 2022-11-16T02:54:32Z | OWNER | If you can get a version of this working with table and column autocompletion just using a static JavaScript object in the source code with the right tables and columns, I'm happy to take on the work of turning that static object into something that Datasette includes in the page itself with all of the correct values. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316141764 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316141764 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OcrrE | simonw 9599 | 2022-11-16T01:26:59Z | 2022-11-16T01:26:59Z | OWNER | Resizing works great for me - and the page automatically sizes the editor to fit an existing query, e.g. on https://datasette-pr-1893.vercel.app/fixtures?sql=select+id%2C+content%2C+content2%0D%0A++from+primary_key_multiple_columns_explicit_label%0D%0A++order+by+id%0D%0A++limit+101 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316137982 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316137982 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5Ocqv- | simonw 9599 | 2022-11-16T01:23:47Z | 2022-11-16T01:23:47Z | OWNER | Autocomplete here looks promising (I've wanted that to work for years!), but it does currently show a whole bunch of suggestions which aren't part of the SQLite SQL dialect: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1316135244 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316135244 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OcqFM | simonw 9599 | 2022-11-16T01:21:41Z | 2022-11-16T01:21:41Z | OWNER | I just deployed a demo instance like this (using the commit hash from this PR):
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
1315812212 | https://github.com/simonw/datasette/issues/1863#issuecomment-1315812212 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5ObbN0 | simonw 9599 | 2022-11-15T20:12:02Z | 2022-11-15T20:12:02Z | OWNER | If the update succeeds it will return For consistency with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1315809867 | https://github.com/simonw/datasette/issues/1863#issuecomment-1315809867 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5ObapL | simonw 9599 | 2022-11-15T20:09:44Z | 2022-11-15T20:09:44Z | OWNER | I'm also not going to implement |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1315809260 | https://github.com/simonw/datasette/issues/1863#issuecomment-1315809260 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5Obafs | simonw 9599 | 2022-11-15T20:09:11Z | 2022-11-15T20:09:11Z | OWNER | I'm going to use the error format I've been experimenting with here: - #1875
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1315808062 | https://github.com/simonw/datasette/issues/1863#issuecomment-1315808062 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5ObaM- | simonw 9599 | 2022-11-15T20:08:04Z | 2022-11-15T20:08:04Z | OWNER | The initial design I'm going to implement will look like this:
Should it enforce types, in as much as an integer column should have a JSON integer passed to it, or should it allow strings containing valid integers? I'm going to allow strings, mainly as a workaround for the fact that JavaScript integers have a maximum size. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1315805498 | https://github.com/simonw/datasette/issues/1892#issuecomment-1315805498 | https://api.github.com/repos/simonw/datasette/issues/1892 | IC_kwDOBm6k_c5ObZk6 | simonw 9599 | 2022-11-15T20:05:30Z | 2022-11-15T20:05:30Z | OWNER | One slight concern: https://latest.datasette.io/ will increasingly reflect a version that isn't the most recent production release. I might setup https://stable.datasette.io/ as a demo instance of the most recent non-alpha release to compensate for that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Merge 1.0-dev branch back to main 1450312343 | |
1315804535 | https://github.com/simonw/datasette/issues/1892#issuecomment-1315804535 | https://api.github.com/repos/simonw/datasette/issues/1892 | IC_kwDOBm6k_c5ObZV3 | simonw 9599 | 2022-11-15T20:04:38Z | 2022-11-15T20:04:38Z | OWNER | I'll do this after the 1.0a0 release: - #1708 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Merge 1.0-dev branch back to main 1450312343 | |
1095675839 | https://github.com/simonw/datasette/issues/1708#issuecomment-1095675839 | https://api.github.com/repos/simonw/datasette/issues/1708 | IC_kwDOBm6k_c5BTq-_ | simonw 9599 | 2022-04-11T23:06:30Z | 2022-11-15T19:57:53Z | OWNER | Datasette 1.0 alpha 1This alpha release is a preview of Datasette 1.0. Datasette 1.0 marks a significant milestone in the project: it is the point from which various aspects of Datasette can be considered "stable", in that code developed against them should expect not to be broken by future releases in the 1.x series. This will hold true until the next major version release, Datasette 2.0 - which we hope to hold off releasing for as long as possible. The following Datasette components should be be considered stable after 1.0:
Note that none of these components will cease to introduce new features. New plugin hooks, new JSON APIs and new template context variables can be introduced without breaking existing code. Since this alpha release previews features that will be frozen for 1.0, please test this thoroughly against your existing Datasette projects. You can install the alpha using:
JSON API changesThe most significant changes introduced in this new alpha concern Datasette's JSON API. The default JSON returned by the
Use ?_extra= to retrieve extra fieldsThe default format can be expanded using one or more For example:
This adds a [ Question: if you do |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette 1.0 alpha upcoming release notes 1200649124 | |
1314891228 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314891228 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OX6Xc | simonw 9599 | 2022-11-15T07:23:01Z | 2022-11-15T07:23:01Z | OWNER | Annoying: Mobile Safari doesn't seem to support separate labels and values. I should probably disable this feature on that browser, at least for foreign key facets (for the moment). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314856513 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314856513 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXx5B | simonw 9599 | 2022-11-15T06:56:29Z | 2022-11-15T06:56:29Z | OWNER | Looks like I can fix that like so:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314850524 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314850524 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXwbc | simonw 9599 | 2022-11-15T06:48:37Z | 2022-11-15T06:48:37Z | OWNER | Spotted a bug with this on https://latest.datasette.io/fixtures/facetable?_facet=_city_id - the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314849867 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314849867 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXwRL | simonw 9599 | 2022-11-15T06:47:51Z | 2022-11-15T06:47:51Z | OWNER | Demo now live here: https://congress-legislators.datasettes.com/legislators/legislator_terms?_facet=party - select |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314848432 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314848432 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXv6w | simonw 9599 | 2022-11-15T06:46:08Z | 2022-11-15T06:46:08Z | OWNER | Wrote a TIL about |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314845667 | https://github.com/simonw/datasette/issues/1862#issuecomment-1314845667 | https://api.github.com/repos/simonw/datasette/issues/1862 | IC_kwDOBm6k_c5OXvPj | simonw 9599 | 2022-11-15T06:42:09Z | 2022-11-15T06:42:32Z | OWNER | I implemented this as part of https://docs.datasette.io/en/1.0-dev/json_api.html#creating-a-table-from-example-data |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Create a new table from one or more records, `sqlite-utils` style 1425011030 | |
1314835740 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314835740 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXs0c | simonw 9599 | 2022-11-15T06:30:26Z | 2022-11-15T06:30:26Z | OWNER | That prototype actually works really well! I'm going to add that to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314833881 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314833881 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXsXZ | simonw 9599 | 2022-11-15T06:27:21Z | 2022-11-15T06:27:21Z | OWNER | Here's a prototype: ```javascript function createDataLists() { var facetResults = document.querySelectorAll(".facet-results [data-column]"); Array.from(facetResults).forEach(function (facetResult) { // Use link text from all links in the facet result var linkTexts = Array.from( facetResult.querySelectorAll("li:not(.facet-truncated) a") ).map(function (link) { return link.textContent; }); // Create a datalist element var datalist = document.createElement("datalist"); datalist.id = "datalist-" + facetResult.dataset.column; // Create an option element for each link text linkTexts.forEach(function (linkText) { var option = document.createElement("option"); option.value = linkText; datalist.appendChild(option); }); // Add the datalist to the facet result facetResult.appendChild(datalist); }); } createDataLists(); // When any select with name=_filter_column changes, update the datalist document.body.addEventListener("change", function (event) { if (event.target.name === "_filter_column") { event.target .closest(".filter-row") .querySelector(".filter-value") .setAttribute("list", "datalist-" + event.target.value); } }); ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314829751 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314829751 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXrW3 | simonw 9599 | 2022-11-15T06:20:50Z | 2022-11-15T06:20:50Z | OWNER | This finds the right links on the page:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314825019 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314825019 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXqM7 | simonw 9599 | 2022-11-15T06:13:36Z | 2022-11-15T06:13:36Z | OWNER | This could start out as a purely JavaScript enhancement for pages that already figured out the available values through faceting, like you suggested. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314823752 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314823752 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXp5I | simonw 9599 | 2022-11-15T06:11:49Z | 2022-11-15T06:11:49Z | OWNER | I tried this out on https://congress-legislators.datasettes.com/legislators/legislator_terms for the I made this work by dropping the following HTML into the page in the browser DevTools: ```html <datalist id="party"> <option value="Anti-Administration"> <option value="Pro-Administration"> <option value="Republican"> <option value="Federalist"> <option value="Democratic Republican"> <option value="Pro-administration"> <option value="Anti-administration"> <option value="Unknown"> <option value="Adams"> <option value="Jackson"> <option value="Jackson Republican"> <option value="Crawford Republican"> <option value="Whig"> <option value="Jacksonian Republican"> <option value="Jacksonian"> <option value="Anti-Jacksonian"> <option value="Adams Democrat"> <option value="Nullifier"> <option value="Anti Mason"> <option value="Anti Masonic"> <option value="Anti Jacksonian"> <option value="Democrat"> <option value="Anti Jackson"> <option value="Union Democrat"> <option value="Conservative"> <option value="Ind. Democrat"> <option value="Independent"> <option value="Law and Order"> <option value="American"> <option value="Liberty"> <option value="Free Soil"> <option value="Ind. Republican-Democrat"> <option value="Ind. Whig"> <option value="Unionist"> <option value="States Rights"> <option value="Anti-Lecompton Democrat"> <option value="Constitutional Unionist"> <option value="Independent Democrat"> <option value="Unconditional Unionist"> <option value="Conservative Republican"> <option value="Ind. Republican"> <option value="Liberal Republican"> <option value="National Greenbacker"> <option value="Readjuster Democrat"> <option value="Readjuster"> <option value="Union"> <option value="Union Labor"> <option value="Populist"> <option value="Silver Republican"> <option value="Free Silver"> <option value="Silver"> <option value="Democratic and Union Labor"> <option value="Progressive Republican"> <option value="Progressive"> <option value="Prohibitionist"> <option value="Socialist"> <option value="Farmer-Labor"> <option value="American Labor"> <option value="Nonpartisan"> <option value="Coalitionist"> <option value="Popular Democrat"> <option value="Liberal"> <option value="New Progressive"> <option value="Republican-Conservative"> <option value="Democrat-Liberal"> <option value="AL"> <option value="Libertarian"> </datalist> ``` And then adding `list="party"` to the input element in the filter form. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314821337 | https://github.com/simonw/datasette/issues/1890#issuecomment-1314821337 | https://api.github.com/repos/simonw/datasette/issues/1890 | IC_kwDOBm6k_c5OXpTZ | simonw 9599 | 2022-11-15T06:08:19Z | 2022-11-15T06:08:19Z | OWNER | Oh interesting... this doesn't even need to be attached to the visible faceting feature, necessarily: Datasette could try to detect when a column has a limited number of options (which the faceting code handles already) and could turn those into an auto-complete interface. There's actually a native HTML element for this these days: the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Autocomplete text entry for filter values that correspond to facets 1448143294 | |
1314813205 | https://github.com/simonw/datasette/issues/1882#issuecomment-1314813205 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OXnUV | simonw 9599 | 2022-11-15T06:00:41Z | 2022-11-15T06:00:41Z | OWNER | Documentation:
Wrote a TIL about how I wrote some of those tests with Copilot: https://til.simonwillison.net/gpt3/writing-test-with-copilot |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1314620086 | https://github.com/simonw/datasette/issues/1875#issuecomment-1314620086 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5OW4K2 | simonw 9599 | 2022-11-15T01:09:56Z | 2022-11-15T01:09:56Z | OWNER | Rough initial prototype: ```diff diff --git a/datasette/views/table.py b/datasette/views/table.py index 8b987221..518ac578 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -1103,19 +1103,30 @@ class TableInsertView(BaseView): except json.JSONDecodeError as e: return _errors(["Invalid JSON: {}".format(e)]) if not isinstance(data, dict): - return _errors(["JSON must be a dictionary"]) + return _errors([{"detail": "JSON must be a dictionary", "pointer": "#/"}]) keys = data.keys()
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | |
1314615592 | https://github.com/simonw/datasette/issues/1875#issuecomment-1314615592 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5OW3Eo | simonw 9599 | 2022-11-15T01:04:28Z | 2022-11-15T01:04:28Z | OWNER | Worth noting this bit in RFC 7807:
So the list of It fits what I need to do though, so I'm inclined to stick with it anyway. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | |
1314545407 | https://github.com/simonw/datasette/issues/1875#issuecomment-1314545407 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5OWl7_ | simonw 9599 | 2022-11-14T23:30:34Z | 2022-11-14T23:30:34Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | ||
1314491884 | https://github.com/simonw/datasette/issues/1875#issuecomment-1314491884 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5OWY3s | simonw 9599 | 2022-11-14T22:26:11Z | 2022-11-14T22:26:54Z | OWNER | Spec looks pretty simple:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | |
1314491150 | https://github.com/simonw/datasette/issues/1875#issuecomment-1314491150 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5OWYsO | simonw 9599 | 2022-11-14T22:25:20Z | 2022-11-14T22:25:20Z | OWNER | That's using JSON Pointer: https://www.rfc-editor.org/rfc/rfc6901 There's a Python library for that here https://github.com/stefankoegl/python-json-pointer/blob/master/jsonpointer.py - which looks simple and clean and well maintained and documented, but it only handles the "what is at this pointer within this JSON object" case - I need to generate the correct JSON pointer to explain where my error is. So I think I'll end up hand-rolling this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | |
1314488010 | https://github.com/simonw/datasette/issues/1875#issuecomment-1314488010 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5OWX7K | simonw 9599 | 2022-11-14T22:21:43Z | 2022-11-14T22:21:43Z | OWNER | Here's the most relevant example from the RFC spec:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | |
1314054300 | https://github.com/simonw/datasette/issues/1884#issuecomment-1314054300 | https://api.github.com/repos/simonw/datasette/issues/1884 | IC_kwDOBm6k_c5OUuCc | simonw 9599 | 2022-11-14T16:40:06Z | 2022-11-14T16:40:06Z | OWNER | I wonder if there are any reasons that inspect SHOULD try to count virtual tables? Like are there any likely uses for a cirial table where the count is both interesting and likely to be accessed often enough that it's worth caching? I have an issue open to add a setting to disable table counts entirely:
Maybe that should be expanded to automatically disable row counts for virtual tables entirely? Which would mean no count would be shown for them in the UI. If you desperately wanted a count you would then have to run a count(*) query against them explicitly. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Exclude virtual tables from datasette inspect 1439009231 | |
1313156167 | https://github.com/simonw/datasette/issues/1850#issuecomment-1313156167 | https://api.github.com/repos/simonw/datasette/issues/1850 | IC_kwDOBm6k_c5ORSxH | simonw 9599 | 2022-11-14T06:23:39Z | 2022-11-14T06:23:39Z | OWNER | The API explorer is now live here: https://latest-1-0-dev.datasette.io/-/api |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Write API in Datasette core 1421529723 | |
1313155712 | https://github.com/simonw/datasette/issues/1850#issuecomment-1313155712 | https://api.github.com/repos/simonw/datasette/issues/1850 | IC_kwDOBm6k_c5ORSqA | simonw 9599 | 2022-11-14T06:22:57Z | 2022-11-14T06:22:57Z | OWNER | I think the ability to create tokens should be protected by a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Write API in Datasette core 1421529723 | |
1313139657 | https://github.com/simonw/datasette/issues/1888#issuecomment-1313139657 | https://api.github.com/repos/simonw/datasette/issues/1888 | IC_kwDOBm6k_c5OROvJ | simonw 9599 | 2022-11-14T06:04:48Z | 2022-11-14T06:04:48Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer should take immutability into account 1447439985 | ||
1313128913 | https://github.com/simonw/datasette/issues/1866#issuecomment-1313128913 | https://api.github.com/repos/simonw/datasette/issues/1866 | IC_kwDOBm6k_c5ORMHR | simonw 9599 | 2022-11-14T05:48:22Z | 2022-11-14T05:48:22Z | OWNER | I changed my mind about the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API for bulk inserting records into a table 1426001541 | |
1313127054 | https://github.com/simonw/datasette/issues/1874#issuecomment-1313127054 | https://api.github.com/repos/simonw/datasette/issues/1874 | IC_kwDOBm6k_c5ORLqO | simonw 9599 | 2022-11-14T05:45:00Z | 2022-11-14T05:45:00Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API to drop a table 1429030341 | ||
1313125870 | https://github.com/simonw/datasette/issues/1871#issuecomment-1313125870 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5ORLXu | simonw 9599 | 2022-11-14T05:42:50Z | 2022-11-14T05:42:50Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | ||
1313125123 | https://github.com/simonw/datasette/issues/1874#issuecomment-1313125123 | https://api.github.com/repos/simonw/datasette/issues/1874 | IC_kwDOBm6k_c5ORLMD | simonw 9599 | 2022-11-14T05:41:20Z | 2022-11-14T05:42:23Z | OWNER | I also changed the confirmation JSON returned by this endpoint to add the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API to drop a table 1429030341 | |
1313119558 | https://github.com/simonw/datasette/issues/1874#issuecomment-1313119558 | https://api.github.com/repos/simonw/datasette/issues/1874 | IC_kwDOBm6k_c5ORJ1G | simonw 9599 | 2022-11-14T05:30:27Z | 2022-11-14T05:30:27Z | OWNER | Found a bug: you get a 500 error if you try this against an immutable database. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API to drop a table 1429030341 | |
1313115059 | https://github.com/simonw/datasette/issues/1850#issuecomment-1313115059 | https://api.github.com/repos/simonw/datasette/issues/1850 | IC_kwDOBm6k_c5ORIuz | simonw 9599 | 2022-11-14T05:21:30Z | 2022-11-14T05:21:30Z | OWNER | New documentation for these features currently lives here: https://docs.datasette.io/en/1.0-dev/json_api.html#the-json-write-api |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Write API in Datasette core 1421529723 | |
1313114283 | https://github.com/simonw/datasette/issues/1875#issuecomment-1313114283 | https://api.github.com/repos/simonw/datasette/issues/1875 | IC_kwDOBm6k_c5ORIir | simonw 9599 | 2022-11-14T05:20:00Z | 2022-11-14T05:20:00Z | OWNER | I started a conversation about JSON error standards on Mastodon here: https://fedi.simonwillison.net/web/@simon/109338725610487457 Quite a few people pointed to this RFC independently. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out design for JSON errors (consider RFC 7807) 1430797211 | |
1313113642 | https://github.com/simonw/datasette/issues/1887#issuecomment-1313113642 | https://api.github.com/repos/simonw/datasette/issues/1887 | IC_kwDOBm6k_c5ORIYq | simonw 9599 | 2022-11-14T05:18:51Z | 2022-11-14T05:18:51Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add a confirm step to the drop table API 1447388809 | ||
1313097713 | https://github.com/simonw/datasette/issues/1887#issuecomment-1313097713 | https://api.github.com/repos/simonw/datasette/issues/1887 | IC_kwDOBm6k_c5OREfx | simonw 9599 | 2022-11-14T05:00:54Z | 2022-11-14T05:00:54Z | OWNER | I'm going to add a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add a confirm step to the drop table API 1447388809 | |
1313097057 | https://github.com/simonw/datasette/issues/1871#issuecomment-1313097057 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OREVh | simonw 9599 | 2022-11-14T04:59:28Z | 2022-11-14T04:59:28Z | OWNER | In playing with the API explorer just now I realized it's way too easy to accidentally drop a table using it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1313072900 | https://github.com/simonw/datasette/issues/1871#issuecomment-1313072900 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OQ-cE | simonw 9599 | 2022-11-14T04:15:50Z | 2022-11-14T04:15:50Z | OWNER | For the example links - I'm going to have these at the bottom of the page so you don't have to scroll past them. Ideally these would take the user's permissions into account. This could make the page expensive to load, but I'm going to risk it for the moment. Something like this then:
I won't bother with per-row demo links (for update and delete) because there could be thousands of them for each table. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1313062699 | https://github.com/simonw/datasette/issues/1871#issuecomment-1313062699 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OQ78r | simonw 9599 | 2022-11-14T04:03:29Z | 2022-11-14T04:12:41Z | OWNER | Two things left before I close this issue:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1313052863 | https://github.com/simonw/datasette/issues/1886#issuecomment-1313052863 | https://api.github.com/repos/simonw/datasette/issues/1886 | IC_kwDOBm6k_c5OQ5i_ | simonw 9599 | 2022-11-14T03:40:50Z | 2022-11-14T03:40:50Z | OWNER | Tim Sherratt on Twitter: https://twitter.com/wragge/status/1591930345469153282
|
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
Call for birthday presents: if you're using Datasette, let us know how you're using it here 1447050738 | |
1312822353 | https://github.com/simonw/datasette/issues/1871#issuecomment-1312822353 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OQBRR | simonw 9599 | 2022-11-13T21:07:40Z | 2022-11-13T21:07:40Z | OWNER | I'm going to need extra code to toggle POST closed when GET opens and vice-versa. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1312821031 | https://github.com/simonw/datasette/issues/1871#issuecomment-1312821031 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OQA8n | simonw 9599 | 2022-11-13T21:02:06Z | 2022-11-13T21:03:11Z | OWNER | Actually no, I'm going to add a class of |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1312816451 | https://github.com/simonw/datasette/issues/1871#issuecomment-1312816451 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OP_1D | simonw 9599 | 2022-11-13T20:39:26Z | 2022-11-13T20:39:34Z | OWNER | I'm going to add a special |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1312816292 | https://github.com/simonw/datasette/issues/1871#issuecomment-1312816292 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OP_yk | simonw 9599 | 2022-11-13T20:38:42Z | 2022-11-13T20:38:42Z | OWNER | The current API explorer uses details/summary elements for the GET and POST dialogs. I only want one of these to be open at a time, to reflect that you can make either a GET or a POST. I just noticed that clicking anywhere else on the page closes both elements, which isn't what I want to happen. Turns out that's because of this code I added as part of Datasette's menu implementation! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1312582512 | https://github.com/simonw/datasette/issues/1882#issuecomment-1312582512 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OPGtw | simonw 9599 | 2022-11-12T22:11:18Z | 2022-11-12T22:11:18Z | OWNER | I like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1312581121 | https://github.com/simonw/datasette/issues/1882#issuecomment-1312581121 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OPGYB | simonw 9599 | 2022-11-12T22:01:32Z | 2022-11-12T22:01:32Z | OWNER | I'm going to change it to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1312581008 | https://github.com/simonw/datasette/issues/1882#issuecomment-1312581008 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OPGWQ | simonw 9599 | 2022-11-12T22:00:52Z | 2022-11-12T22:00:52Z | OWNER | Tried out my prototype in the API explorer: The Problem is I really like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1312580348 | https://github.com/simonw/datasette/issues/1882#issuecomment-1312580348 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OPGL8 | simonw 9599 | 2022-11-12T21:55:54Z | 2022-11-12T21:56:45Z | OWNER | What should this API return? I think the name of the table ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1312575048 | https://github.com/simonw/datasette/issues/1882#issuecomment-1312575048 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OPE5I | simonw 9599 | 2022-11-12T21:22:58Z | 2022-11-12T21:22:58Z | OWNER | Need to validate the table name. SQLite supports almost any table name - but they can't contain a newline character and cannot start with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1312556044 | https://github.com/simonw/datasette/issues/1882#issuecomment-1312556044 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5OPAQM | simonw 9599 | 2022-11-12T19:29:11Z | 2022-11-12T19:29:11Z | OWNER | Thought of an edge-case: with
How could this new API support that? I thought about adding a This doesn't feel right to me - I want to keep those options here, on One idea I had was to implement it such that you can call But instead, I'm going to outsource this to the CLI tool I plan to write that feeds data into this API. I'm already planning to use that tool for CSV inserts (so the API doesn't need to accept CSV directly). I think it's a good place for other usability enhancements like "insert this, creating the table if it does not exist" as well. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1311314981 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311314981 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKRQl | simonw 9599 | 2022-11-11T07:15:48Z | 2022-11-11T07:15:48Z | OWNER | I released that fix in Datasette 0.63.1: https://docs.datasette.io/en/stable/changelog.html#v0-63-1 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311299535 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311299535 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKNfP | simonw 9599 | 2022-11-11T06:54:58Z | 2022-11-11T06:54:58Z | OWNER | This time deployed with:
And that fixed it!
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311292463 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311292463 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKLwv | simonw 9599 | 2022-11-11T06:44:24Z | 2022-11-11T06:44:24Z | OWNER | Modifying that test to the following does indeed cause a failure:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311291632 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311291632 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKLjw | simonw 9599 | 2022-11-11T06:43:00Z | 2022-11-11T06:43:00Z | OWNER | https://datasette-apache-proxy-demo.datasette.io/prefix/-/asgi-scope is useful: It confirms that
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311290115 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311290115 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKLMD | simonw 9599 | 2022-11-11T06:40:14Z | 2022-11-11T06:41:56Z | OWNER | I modified that config file to have this line instead:
This does NOT seem to have fixed the bug:
https://datasette-apache-proxy-demo.datasette.io/prefix/-/versions seems to confirm that this is the latest deployed version (0.63), so it looks like the deploy worked. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311286593 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311286593 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKKVB | simonw 9599 | 2022-11-11T06:34:09Z | 2022-11-11T06:34:09Z | OWNER | https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass includes this note:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311284537 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311284537 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKJ05 | simonw 9599 | 2022-11-11T06:30:38Z | 2022-11-11T06:30:38Z | OWNER | Is there a chance that it's Apache that's messing with that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311283301 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311283301 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKJhl | simonw 9599 | 2022-11-11T06:28:38Z | 2022-11-11T06:29:33Z | OWNER |
https://github.com/simonw/datasette/blob/bbaab3b38ec2ce5944239ffbe2dd53328df40fff/datasette/utils/init.py#L273-L286 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311282970 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311282970 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKJca | simonw 9599 | 2022-11-11T06:28:05Z | 2022-11-11T06:28:05Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | ||
1311280709 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311280709 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKI5F | simonw 9599 | 2022-11-11T06:25:27Z | 2022-11-11T06:25:27Z | OWNER | I tried adding this test but it passed! I expected it to fail:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311278678 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311278678 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKIZW | simonw 9599 | 2022-11-11T06:22:37Z | 2022-11-11T06:22:37Z | OWNER | If you view source on that page the HTML looks correct: ```html <form class="filters" action="/prefix/fixtures/binary_data" method="get"> ``` (I just added a test that confirms this too.) But... it looks like the bug is in the redirection code. https://datasette-apache-proxy-demo.datasette.io/prefix/fixtures/binary_data?_filter_column=rowid&_filter_op=exact&_filter_value=1&_sort=rowid returns the following: location: /fixtures/binary_data?_sort=rowid&rowid__exact=1 Which is incorrect. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311273461 | https://github.com/simonw/datasette/issues/1883#issuecomment-1311273461 | https://api.github.com/repos/simonw/datasette/issues/1883 | IC_kwDOBm6k_c5OKHH1 | simonw 9599 | 2022-11-11T06:16:08Z | 2022-11-11T06:16:08Z | OWNER | Great catch, thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Errors when using table filters behind a proxy 1435917503 | |
1311273063 | https://github.com/simonw/datasette/issues/1880#issuecomment-1311273063 | https://api.github.com/repos/simonw/datasette/issues/1880 | IC_kwDOBm6k_c5OKHBn | simonw 9599 | 2022-11-11T06:15:28Z | 2022-11-11T06:15:28Z | OWNER | The So I want to be able to paginate (and search) those. But to paginate them it's useful to have them in a database table itself, since then I can paginate using SQL. My plan for
|
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette with many and large databases > Memory use 1433576351 | |
1311271298 | https://github.com/simonw/datasette/issues/1880#issuecomment-1311271298 | https://api.github.com/repos/simonw/datasette/issues/1880 | IC_kwDOBm6k_c5OKGmC | simonw 9599 | 2022-11-11T06:12:29Z | 2022-11-11T06:12:29Z | OWNER | I think you may have misunderstood this feature. This is talking about the They're not a copy of the data itself - just a list of table names, column names and database names. You can see what that database looks like by signing in as root - running
For the example instance that looks like this: The two most interesting tables in there are these ones: As you can see, it's just the table schema itself and the columns that make up the tables. Even if you have hundreds of databases connected each with hundreds of tables this should still only add up to a few MB of RAM. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette with many and large databases > Memory use 1433576351 | |
1311269045 | https://github.com/simonw/datasette/issues/1884#issuecomment-1311269045 | https://api.github.com/repos/simonw/datasette/issues/1884 | IC_kwDOBm6k_c5OKGC1 | simonw 9599 | 2022-11-11T06:08:28Z | 2022-11-11T06:08:28Z | OWNER | Does that work if you add |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Exclude virtual tables from datasette inspect 1439009231 | |
1302818784 | https://github.com/simonw/datasette/issues/1882#issuecomment-1302818784 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5Np2_g | simonw 9599 | 2022-11-04T00:25:18Z | 2022-11-04T16:12:39Z | OWNER | On that basis I think the core API design should change to this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1302818153 | https://github.com/simonw/datasette/issues/1882#issuecomment-1302818153 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5Np21p | simonw 9599 | 2022-11-04T00:23:58Z | 2022-11-04T00:23:58Z | OWNER | I made a decision here that this endpoint should also accept an optional |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1302817807 | https://github.com/simonw/datasette/issues/1862#issuecomment-1302817807 | https://api.github.com/repos/simonw/datasette/issues/1862 | IC_kwDOBm6k_c5Np2wP | simonw 9599 | 2022-11-04T00:23:13Z | 2022-11-04T00:23:13Z | OWNER | I don't like this on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Create a new table from one or more records, `sqlite-utils` style 1425011030 | |
1302817500 | https://github.com/simonw/datasette/issues/1862#issuecomment-1302817500 | https://api.github.com/repos/simonw/datasette/issues/1862 | IC_kwDOBm6k_c5Np2rc | simonw 9599 | 2022-11-04T00:22:31Z | 2022-11-04T00:22:31Z | OWNER | Maybe this is a feature added to the existing Bit weird that you can call that endpoint for a table that doesn't exist yet, but it fits the So perhaps the API looks like this:
That means I probably also need a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Create a new table from one or more records, `sqlite-utils` style 1425011030 | |
1302815105 | https://github.com/simonw/datasette/issues/1871#issuecomment-1302815105 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5Np2GB | simonw 9599 | 2022-11-04T00:17:23Z | 2022-11-04T00:17:23Z | OWNER | I'll probably enhance it a bit more though, I want to provide a UI that lists all the tables you can explore and lets you click to pre-fill the forms with them. Though at that point what should I do about the other endpoints? Probably list those too. Gets a bit complex, especially with the row-level update and delete endpoints. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1302814693 | https://github.com/simonw/datasette/issues/1871#issuecomment-1302814693 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5Np1_l | simonw 9599 | 2022-11-04T00:16:36Z | 2022-11-04T00:16:36Z | OWNER | I can close this issue once I fix it so it no longer hard-codes a potentially invalid example endpoint: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API explorer tool 1427293909 | |
1302813449 | https://github.com/simonw/datasette/issues/1881#issuecomment-1302813449 | https://api.github.com/repos/simonw/datasette/issues/1881 | IC_kwDOBm6k_c5Np1sJ | simonw 9599 | 2022-11-04T00:14:07Z | 2022-11-04T00:14:07Z | OWNER | Tool is now live here: https://latest-1-0-dev.datasette.io/-/permissions Needs root perms, so access this first: https://latest-1-0-dev.datasette.io/login-as-root |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tool for simulating permission checks against actors 1434094365 | |
1302812918 | https://github.com/simonw/datasette/issues/1881#issuecomment-1302812918 | https://api.github.com/repos/simonw/datasette/issues/1881 | IC_kwDOBm6k_c5Np1j2 | simonw 9599 | 2022-11-04T00:13:05Z | 2022-11-04T00:13:05Z | OWNER | Has tests now. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tool for simulating permission checks against actors 1434094365 | |
1302790013 | https://github.com/simonw/datasette/issues/1863#issuecomment-1302790013 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5Npv99 | simonw 9599 | 2022-11-03T23:32:30Z | 2022-11-03T23:32:30Z | OWNER | I'm not going to allow updates to primary keys. If you need to do that, you can instead delete the record and then insert a new one with the new primary keys you wanted - or maybe use a custom SQL query. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1294224185 | https://github.com/simonw/datasette/issues/1851#issuecomment-1294224185 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NJEs5 | simonw 9599 | 2022-10-27T23:18:24Z | 2022-11-03T23:26:05Z | OWNER | So new API design is:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API to insert a single record into an existing table 1421544654 | |
1302785086 | https://github.com/simonw/datasette/issues/1863#issuecomment-1302785086 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5Npuw- | simonw 9599 | 2022-11-03T23:24:33Z | 2022-11-03T23:24:56Z | OWNER | Thinking more about validation: I'm considering if this should validate that columns which are defined as SQLite foreign keys are being updated to values that exist in those other tables. I like the sound of this. It seems like a sensible default behaviour for Datasette. And it fits with the fact that Datasette treats foreign keys specially elsewhere in the interface. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1302760549 | https://github.com/simonw/datasette/issues/1863#issuecomment-1302760549 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5Npoxl | simonw 9599 | 2022-11-03T22:43:04Z | 2022-11-03T23:21:31Z | OWNER | The
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1302760382 | https://github.com/simonw/datasette/issues/1863#issuecomment-1302760382 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5Npou- | simonw 9599 | 2022-11-03T22:42:47Z | 2022-11-03T22:42:47Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1302759174 | https://github.com/simonw/datasette/issues/1863#issuecomment-1302759174 | https://api.github.com/repos/simonw/datasette/issues/1863 | IC_kwDOBm6k_c5NpocG | simonw 9599 | 2022-11-03T22:40:47Z | 2022-11-03T22:40:47Z | OWNER | I'm considering Pydantic for this, see: - https://github.com/simonw/datasette/issues/1882#issuecomment-1302716350 In particular the This would give me good validation. It would also, weirdly, give me the ability to output JSON schema. Maybe I could have this as the JSON schema for a row?
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a single record in an existing table 1425029242 | |
1302716350 | https://github.com/simonw/datasette/issues/1882#issuecomment-1302716350 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5Npd-- | simonw 9599 | 2022-11-03T21:51:14Z | 2022-11-03T22:35:54Z | OWNER | Validating this JSON object is getting a tiny bit complex. I'm tempted to adopt https://pydantic-docs.helpmanual.io/ at this point. The
```python from pydantic import create_model d = {"strategy": {"name": "test_strat2", "periods": 10}} Strategy = create_model("Strategy", **d["strategy"]) print(Strategy.schema_json(indent=2))
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1302721916 | https://github.com/simonw/datasette/issues/1882#issuecomment-1302721916 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5NpfV8 | simonw 9599 | 2022-11-03T21:58:50Z | 2022-11-03T21:59:17Z | OWNER | Mocked up a quick HTML+JavaScript form for creating that JSON structure using some iteration against Copilot prompts: ```html /* JSON format: { "table": { "name": "my new table", "columns": [ { "name": "id", "type": "integer" }, { "name": "title", "type": "text" } ] "pk": "id" } } HTML form with Javascript for creating this JSON: */<form id="create-table-form"> <label for="table-name">Table name</label> <label for="table-pk">Primary key</label> <label for="column-name">Column name</label> <label for="column-type">Column type</label> <button type="button" id="add-column">Add column</button> Current columns: ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1302715662 | https://github.com/simonw/datasette/issues/1882#issuecomment-1302715662 | https://api.github.com/repos/simonw/datasette/issues/1882 | IC_kwDOBm6k_c5Npd0O | simonw 9599 | 2022-11-03T21:50:27Z | 2022-11-03T21:50:27Z | OWNER | API design for this:
This matches my design for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`/db/-/create` API for creating tables 1435294468 | |
1302679026 | https://github.com/simonw/datasette/issues/1843#issuecomment-1302679026 | https://api.github.com/repos/simonw/datasette/issues/1843 | IC_kwDOBm6k_c5NpU3y | simonw 9599 | 2022-11-03T21:22:42Z | 2022-11-03T21:22:42Z | OWNER | Docs for the new |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Intermittent "Too many open files" error running tests 1408757705 | |
1302678384 | https://github.com/simonw/datasette/issues/1843#issuecomment-1302678384 | https://api.github.com/repos/simonw/datasette/issues/1843 | IC_kwDOBm6k_c5NpUtw | simonw 9599 | 2022-11-03T21:21:59Z | 2022-11-03T21:21:59Z | OWNER | I added extra debug info to
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Intermittent "Too many open files" error running tests 1408757705 | |
1302634332 | https://github.com/simonw/datasette/issues/1843#issuecomment-1302634332 | https://api.github.com/repos/simonw/datasette/issues/1843 | IC_kwDOBm6k_c5NpJ9c | simonw 9599 | 2022-11-03T20:34:56Z | 2022-11-03T20:34:56Z | OWNER | Confirmed that calling I'm adding a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Intermittent "Too many open files" error running tests 1408757705 | |
1302574330 | https://github.com/simonw/datasette/issues/1843#issuecomment-1302574330 | https://api.github.com/repos/simonw/datasette/issues/1843 | IC_kwDOBm6k_c5No7T6 | simonw 9599 | 2022-11-03T19:30:22Z | 2022-11-03T19:30:22Z | OWNER | This is affecting me a lot at the moment, on my laptop (runs fine in CI). Here's a change to
``` tests/test_api.py ............E
item = <Function test_sql_time_limit>
/Users/simon/Dropbox/Development/datasette/tests/conftest.py:200: AssertionError
Which uses this fixture: Which calls this function: So now I'm suspicious that, even though the fixture is meant to be session scoped, the way I'm using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Intermittent "Too many open files" error running tests 1408757705 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
issue >30