home / github

Menu
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

10,495 rows sorted by user

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: author_association, reactions, performed_via_github_app, created_at (date), updated_at (date)

id html_url issue_url node_id user ▼ created_at updated_at author_association body reactions issue performed_via_github_app
748436453 https://github.com/dogsheep/twitter-to-sqlite/issues/53#issuecomment-748436453 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/53 MDEyOklzc3VlQ29tbWVudDc0ODQzNjQ1Mw== anotherjesse 27 2020-12-19T07:47:01Z 2020-12-19T07:47:01Z NONE I think this should probably be closed as won't fix. Attempting to make a patch for this I realized that the since_id would limit to tweets posted since that since_id, not when it was favorited. So favoriting something in the older would be missed if you used `--since` with a cron script Better to just use `--stop_after` set to a couple hundred {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --since support for favorites 771324837  
711083698 https://github.com/dogsheep/healthkit-to-sqlite/issues/11#issuecomment-711083698 https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/11 MDEyOklzc3VlQ29tbWVudDcxMTA4MzY5OA== jarib 572 2020-10-17T21:39:15Z 2020-10-17T21:39:15Z NONE Nice! Works perfectly. Thanks for the quick response and great tooling in general. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} export.xml file name varies with different language settings 723838331  
810943882 https://github.com/simonw/datasette/issues/526#issuecomment-810943882 https://api.github.com/repos/simonw/datasette/issues/526 MDEyOklzc3VlQ29tbWVudDgxMDk0Mzg4Mg== jokull 701 2021-03-31T10:03:55Z 2021-03-31T10:03:55Z NONE +1 on using nested queries to achieve this! Would be great as streaming CSV is an amazing feature. Some UX/DX details: I was expecting it to work to simply add `&_stream=on` to custom SQL queries because the docs say > Any Datasette table, view or **custom SQL query** can be exported as CSV. After a bit of testing back and forth I realized streaming only works for full tables. Would love this feature because I'm using `pandas.read_csv` to paint graphs from custom queries and the graphs are cut off because of the 1000 row limit. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Stream all results for arbitrary SQL and canned queries 459882902  
605439685 https://github.com/dogsheep/github-to-sqlite/issues/15#issuecomment-605439685 https://api.github.com/repos/dogsheep/github-to-sqlite/issues/15 MDEyOklzc3VlQ29tbWVudDYwNTQzOTY4NQ== garethr 2029 2020-03-28T12:17:01Z 2020-03-28T12:17:01Z NONE That looks great, thanks! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Assets table with downloads 544571092  
622279374 https://github.com/dogsheep/github-to-sqlite/issues/33#issuecomment-622279374 https://api.github.com/repos/dogsheep/github-to-sqlite/issues/33 MDEyOklzc3VlQ29tbWVudDYyMjI3OTM3NA== garethr 2029 2020-05-01T07:12:47Z 2020-05-01T07:12:47Z NONE I also go it working with: ```yaml run: echo ${{ secrets.github_token }} | github-to-sqlite auth ``` {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Fall back to authentication via ENV 609950090  
735436014 https://github.com/simonw/datasette/issues/1114#issuecomment-735436014 https://api.github.com/repos/simonw/datasette/issues/1114 MDEyOklzc3VlQ29tbWVudDczNTQzNjAxNA== danp 2182 2020-11-29T18:33:30Z 2020-11-29T18:33:30Z CONTRIBUTOR Thank you! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --load-extension=spatialite not working with datasetteproject/datasette docker image 752966476  
927312650 https://github.com/dogsheep/twitter-to-sqlite/issues/54#issuecomment-927312650 https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/54 IC_kwDODEm0Qs43RasK danp 2182 2021-09-26T14:09:51Z 2021-09-26T14:09:51Z NONE Similar trouble with ageinfo using 0.22. Here's what my ageinfo.js file looks like: ``` window.YTD.ageinfo.part0 = [ { "ageMeta" : { } } ] ``` Commenting out the registration for ageinfo in archive.py gets my archive to import. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Archive import appears to be broken on recent exports 779088071  
1221521377 https://github.com/dogsheep/pocket-to-sqlite/issues/11#issuecomment-1221521377 https://api.github.com/repos/dogsheep/pocket-to-sqlite/issues/11 IC_kwDODLZ_YM5Izu_h fernand0 2467 2022-08-21T10:51:37Z 2022-08-21T10:51:37Z NONE I didn't see there is a PR about this: https://github.com/dogsheep/pocket-to-sqlite/pull/7 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} -a option is used for "--auth" and for "--all" 1345452427  
1844819002 https://github.com/simonw/datasette/issues/2214#issuecomment-1844819002 https://api.github.com/repos/simonw/datasette/issues/2214 IC_kwDOBm6k_c5t9bQ6 precipice 2874 2023-12-07T07:36:33Z 2023-12-07T07:36:33Z NONE If I uncheck `expand labels` in the Advanced CSV export dialog, the error does not occur. Re-checking that box and re-running the export does cause the error to occur. ![CleanShot 2023-12-06 at 23 34 58@2x](https://github.com/simonw/datasette/assets/2874/12c6c241-35ce-4ded-8dc7-fc250d809ed9) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} CSV export fails for some `text` foreign key references 2029908157  
995296725 https://github.com/simonw/datasette/issues/1552#issuecomment-995296725 https://api.github.com/repos/simonw/datasette/issues/1552 IC_kwDOBm6k_c47UwXV davidbgk 3556 2021-12-15T23:29:32Z 2021-12-15T23:29:32Z CONTRIBUTOR @simonw thank you for your fast answer and your guidance! While digging into the code, I found an undocumented way of doing it: ```yaml facets: ["Facet for a column", {"array": "Facet for an array"}] ``` The only remaining problem with that solution is here: https://github.com/simonw/datasette/blob/250db8192cb8aba5eb8cd301ccc2a49525bc3d24/datasette/facets.py#L33 We have: ```python type, metadata_config = metadata_config.items()[0] ``` But it requires to cast the `dict_items` as a list prior to access the first element: ```python type, metadata_config = list(metadata_config.items())[0] ``` I guess it's an unspotted bug? (I mean, independently of the facets-with-arrays issue.) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Allow to set `facets_array` in metadata (like current `facets`) 1078702875  
996229007 https://github.com/simonw/datasette/issues/1552#issuecomment-996229007 https://api.github.com/repos/simonw/datasette/issues/1552 IC_kwDOBm6k_c47YT-P davidbgk 3556 2021-12-16T22:04:39Z 2021-12-16T22:04:39Z CONTRIBUTOR Wow, that was fast, thank you so much @simonw ! > I'm also not convinced that this configuration syntax is right. It's a bit weird having a `"facets"` list that can either by column-name-strings or `{"type-of-facet": "column-name"}` objects. Maybe there's a better design for this? I agree that it's not ideal, my initial naive approach was to detect if it's an array, like what is done here: https://github.com/simonw/datasette/blob/2c07327d23d9c5cf939ada9ba4091c1b8b2ba42d/datasette/facets.py#L312-L313 But it requires an extra query to determine the type, which is a bit problematic, especially for big tables I guess. Taking a look at #510, I wonder if a `facet_delimiter` should be defined for that kind of columns (that would help our team not to have an intermediary conversion step from `foo|bar` to `["foo","bar"]` for instance). To be consistent with the `--extract-column` parameter, maybe an explicit casting/delimiter would be useful: `--set-column 'Foo:Array:|'`. Throwing a lot of ideas without knowing the big picture… but sometimes newcomers have superpowers :). {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Allow to set `facets_array` in metadata (like current `facets`) 1078702875  
1309650806 https://github.com/simonw/datasette/issues/1871#issuecomment-1309650806 https://api.github.com/repos/simonw/datasette/issues/1871 IC_kwDOBm6k_c5OD692 davidbgk 3556 2022-11-10T01:38:58Z 2022-11-10T01:38:58Z CONTRIBUTOR > Realized the API explorer doesn't need the API key piece at all - it can work with standard cookie-based auth. > > This also reflects how most plugins are likely to use this API, where they'll be adding JavaScript that uses `fetch()` to call the write API directly. I agree (that's what I did with the previous insert plugin), maybe a complete example using `fetch()` in the documentation would be valuable as a “Getting started with the API” or similar? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} API explorer tool 1427293909  
1339906969 https://github.com/simonw/datasette/issues/1929#issuecomment-1339906969 https://api.github.com/repos/simonw/datasette/issues/1929 IC_kwDOBm6k_c5P3VuZ davidbgk 3556 2022-12-06T19:34:20Z 2022-12-06T19:34:20Z CONTRIBUTOR I confirm that it works 👍 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Incorrect link from the API explorer to the JSON API documentation 1473659191  
1339916064 https://github.com/simonw/datasette/pull/1931#issuecomment-1339916064 https://api.github.com/repos/simonw/datasette/issues/1931 IC_kwDOBm6k_c5P3X8g davidbgk 3556 2022-12-06T19:42:45Z 2022-12-06T19:42:45Z CONTRIBUTOR The `"return": true` option is really nice! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} /db/table/-/upsert 1473814539  
754004715 https://github.com/simonw/datasette/pull/1170#issuecomment-754004715 https://api.github.com/repos/simonw/datasette/issues/1170 MDEyOklzc3VlQ29tbWVudDc1NDAwNDcxNQ== benpickles 3637 2021-01-04T14:25:44Z 2021-01-04T14:25:44Z CONTRIBUTOR I was going to re-add the filter to only run Prettier when there have been changes in `datasette/static` but that would mean it wouldn't run when the package is updated. That plus the fact that [the last run of the job took only 8 seconds](https://github.com/benpickles/datasette/runs/1640121514) is why I decided not to re-add the filter. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Install Prettier via package.json 778126516  
754007242 https://github.com/simonw/datasette/issues/1169#issuecomment-754007242 https://api.github.com/repos/simonw/datasette/issues/1169 MDEyOklzc3VlQ29tbWVudDc1NDAwNzI0Mg== benpickles 3637 2021-01-04T14:29:57Z 2021-01-04T14:29:57Z CONTRIBUTOR I somewhat share your reluctance to add a package.json to seemingly every project out there but ultimately if they're project dependencies it's important they're managed within the codebase. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Prettier package not actually being cached 777677671  
754619930 https://github.com/simonw/datasette/issues/1167#issuecomment-754619930 https://api.github.com/repos/simonw/datasette/issues/1167 MDEyOklzc3VlQ29tbWVudDc1NDYxOTkzMA== benpickles 3637 2021-01-05T12:57:57Z 2021-01-05T12:57:57Z CONTRIBUTOR Not sure where exactly to put the actual docs (presumably somewhere in [docs/contributing.rst](https://github.com/simonw/datasette/blob/main/docs/contributing.rst)) but I've made a slight change to make it easier to run locally (copying [the approach in excalidraw](https://github.com/excalidraw/excalidraw/blob/ade2565f497243a5e428f4906d8ed80c872fd981/package.json#L90-L94)): https://github.com/simonw/datasette/compare/main...benpickles:prettier-docs {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add Prettier to contributing documentation 777145954  
859940977 https://github.com/simonw/sqlite-utils/issues/269#issuecomment-859940977 https://api.github.com/repos/simonw/sqlite-utils/issues/269 MDEyOklzc3VlQ29tbWVudDg1OTk0MDk3Nw== frafra 4068 2021-06-11T22:33:08Z 2021-06-11T22:33:08Z NONE `true` and `false` json values are cast to integer, which is not optimal. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} bool type not supported 919250621  
860031071 https://github.com/simonw/sqlite-utils/issues/270#issuecomment-860031071 https://api.github.com/repos/simonw/sqlite-utils/issues/270 MDEyOklzc3VlQ29tbWVudDg2MDAzMTA3MQ== frafra 4068 2021-06-12T10:00:24Z 2021-06-12T10:00:24Z NONE Sure, I am sorry if my message hasn't been clear enough. I am also a new user :) At the beginning, I just call `sqlite-utils insert "$db" "$table" "$jsonfile"` to create the database. sqlite-utils convert JSON values into `TEXT`, when it tries to determine the schema automatically. I then try to transform the table to set `JSON` as type: ``` sqlite-utils transform species.sqlite species --type criteria json Usage: sqlite-utils transform [OPTIONS] PATH TABLE Try 'sqlite-utils transform --help' for help. Error: Invalid value for '--type': 'json' is not one of 'INTEGER', 'TEXT', 'FLOAT', 'BLOB'. ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Cannot set type JSON 919314806  
860031217 https://github.com/simonw/sqlite-utils/issues/269#issuecomment-860031217 https://api.github.com/repos/simonw/sqlite-utils/issues/269 MDEyOklzc3VlQ29tbWVudDg2MDAzMTIxNw== frafra 4068 2021-06-12T10:01:53Z 2021-06-12T10:01:53Z NONE `sqlite-utils transform` does not allow setting the column type to boolean: ``` Error: Invalid value for '--type': 'bool' is not one of 'INTEGER', 'TEXT', 'FLOAT', 'BLOB'. ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} bool type not supported 919250621  
860047794 https://github.com/simonw/datasette/issues/1286#issuecomment-860047794 https://api.github.com/repos/simonw/datasette/issues/1286 MDEyOklzc3VlQ29tbWVudDg2MDA0Nzc5NA== frafra 4068 2021-06-12T12:36:15Z 2021-06-12T12:36:15Z NONE @mroswell That is a very nice solution. I wonder if custom classes, like `col-columnName-value` could be automatically added to cells when facets on such column are enabled, to allow custom styling without having to modify templates or add custom JavaScript code. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Better default display of arrays of items 849220154  
860548546 https://github.com/simonw/datasette/issues/1375#issuecomment-860548546 https://api.github.com/repos/simonw/datasette/issues/1375 MDEyOklzc3VlQ29tbWVudDg2MDU0ODU0Ng== frafra 4068 2021-06-14T09:41:59Z 2021-06-14T09:41:59Z NONE > There is a feature for this at the moment, but it's a little bit hidden: you can use `?_json=col` to tell > Datasette that you would like a specific column to be exported as nested JSON: https://docs.datasette.io/en/stable/json_api.html#special-json-arguments Thanks :) > I considered trying to make this automatic - so it detects columns that appear to contain valid JSON and outputs them as nested objects - but the problem with that is that it can lead to inconsistent results - you might hit the API and find that not every column contains valid JSON (compared to the previous day) resulting in the API retuning string instead of the expected dictionary and breaking your code. If a developer is not sure if the JSON fields are valid, but then retrieves and parse them, it should handle errors too. Handling inconsistent data is necessary due to the nature of SQLite. A global or dataset option to render the data as they have been defined (JSON, boolean, etc.) when requesting JSON could allow the user to download a regular JSON from the browser without having to rely on APIs. I would guess someone could just make a custom template with an extra JSON-parsed download button otherwise :) {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} JSON export dumps JSON fields as TEXT 919508498  
862574390 https://github.com/simonw/sqlite-utils/issues/270#issuecomment-862574390 https://api.github.com/repos/simonw/sqlite-utils/issues/270 MDEyOklzc3VlQ29tbWVudDg2MjU3NDM5MA== frafra 4068 2021-06-16T17:34:49Z 2021-06-16T17:34:49Z NONE Sorry, I got confused because SQLite has a JSON column type, even if it is treated as TEXT, and I though automatic facets were available for JSON arrays stored as JSON only :) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Cannot set type JSON 919314806  
1139379923 https://github.com/simonw/sqlite-utils/issues/438#issuecomment-1139379923 https://api.github.com/repos/simonw/sqlite-utils/issues/438 IC_kwDOCGYnMM5D6Y7T frafra 4068 2022-05-27T08:05:01Z 2022-05-27T08:05:01Z NONE I tried to debug it using `pdb`, but it looks `sqlite-utils` catches the exception, so it is not quick to figure out where the failure is happening. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} illegal UTF-16 surrogate 1250161887  
1139392769 https://github.com/simonw/sqlite-utils/issues/438#issuecomment-1139392769 https://api.github.com/repos/simonw/sqlite-utils/issues/438 IC_kwDOCGYnMM5D6cEB frafra 4068 2022-05-27T08:21:53Z 2022-05-27T08:21:53Z NONE Argument were specified in the wrong order. `PATH TABLE FILE` can be misleading :) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} illegal UTF-16 surrogate 1250161887  
1139426398 https://github.com/simonw/sqlite-utils/issues/439#issuecomment-1139426398 https://api.github.com/repos/simonw/sqlite-utils/issues/439 IC_kwDOCGYnMM5D6kRe frafra 4068 2022-05-27T09:04:05Z 2022-05-27T10:44:54Z NONE This code works: ```python import csv import sqlite_utils db = sqlite_utils.Database("test.db") reader = csv.DictReader(open("csv", encoding="utf-16-le").read().split("\r\n"), delimiter=";") db["test"].insert_all(reader, pk="Id") ``` I used `iconv` to change the encoding; sqlite-utils can import the resulting file, even if it stops at 98 %: ``` sqlite-utils insert --csv test test.db clean [------------------------------------] 0% [###################################-] 98% 00:00:00 ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Misleading progress bar against utf-16-le CSV input 1250495688  
1139484453 https://github.com/simonw/sqlite-utils/issues/433#issuecomment-1139484453 https://api.github.com/repos/simonw/sqlite-utils/issues/433 IC_kwDOCGYnMM5D6ycl frafra 4068 2022-05-27T10:20:08Z 2022-05-27T10:20:08Z NONE I can confirm. This only happens with sqlite-utils. I am using gnome-terminal with bash. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} CLI eats my cursor 1239034903  
1257290709 https://github.com/simonw/datasette/issues/1818#issuecomment-1257290709 https://api.github.com/repos/simonw/datasette/issues/1818 IC_kwDOBm6k_c5K8LvV nelsonjchen 5363 2022-09-25T22:17:06Z 2022-09-25T22:17:06Z NONE I wonder if having an option for displaying the max row id might help too. Not accurate especially if something was deleted, but useful for DBs as a dump. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Setting to turn off table row counts entirely 1384549993  
1258738740 https://github.com/simonw/datasette/issues/1818#issuecomment-1258738740 https://api.github.com/repos/simonw/datasette/issues/1818 IC_kwDOBm6k_c5LBtQ0 nelsonjchen 5363 2022-09-26T22:52:45Z 2022-09-26T22:55:57Z NONE thoughts on order of precedence to use: * sqlite-utils count, if present. closest thing to a standard i guess. * row(max_id) if like, the first and/or last x amount of rows ids are all contiguous. kind of a cheap/dumb/imperfect heuristic to see if the table is dump/not dump. if the check passes, still stick on `est.` after the display. * count(*) if enabled in datasette {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Setting to turn off table row counts entirely 1384549993  
791053721 https://github.com/dogsheep/dogsheep-photos/issues/32#issuecomment-791053721 https://api.github.com/repos/dogsheep/dogsheep-photos/issues/32 MDEyOklzc3VlQ29tbWVudDc5MTA1MzcyMQ== dsisnero 6213 2021-03-05T00:31:27Z 2021-03-05T00:31:27Z NONE I am getting the same thing for US West (N. California) us-west-1 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} KeyError: 'Contents' on running upload 803333769  
1499797384 https://github.com/simonw/datasette/issues/2054#issuecomment-1499797384 https://api.github.com/repos/simonw/datasette/issues/2054 IC_kwDOBm6k_c5ZZReI dsisnero 6213 2023-04-07T00:46:50Z 2023-04-07T00:46:50Z NONE you should have a look at Roda written in ruby . {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make detailed notes on how table, query and row views work right now 1657861026  
1125083348 https://github.com/simonw/datasette/issues/1298#issuecomment-1125083348 https://api.github.com/repos/simonw/datasette/issues/1298 IC_kwDOBm6k_c5DD2jU llimllib 7150 2022-05-12T14:43:51Z 2022-05-12T14:43:51Z NONE user report: I found this issue because the first time I tried to use datasette for real, I displayed a large table, and thought there was no horizontal scroll bar at all. I didn't even consider that I had to scroll all the way to the end of the page to find it. Just chipping in to say that this confused me, and I didn't even find the scroll bar until after I saw this issue. I don't know what the right answer is, but IMO the UI should suggest to the user that there is a way to view the data that's hidden to the right. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} improve table horizontal scroll experience 855476501  
359697938 https://github.com/simonw/datasette/issues/176#issuecomment-359697938 https://api.github.com/repos/simonw/datasette/issues/176 MDEyOklzc3VlQ29tbWVudDM1OTY5NzkzOA== gijs 7193 2018-01-23T07:17:56Z 2018-01-23T07:17:56Z NONE 👍 I'd like this too! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add GraphQL endpoint 285168503  
338523957 https://github.com/simonw/datasette/issues/1#issuecomment-338523957 https://api.github.com/repos/simonw/datasette/issues/1 MDEyOklzc3VlQ29tbWVudDMzODUyMzk1Nw== simonw 9599 2017-10-23T01:09:05Z 2017-10-24T02:42:12Z OWNER I also need to solve for weird primary keys. If it’s a single integer or a single char field that’s easy. But what if it is a compound key with more than one chat field? What delimiter can I use that will definitely be safe? Let’s say I use hyphen. Now I need to find a durable encoding for any hyphens that might exist in the key fields themselves. How about I use URLencoding for every non-alpha-numeric character? That will turn hyphens into (I think) %2D. It should also solve for unicode characters, but it means the vast majority of keys (integers) will display neatly, including a compound key of eg 5678-345 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Addressable pages for every row in a table 267513424  
338524454 https://github.com/simonw/datasette/issues/1#issuecomment-338524454 https://api.github.com/repos/simonw/datasette/issues/1 MDEyOklzc3VlQ29tbWVudDMzODUyNDQ1NA== simonw 9599 2017-10-23T01:15:24Z 2017-10-23T01:15:24Z OWNER Table rendering logic needs to detect the primary key field and turn it into a hyperlink. If there is a compound primary key it should add an extra column at the start of the table which displays the compound key as a link {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Addressable pages for every row in a table 267513424  
338524857 https://github.com/simonw/datasette/issues/5#issuecomment-338524857 https://api.github.com/repos/simonw/datasette/issues/5 MDEyOklzc3VlQ29tbWVudDMzODUyNDg1Nw== simonw 9599 2017-10-23T01:20:30Z 2017-10-23T01:20:30Z OWNER https://stackoverflow.com/a/14468878/6083 Looks like I should order by compound primary key and implement cursor-based pagination. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement sensible query pagination 267516066  
338526148 https://github.com/simonw/datasette/issues/3#issuecomment-338526148 https://api.github.com/repos/simonw/datasette/issues/3 MDEyOklzc3VlQ29tbWVudDMzODUyNjE0OA== simonw 9599 2017-10-23T01:35:17Z 2017-10-23T01:35:17Z OWNER https://github.com/ahupp/python-magic/blob/master/README.md {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make individual column valuables addressable, with smart content types 267515678  
338530389 https://github.com/simonw/datasette/issues/4#issuecomment-338530389 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODUzMDM4OQ== simonw 9599 2017-10-23T02:15:41Z 2017-10-23T02:15:41Z OWNER This means I need a good solution for these compile time options while running in development mode {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338530480 https://github.com/simonw/datasette/issues/4#issuecomment-338530480 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODUzMDQ4MA== simonw 9599 2017-10-23T02:16:33Z 2017-10-23T02:16:33Z OWNER How about when the service starts up it checks for a compile.json file and, if it is missing, creates it using the same code we run at compile time normally {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338530704 https://github.com/simonw/datasette/issues/11#issuecomment-338530704 https://api.github.com/repos/simonw/datasette/issues/11 MDEyOklzc3VlQ29tbWVudDMzODUzMDcwNA== simonw 9599 2017-10-23T02:18:36Z 2017-10-23T02:18:36Z OWNER Needed by https://github.com/simonw/stateless-datasets/issues/4#issuecomment-338530389 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Code that generates compile-time properties about the database  267522549  
338531827 https://github.com/simonw/datasette/issues/4#issuecomment-338531827 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODUzMTgyNw== simonw 9599 2017-10-23T02:28:31Z 2017-10-23T02:29:05Z OWNER Many of the applications I want to implement with this would benefit from having permanent real URLs. So let’s have both. The sha1 urls will serve far future cache headers (and an etag derived from their path). The non sha1 URLs will serve 302 uncached redirects to the sha1 locations. We will have a setting that lets people opt out of this behavior. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338697223 https://github.com/simonw/datasette/issues/8#issuecomment-338697223 https://api.github.com/repos/simonw/datasette/issues/8 MDEyOklzc3VlQ29tbWVudDMzODY5NzIyMw== simonw 9599 2017-10-23T15:28:11Z 2017-10-23T15:28:11Z OWNER Now returning this: { "error": "attempt to write a readonly database", "ok": false } {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Attempting an INSERT or UPDATE should return a sane error message 267517314  
338768860 https://github.com/simonw/datasette/issues/16#issuecomment-338768860 https://api.github.com/repos/simonw/datasette/issues/16 MDEyOklzc3VlQ29tbWVudDMzODc2ODg2MA== simonw 9599 2017-10-23T19:23:29Z 2017-10-23T19:23:29Z OWNER I could use the table-reflow mechanism demonstrated here: http://demos.jquerymobile.com/1.4.3/table-reflow/ {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Default HTML/CSS needs to look reasonable and be responsive 267726219  
338769538 https://github.com/simonw/datasette/issues/20#issuecomment-338769538 https://api.github.com/repos/simonw/datasette/issues/20 MDEyOklzc3VlQ29tbWVudDMzODc2OTUzOA== simonw 9599 2017-10-23T19:25:55Z 2017-10-23T19:25:55Z OWNER Maybe this should be handled by views instead? https://stateless-datasets-wreplxalgu.now.sh/ lists some views https://stateless-datasets-wreplxalgu.now.sh/?sql=select%20*%20from%20%22Order%20Subtotals%22 is an example showing the content of a view. What would the URL to views be? I don't think a view can share a name with a table, so the same URL scheme could work for both. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Config file with support for defining canned queries 267759136  
338789734 https://github.com/simonw/datasette/issues/4#issuecomment-338789734 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODc4OTczNA== simonw 9599 2017-10-23T20:40:25Z 2017-10-23T21:10:19Z OWNER URL design: /database/table.json - redirects to /database-6753f4a/table.json So we always redirect to the version with the truncated hash in the URL. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338797522 https://github.com/simonw/datasette/issues/4#issuecomment-338797522 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODc5NzUyMg== simonw 9599 2017-10-23T21:09:33Z 2017-10-23T21:09:33Z OWNER https://stackoverflow.com/a/18134919/6083 is a good answer about how many characters of the hash are needed to be unique. I say we default to 7 characters, like git does - but allow extras to be configured. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338799438 https://github.com/simonw/datasette/issues/4#issuecomment-338799438 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODc5OTQzOA== simonw 9599 2017-10-23T21:17:25Z 2017-10-23T21:17:25Z OWNER Can I take advantage of HTTP/2 so even if you get redirected I start serving you the correct resource straight away? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338804173 https://github.com/simonw/datasette/issues/4#issuecomment-338804173 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODgwNDE3Mw== simonw 9599 2017-10-23T21:36:37Z 2017-10-23T21:36:37Z OWNER Looks like the easiest way to implement HTTP/2 server push today is to run behind Cloudflare and use this: Link: </asset/to/push.js>; rel=preload; as=script https://blog.cloudflare.com/announcing-support-for-http-2-server-push-2/ Here's the W3C draft: https://w3c.github.io/preload/ From https://w3c.github.io/preload/#as-attribute it looks like I should use `as=fetch` if the content is intended for consumption by fetch() or XMLHTTPRequest. Unclear if I should throw `as=fetch crossorigin` in there. Need to experiment on that. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338806718 https://github.com/simonw/datasette/issues/4#issuecomment-338806718 https://api.github.com/repos/simonw/datasette/issues/4 MDEyOklzc3VlQ29tbWVudDMzODgwNjcxOA== simonw 9599 2017-10-23T21:47:53Z 2017-10-23T21:47:53Z OWNER Here's what the homepage of cloudflare.com does (with newlines added within the link header for clarity): $ curl -i 'https://www.cloudflare.com/' HTTP/1.1 200 OK Date: Mon, 23 Oct 2017 21:45:58 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive link: </vendor/bitdashplayer.min.css>; rel=preload; as=style, </vendor/bitdash-controls.min.css>; rel=preload; as=style, </video/marketing-video/cloudflare-marketing-video.mpd>; rel=preload, </video/marketing-video/cloudflare-marketing-video.m3u8>; rel=preload, </video/marketing-video/video_0_800000/dash/init.mp4>; rel=preload; as=video, </video/marketing-video/audio_0_128000/dash/init.mp4>; rel=preload; as=video, </video/marketing-video/video_0_800000/dash/segment_0.m4s>; rel=preload; as=video, </video/marketing-video/audio_0_128000/dash/segment_0.m4s>; rel=preload; as=video, </video/new-short-optimized-22.mp4>; rel=preload; as=video, </video/marketing-video/poster.jpg>; rel=preload; as=image The original header looked like this: link: </vendor/bitdashplayer.min.css>; rel=preload; as=style, </vendor/bitdash-controls.min.css>; rel=preload; as=style, </video/marketing-video/cloudflare-marketing-video.mpd>; rel=preload, </video/marketing-video/cloudflare-marketing-video.m3u8>; rel=preload, </video/marketing-video/video_0_800000/dash/init.mp4>; rel=preload; as=video, </video/marketing-video/audio_0_128000/dash/init.mp4>; rel=preload; as=video, </video/marketing-video/video_0_800000/dash/segment_0.m4s>; rel=preload; as=video, </video/marketing-video/audio_0_128000/dash/segment_0.m4s>; rel=preload; as=video, </video/new-short-optimized-22.mp4>; rel=preload; as=video, </video/marketing-video/poster.jpg>; rel=preload; as=image {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Make URLs immutable 267515836  
338834213 https://github.com/simonw/datasette/issues/24#issuecomment-338834213 https://api.github.com/repos/simonw/datasette/issues/24 MDEyOklzc3VlQ29tbWVudDMzODgzNDIxMw== simonw 9599 2017-10-24T00:23:05Z 2017-10-24T00:23:05Z OWNER If I can’t setect a primary key, I won’t provide a URL for those records {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement full URL design 267828746  
338852971 https://github.com/simonw/datasette/issues/17#issuecomment-338852971 https://api.github.com/repos/simonw/datasette/issues/17 MDEyOklzc3VlQ29tbWVudDMzODg1Mjk3MQ== simonw 9599 2017-10-24T02:26:47Z 2017-10-24T02:26:47Z OWNER I'm not going to bother with this. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} In development mode, should still pick up new .db files 267732005  
338853083 https://github.com/simonw/datasette/issues/7#issuecomment-338853083 https://api.github.com/repos/simonw/datasette/issues/7 MDEyOklzc3VlQ29tbWVudDMzODg1MzA4Mw== simonw 9599 2017-10-24T02:27:25Z 2017-10-24T02:27:25Z OWNER Fixed in 9d219140694551453bfa528e0624919eb065f9d6 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Framework where by every page is JSON plus a template 267516650  
338854988 https://github.com/simonw/datasette/issues/23#issuecomment-338854988 https://api.github.com/repos/simonw/datasette/issues/23 MDEyOklzc3VlQ29tbWVudDMzODg1NDk4OA== simonw 9599 2017-10-24T02:40:12Z 2017-10-25T00:05:46Z OWNER /database-name/table-name?name__contains=simon&sort=id+desc Note that if there's a column called "sort" you can still do sort__exact=blah {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Support Django-style filters in querystring arguments 267788884  
338857568 https://github.com/simonw/datasette/issues/1#issuecomment-338857568 https://api.github.com/repos/simonw/datasette/issues/1 MDEyOklzc3VlQ29tbWVudDMzODg1NzU2OA== simonw 9599 2017-10-24T02:57:12Z 2017-10-24T02:57:12Z OWNER I can find the primary keys using: PRAGMA table_info(myTable) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Addressable pages for every row in a table 267513424  
338859620 https://github.com/simonw/datasette/issues/23#issuecomment-338859620 https://api.github.com/repos/simonw/datasette/issues/23 MDEyOklzc3VlQ29tbWVudDMzODg1OTYyMA== simonw 9599 2017-10-24T03:11:42Z 2017-10-24T03:11:42Z OWNER I’m going to implement everything in https://docs.djangoproject.com/en/1.11/ref/models/querysets/#field-lookups with the exception of range and the various date ones. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Support Django-style filters in querystring arguments 267788884  
338859709 https://github.com/simonw/datasette/issues/23#issuecomment-338859709 https://api.github.com/repos/simonw/datasette/issues/23 MDEyOklzc3VlQ29tbWVudDMzODg1OTcwOQ== simonw 9599 2017-10-24T03:12:18Z 2017-10-24T03:12:42Z OWNER I’m going to need to write unit tests for this, is this depends on #9 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Support Django-style filters in querystring arguments 267788884  
338861511 https://github.com/simonw/datasette/issues/1#issuecomment-338861511 https://api.github.com/repos/simonw/datasette/issues/1 MDEyOklzc3VlQ29tbWVudDMzODg2MTUxMQ== simonw 9599 2017-10-24T03:24:17Z 2017-10-24T03:24:17Z OWNER Some tables won't have primary keys, in which case I won't generate pages for individual records. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Addressable pages for every row in a table 267513424  
338863155 https://github.com/simonw/datasette/issues/9#issuecomment-338863155 https://api.github.com/repos/simonw/datasette/issues/9 MDEyOklzc3VlQ29tbWVudDMzODg2MzE1NQ== simonw 9599 2017-10-24T03:36:58Z 2017-10-24T03:36:58Z OWNER I’m going to use py.test and start with all tests in a single tests.py module {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Initial test suite 267517348  
338872286 https://github.com/simonw/datasette/issues/1#issuecomment-338872286 https://api.github.com/repos/simonw/datasette/issues/1 MDEyOklzc3VlQ29tbWVudDMzODg3MjI4Ng== simonw 9599 2017-10-24T04:46:06Z 2017-10-24T04:46:06Z OWNER I'm going to use `,` as the separator between elements of a compound primary key. If those elements themselves include a comma I will use `%2C` in its place. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Addressable pages for every row in a table 267513424  
338882110 https://github.com/simonw/datasette/issues/9#issuecomment-338882110 https://api.github.com/repos/simonw/datasette/issues/9 MDEyOklzc3VlQ29tbWVudDMzODg4MjExMA== simonw 9599 2017-10-24T05:55:33Z 2017-10-24T05:55:33Z OWNER Well, I've started it at least. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Initial test suite 267517348  
338882207 https://github.com/simonw/datasette/issues/1#issuecomment-338882207 https://api.github.com/repos/simonw/datasette/issues/1 MDEyOklzc3VlQ29tbWVudDMzODg4MjIwNw== simonw 9599 2017-10-24T05:56:04Z 2017-10-24T05:56:04Z OWNER Next step: generate links to these. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Addressable pages for every row in a table 267513424  
339003850 https://github.com/simonw/datasette/issues/24#issuecomment-339003850 https://api.github.com/repos/simonw/datasette/issues/24 MDEyOklzc3VlQ29tbWVudDMzOTAwMzg1MA== simonw 9599 2017-10-24T14:12:00Z 2017-10-24T14:12:00Z OWNER As of b46e370ee6126aa2fa85cf789a31da38aed98496 this is done. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement full URL design 267828746  
339019873 https://github.com/simonw/datasette/issues/29#issuecomment-339019873 https://api.github.com/repos/simonw/datasette/issues/29 MDEyOklzc3VlQ29tbWVudDMzOTAxOTg3Mw== simonw 9599 2017-10-24T14:58:33Z 2017-10-24T14:58:33Z OWNER Here's what I've got now: <img width="693" alt="localhost_8006_northwind-40d049b_categories_json" src="https://user-images.githubusercontent.com/9599/31950748-1bc85f3e-b891-11e7-8205-d89da6129f4b.png"> {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Handle bytestring records encoding to JSON 268050821  
339027711 https://github.com/simonw/datasette/issues/5#issuecomment-339027711 https://api.github.com/repos/simonw/datasette/issues/5 MDEyOklzc3VlQ29tbWVudDMzOTAyNzcxMQ== simonw 9599 2017-10-24T15:21:30Z 2017-10-24T15:21:30Z OWNER I have code to detect primary keys on tables... but what should I do for tables that lack primary keys? How should I even sort them? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement sensible query pagination 267516066  
339028979 https://github.com/simonw/datasette/issues/5#issuecomment-339028979 https://api.github.com/repos/simonw/datasette/issues/5 MDEyOklzc3VlQ29tbWVudDMzOTAyODk3OQ== simonw 9599 2017-10-24T15:25:08Z 2017-10-24T15:25:08Z OWNER Looks like I can use the SQLite specific “rowid” in that case. It isn’t guaranteed to stay consistent across a VACUUM but that’s ok because we are immutable anyway. https://www.sqlite.org/lang_createtable.html#rowid {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement sensible query pagination 267516066  
339138809 https://github.com/simonw/datasette/issues/23#issuecomment-339138809 https://api.github.com/repos/simonw/datasette/issues/23 MDEyOklzc3VlQ29tbWVudDMzOTEzODgwOQ== simonw 9599 2017-10-24T21:32:46Z 2017-10-24T21:32:46Z OWNER May as well support most of https://sqlite.org/lang_expr.html {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Support Django-style filters in querystring arguments 267788884  
339186887 https://github.com/simonw/datasette/issues/23#issuecomment-339186887 https://api.github.com/repos/simonw/datasette/issues/23 MDEyOklzc3VlQ29tbWVudDMzOTE4Njg4Nw== simonw 9599 2017-10-25T01:39:43Z 2017-10-25T04:22:41Z OWNER Still to do: - [x] `gt`, `gte`, `lt`, `lte` - [x] `like` - [x] `glob` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Support Django-style filters in querystring arguments 267788884  
339210353 https://github.com/simonw/datasette/issues/23#issuecomment-339210353 https://api.github.com/repos/simonw/datasette/issues/23 MDEyOklzc3VlQ29tbWVudDMzOTIxMDM1Mw== simonw 9599 2017-10-25T04:23:02Z 2017-10-25T04:23:02Z OWNER I'm going to call this one done for the moment. The date filters can go in a stretch goal. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Support Django-style filters in querystring arguments 267788884  
339366612 https://github.com/simonw/datasette/issues/19#issuecomment-339366612 https://api.github.com/repos/simonw/datasette/issues/19 MDEyOklzc3VlQ29tbWVudDMzOTM2NjYxMg== simonw 9599 2017-10-25T15:21:16Z 2017-10-25T15:21:16Z OWNER I had to manually set the content disposition header: return await response.file_stream( filepath, headers={ 'Content-Disposition': 'attachment; filename="{}"'.format(ilepath) } ) In the next release of Sanic I can just use the filename= argument instead: https://github.com/channelcat/sanic/commit/07e95dba4f5983afc1e673df14bdd278817288aa {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Efficient url for downloading the raw database file 267741262  
339382054 https://github.com/simonw/datasette/issues/37#issuecomment-339382054 https://api.github.com/repos/simonw/datasette/issues/37 MDEyOklzc3VlQ29tbWVudDMzOTM4MjA1NA== simonw 9599 2017-10-25T16:05:56Z 2017-10-25T16:05:56Z OWNER Could this be as simple as using the iterative JSON encoder and adding a yield statement in between each chunk? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to serialize massive JSON without blocking event loop 268453968  
339388215 https://github.com/simonw/datasette/issues/38#issuecomment-339388215 https://api.github.com/repos/simonw/datasette/issues/38 MDEyOklzc3VlQ29tbWVudDMzOTM4ODIxNQ== simonw 9599 2017-10-25T16:25:45Z 2017-10-25T16:25:45Z OWNER First experiment: hook up an iterative CSV dump (just because that’s a tiny bit easier to get started with than iterative a JSON). Have it execute a big select statement and then iterate through the result set 100 rows at a time using sqite fetchmany() - also have it async sleep for a second in between each batch of 100. Can this work without needing python threads? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Experiment with patterns for concurrent long running queries 268462768  
339388771 https://github.com/simonw/datasette/issues/38#issuecomment-339388771 https://api.github.com/repos/simonw/datasette/issues/38 MDEyOklzc3VlQ29tbWVudDMzOTM4ODc3MQ== simonw 9599 2017-10-25T16:27:29Z 2017-10-25T16:27:29Z OWNER If this does work, I need to figure it what to do about the HTML view. ASsuming I can iteratively produce JSON and CSV, what to do about HTML? One option: render the first 500 rows as HTML, then hand off to an infinite scroll experience that iteratively loads more rows as JSON. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Experiment with patterns for concurrent long running queries 268462768  
339389105 https://github.com/simonw/datasette/issues/38#issuecomment-339389105 https://api.github.com/repos/simonw/datasette/issues/38 MDEyOklzc3VlQ29tbWVudDMzOTM4OTEwNQ== simonw 9599 2017-10-25T16:28:39Z 2017-10-25T16:28:39Z OWNER The gold standard here is to be able to serve up increasingly large datasets without blocking the event loop and while using a sustainable amount of RAM {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Experiment with patterns for concurrent long running queries 268462768  
339389328 https://github.com/simonw/datasette/issues/38#issuecomment-339389328 https://api.github.com/repos/simonw/datasette/issues/38 MDEyOklzc3VlQ29tbWVudDMzOTM4OTMyOA== simonw 9599 2017-10-25T16:29:23Z 2017-10-25T16:29:23Z OWNER Ideally we can get some serious gains from the fact that our database file is opened with the immutable option. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Experiment with patterns for concurrent long running queries 268462768  
339395551 https://github.com/simonw/datasette/issues/40#issuecomment-339395551 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTM5NTU1MQ== simonw 9599 2017-10-25T16:49:32Z 2017-10-25T16:49:32Z OWNER Simplest implementation will be to create a temporary directory somewhere, copy in a Dockerfile and the databases and run “now” in it. Ideally I can use symlinks rather than copying potentially large database files around. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
339406634 https://github.com/simonw/datasette/issues/39#issuecomment-339406634 https://api.github.com/repos/simonw/datasette/issues/39 MDEyOklzc3VlQ29tbWVudDMzOTQwNjYzNA== simonw 9599 2017-10-25T17:27:10Z 2017-10-25T17:27:10Z OWNER It certainly looks like some of the stuff in https://sqlite.org/pragma.html could be used to screw around with things. Example: `PRAGMA case_sensitive_like = 1` - would that affect future queries? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Protect against malicious SQL that causes damage even though our DB is immutable 268469569  
339413825 https://github.com/simonw/datasette/issues/39#issuecomment-339413825 https://api.github.com/repos/simonw/datasette/issues/39 MDEyOklzc3VlQ29tbWVudDMzOTQxMzgyNQ== simonw 9599 2017-10-25T17:48:48Z 2017-10-25T17:48:48Z OWNER Could I use https://sqlparse.readthedocs.io/en/latest/ to parse incoming statements and ensure they are pure SELECTs? Would that prevent people from using a compound SELECT statement to trigger an evil PRAGMA of some sort? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Protect against malicious SQL that causes damage even though our DB is immutable 268469569  
339420462 https://github.com/simonw/datasette/issues/16#issuecomment-339420462 https://api.github.com/repos/simonw/datasette/issues/16 MDEyOklzc3VlQ29tbWVudDMzOTQyMDQ2Mg== simonw 9599 2017-10-25T18:10:51Z 2017-10-25T18:10:51Z OWNER https://sitesforprofit.com/responsive-table-plugins-and-patterns has some useful links. I really like the pattern from https://css-tricks.com/responsive-data-tables/ /* Max width before this PARTICULAR table gets nasty This query will take effect for any screen smaller than 760px and also iPads specifically. */ @media only screen and (max-width: 760px), (min-device-width: 768px) and (max-device-width: 1024px) { /* Force table to not be like tables anymore */ table, thead, tbody, th, td, tr { display: block; } /* Hide table headers (but not display: none;, for accessibility) */ thead tr { position: absolute; top: -9999px; left: -9999px; } tr { border: 1px solid #ccc; } td { /* Behave like a "row" */ border: none; border-bottom: 1px solid #eee; position: relative; padding-left: 50%; } td:before { /* Now like a table header */ position: absolute; /* Top/left values mimic padding */ top: 6px; left: 6px; width: 45%; padding-right: 10px; white-space: nowrap; } /* Label the data */ td:nth-of-type(1):before { content: "First Name"; } td:nth-of-type(2):before { content: "Last Name"; } td:nth-of-type(3):before { content: "Job Title"; } td:nth-of-type(4):before { content: "Favorite Color"; } td:nth-of-type(5):before { content: "Wars of Trek?"; } td:nth-of-type(6):before { content: "Porn Name"; } td:nth-of-type(7):before { content: "Date of Birth"; } td:nth-of-type(8):before { content: "Dream Vacation City"; } td:nth-of-type(9):before { content: "GPA"; } td:nth-of-type(10):before { conten… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Default HTML/CSS needs to look reasonable and be responsive 267726219  
339510770 https://github.com/simonw/datasette/issues/39#issuecomment-339510770 https://api.github.com/repos/simonw/datasette/issues/39 MDEyOklzc3VlQ29tbWVudDMzOTUxMDc3MA== simonw 9599 2017-10-26T00:07:40Z 2017-10-26T00:07:40Z OWNER It looks like I should double quote my columns and ensure they are correctly escaped https://blog.christosoft.de/2012/10/sqlite-escaping-table-acolumn-names/ - hopefully using ? placeholders for column names will work. I should use ? for tables too. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Protect against malicious SQL that causes damage even though our DB is immutable 268469569  
339514819 https://github.com/simonw/datasette/issues/40#issuecomment-339514819 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTUxNDgxOQ== simonw 9599 2017-10-26T00:35:46Z 2017-10-26T00:35:46Z OWNER I’m going to have a single command-line app that does everything. Name to be decided - options include dataset, stateless, datasite (I quite like that - it reflects SQLite and the fact that you create a website) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
339515822 https://github.com/simonw/datasette/issues/40#issuecomment-339515822 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTUxNTgyMg== simonw 9599 2017-10-26T00:43:34Z 2017-10-26T00:43:34Z OWNER datasite . - starts web app in current directory, serving all DB files datasite . -p 8001 - serves on custom port datasite blah.db blah2.db - serves specified files You can’t specify more than one directory. You can specify as many files as you like. If you specify two files with different oaths but the same name then they must be accessed by hash. datasite publish . - publishes current directory to the internet! Uses now by default, if it detects it on your path. Other publishers will be eventually added as plugins. datasite publish http://path-to-db.db - publishes a DB available at a URL. Works by constructing the Dockerfile with wget calls in it. datasite blah.db -m metadata.json If you specify a directory it looks for metadata.json in that directory. Otherwise you can pass an explicit metadata file oath with -m or —metadata {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
339516032 https://github.com/simonw/datasette/issues/40#issuecomment-339516032 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTUxNjAzMg== simonw 9599 2017-10-26T00:44:52Z 2017-10-26T00:44:52Z OWNER Another potential name: datapi {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
339517846 https://github.com/simonw/datasette/issues/40#issuecomment-339517846 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTUxNzg0Ng== simonw 9599 2017-10-26T00:58:39Z 2017-10-26T00:58:39Z OWNER I’m going to use Click for this http://nvie.com/posts/writing-a-cli-in-python-in-under-60-seconds/ https://kushaldas.in/posts/building-command-line-tools-in-python-with-click.html {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
339724700 https://github.com/simonw/datasette/issues/40#issuecomment-339724700 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTcyNDcwMA== simonw 9599 2017-10-26T16:35:20Z 2017-10-26T16:35:20Z OWNER Here’s how to make the “serve” subcommand the default if it is called with no arguments: @click.group(invoke_without_command=True) def serve(): # ... {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
339866724 https://github.com/simonw/datasette/issues/41#issuecomment-339866724 https://api.github.com/repos/simonw/datasette/issues/41 MDEyOklzc3VlQ29tbWVudDMzOTg2NjcyNA== simonw 9599 2017-10-27T04:04:52Z 2017-10-27T04:04:52Z OWNER <img width="624" alt="databases" src="https://user-images.githubusercontent.com/9599/32087550-4e10b8a4-ba91-11e7-992b-e628d77114d0.png"> {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Homepage should show summary of databases 268590777  
339891755 https://github.com/simonw/datasette/issues/40#issuecomment-339891755 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDMzOTg5MTc1NQ== simonw 9599 2017-10-27T07:10:53Z 2017-10-27T07:10:53Z OWNER Deploys to Now aren't working at the moment - they aren't showing the uploaded databases, because I've broken the path handling somehow. I need to do a bit more work here. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
340561577 https://github.com/simonw/datasette/issues/40#issuecomment-340561577 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDM0MDU2MTU3Nw== simonw 9599 2017-10-30T19:43:40Z 2017-10-30T19:43:40Z OWNER http://the-hitchhikers-guide-to-packaging.readthedocs.io/en/latest/quickstart.html describes how to package this for PyPI {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
340787868 https://github.com/simonw/datasette/issues/39#issuecomment-340787868 https://api.github.com/repos/simonw/datasette/issues/39 MDEyOklzc3VlQ29tbWVudDM0MDc4Nzg2OA== simonw 9599 2017-10-31T14:54:14Z 2017-10-31T14:54:14Z OWNER Here’s how I can (I think) provide safe execution of arbitrary SQL while blocking PRAGMA calls: let people use names parameters in their SQL and apply strict filtering to the SQL query but not to the parameter values. cur.execute( "select * from people where name_last=:who and age=:age", { "who": who, "age": age }) In URL form: ?sql=select...&who=Terry&age=34 Now we can apply strict, dumb validation rules to the SQL part while allowing anything in the named queries - so people can execute a search for PRAGMA without being able to execute a PRAGMA statement. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Protect against malicious SQL that causes damage even though our DB is immutable 268469569  
341938424 https://github.com/simonw/datasette/issues/10#issuecomment-341938424 https://api.github.com/repos/simonw/datasette/issues/10 MDEyOklzc3VlQ29tbWVudDM0MTkzODQyNA== simonw 9599 2017-11-04T23:48:57Z 2017-11-04T23:48:57Z OWNER Done: https://github.com/simonw/stateless-datasets/commit/edaa10587e60946e0c1935333f6b79553db33798 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Set up Travis 267517381  
341945420 https://github.com/simonw/datasette/issues/40#issuecomment-341945420 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDM0MTk0NTQyMA== simonw 9599 2017-11-05T02:55:07Z 2017-11-05T02:55:07Z OWNER To simplify things a bit, I'm going to require that every database is explicitly listed in the command line. I won't support "serve everything in this directory" for the moment. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
342030075 https://github.com/simonw/datasette/issues/40#issuecomment-342030075 https://api.github.com/repos/simonw/datasette/issues/40 MDEyOklzc3VlQ29tbWVudDM0MjAzMDA3NQ== simonw 9599 2017-11-06T02:25:48Z 2017-11-06T02:25:48Z OWNER ... I tried that, I don't like it. I'm going to bring back "directory serving" by allowing you to pass a directory as an argument to `datasite` (including `datasite .`). I may even make `.` the default if you don't provide anything at all. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Implement command-line tool interface 268470572  
342032943 https://github.com/simonw/datasette/issues/16#issuecomment-342032943 https://api.github.com/repos/simonw/datasette/issues/16 MDEyOklzc3VlQ29tbWVudDM0MjAzMjk0Mw== simonw 9599 2017-11-06T02:50:07Z 2017-11-06T02:50:07Z OWNER Default look with Bootstrap 4 looks like this: <img width="871" alt="flights" src="https://user-images.githubusercontent.com/9599/32423242-1b4458ce-c25a-11e7-910f-2dc1de909b8f.png"> {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Default HTML/CSS needs to look reasonable and be responsive 267726219  
342484889 https://github.com/simonw/datasette/issues/44#issuecomment-342484889 https://api.github.com/repos/simonw/datasette/issues/44 MDEyOklzc3VlQ29tbWVudDM0MjQ4NDg4OQ== simonw 9599 2017-11-07T13:39:49Z 2017-11-07T13:39:49Z OWNER I’m going to call this feature “count values” {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} ?_group_count=country - return counts by specific column(s) 269731374  
342521344 https://github.com/simonw/datasette/issues/47#issuecomment-342521344 https://api.github.com/repos/simonw/datasette/issues/47 MDEyOklzc3VlQ29tbWVudDM0MjUyMTM0NA== simonw 9599 2017-11-07T15:37:45Z 2017-11-07T15:37:45Z OWNER GDS Registries could be fun too: https://registers.cloudapps.digital/ {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Create neat example database 271831408  
343164111 https://github.com/simonw/datasette/issues/32#issuecomment-343164111 https://api.github.com/repos/simonw/datasette/issues/32 MDEyOklzc3VlQ29tbWVudDM0MzE2NDExMQ== simonw 9599 2017-11-09T14:05:56Z 2017-11-09T14:05:56Z OWNER Implemented in 31b21f5c5e15fc3acab7fabb170c1da71dc3c98c {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Try running SQLite queries in a separate thread 268106803  
343168796 https://github.com/simonw/datasette/issues/48#issuecomment-343168796 https://api.github.com/repos/simonw/datasette/issues/48 MDEyOklzc3VlQ29tbWVudDM0MzE2ODc5Ng== simonw 9599 2017-11-09T14:22:21Z 2017-11-09T14:22:21Z OWNER Won't fix: ujson is not compatible with the custom JSON encoder I'm using here: https://github.com/simonw/immutabase/blob/b2dee11fcd989d9e2a7bf4de1e23dbc320c05013/immutabase/app.py#L401-L416 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Switch to ujson 272391665  
343237982 https://github.com/simonw/datasette/issues/49#issuecomment-343237982 https://api.github.com/repos/simonw/datasette/issues/49 MDEyOklzc3VlQ29tbWVudDM0MzIzNzk4Mg== simonw 9599 2017-11-09T17:58:01Z 2017-11-09T17:58:01Z OWNER More terms: * publish * share * docker * host * stateless I want to capture the idea of publishing an immutable database in a stateless container. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Pick a name 272661336  
343238262 https://github.com/simonw/datasette/issues/49#issuecomment-343238262 https://api.github.com/repos/simonw/datasette/issues/49 MDEyOklzc3VlQ29tbWVudDM0MzIzODI2Mg== simonw 9599 2017-11-09T17:58:59Z 2017-11-09T17:58:59Z OWNER The name should ideally be available on PyPI and should make sense as both a command line application and a library. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Pick a name 272661336  
343239062 https://github.com/simonw/datasette/issues/48#issuecomment-343239062 https://api.github.com/repos/simonw/datasette/issues/48 MDEyOklzc3VlQ29tbWVudDM0MzIzOTA2Mg== simonw 9599 2017-11-09T18:01:46Z 2017-11-09T18:01:46Z OWNER This looks promising: https://github.com/esnme/ultrajson/issues/124#issuecomment-323882878 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Switch to ujson 272391665  
343266326 https://github.com/simonw/datasette/issues/50#issuecomment-343266326 https://api.github.com/repos/simonw/datasette/issues/50 MDEyOklzc3VlQ29tbWVudDM0MzI2NjMyNg== simonw 9599 2017-11-09T19:33:18Z 2017-11-09T19:33:18Z OWNER http://sanic.readthedocs.io/en/latest/sanic/testing.html {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Unit tests against application itself 272694136  

Next page

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

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]);
Powered by Datasette · Queries took 303.381ms · About: simonw/datasette-graphql