issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Port Datasette to ASGI 42
- Authentication (and permissions) as a core concept 40
- Ability to sort (and paginate) by column 31
- link_or_copy_directory() error - Invalid cross-device link 28
- Export to CSV 27
- base_url configuration setting 27
- Documentation with recommendations on running Datasette in production without using Docker 26
- Ability for a canned query to write to the database 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- Redesign register_output_renderer callback 24
- Datasette Plugins 22
- "flash messages" mechanism 20
- Handle spatialite geometry columns better 19
- Ability to ship alpha and beta releases 18
- Facets 16
- Support "allow" block on root, databases and tables, not just queries 16
- Bug: Sort by column with NULL in next_page URL 15
- Support cross-database joins 15
- The ".upsert()" method is misnamed 15
- --dirs option for scanning directories for SQLite databases 15
- Document (and reconsider design of) Database.execute() and Database.execute_against_connection_in_thread() 15
- latest.datasette.io is no longer updating 15
- Database page loads too slowly with many large tables (due to table counts) 15
- Ability to customize presentation of specific columns in HTML view 14
- Allow plugins to define additional URL routes and views 14
- Mechanism for customizing the SQL used to select specific columns in the table view 14
- .execute_write() and .execute_write_fn() methods on Database 14
- Upload all my photos to a secure S3 bucket 14
- Canned query permissions mechanism 14
- Dockerfile should build more recent SQLite with FTS5 and spatialite support 13
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
649000075 | https://github.com/simonw/datasette/issues/842#issuecomment-649000075 | https://api.github.com/repos/simonw/datasette/issues/842 | MDEyOklzc3VlQ29tbWVudDY0OTAwMDA3NQ== | simonw 9599 | 2020-06-24T18:46:36Z | 2020-06-24T18:47:37Z | OWNER | Another magic parameter that would be useful would be Maybe This would be the first example of a magic parameter where part of the parameter name is used to configure the resulting value. Maybe neater to separate that with a different character? Unfortunately Actually this is already supported by the proposed design - |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Magic parameters for canned queries 638212085 | |
648998264 | https://github.com/simonw/datasette/issues/865#issuecomment-648998264 | https://api.github.com/repos/simonw/datasette/issues/865 | MDEyOklzc3VlQ29tbWVudDY0ODk5ODI2NA== | simonw 9599 | 2020-06-24T18:43:02Z | 2020-06-24T18:43:02Z | OWNER | Thanks for the bug report. Yes I think #838 may be the same issue. Will investigate. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url doesn't seem to work when adding criteria and clicking "apply" 644582921 | |
648997857 | https://github.com/simonw/datasette/issues/858#issuecomment-648997857 | https://api.github.com/repos/simonw/datasette/issues/858 | MDEyOklzc3VlQ29tbWVudDY0ODk5Nzg1Nw== | simonw 9599 | 2020-06-24T18:42:10Z | 2020-06-24T18:42:10Z | OWNER | I really need to get myself a Windows 10 development environment working so I can dig into this kind of bug properly. I have a gaming PC lying around that I could re-task for that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
publish heroku does not work on Windows 10 642388564 | |
648818707 | https://github.com/simonw/datasette/pull/866#issuecomment-648818707 | https://api.github.com/repos/simonw/datasette/issues/866 | MDEyOklzc3VlQ29tbWVudDY0ODgxODcwNw== | codecov[bot] 22429695 | 2020-06-24T13:26:14Z | 2020-06-24T13:26:14Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ master #866 +/-=======================================
Coverage 82.99% 82.99% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update pytest-asyncio requirement from <0.13,>=0.10 to >=0.10,<0.15 644610729 | |
648800356 | https://github.com/simonw/datasette/issues/838#issuecomment-648800356 | https://api.github.com/repos/simonw/datasette/issues/838 | MDEyOklzc3VlQ29tbWVudDY0ODgwMDM1Ng== | tballison 6739646 | 2020-06-24T12:51:48Z | 2020-06-24T12:51:48Z | NONE |
+1! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Incorrect URLs when served behind a proxy with base_url set 637395097 | |
648799963 | https://github.com/simonw/datasette/issues/865#issuecomment-648799963 | https://api.github.com/repos/simonw/datasette/issues/865 | MDEyOklzc3VlQ29tbWVudDY0ODc5OTk2Mw== | tballison 6739646 | 2020-06-24T12:51:01Z | 2020-06-24T12:51:01Z | NONE | This seems to be a duplicate of: https://github.com/simonw/datasette/issues/838 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url doesn't seem to work when adding criteria and clicking "apply" 644582921 | |
648669523 | https://github.com/simonw/datasette/issues/859#issuecomment-648669523 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0ODY2OTUyMw== | abdusco 3243482 | 2020-06-24T08:13:23Z | 2020-06-24T10:30:36Z | CONTRIBUTOR | I tried setting
I feel like 10 seconds is a magic number, like a processing timeout and datasette gives up and returns the page. Index page loads instantly, table page, query page, as well. But when I return to database page after some time, it loads in 10s. EDIT: It's always like 10 + 0.3s, like 10s wait and timeout then 300ms to render the page |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
648580556 | https://github.com/simonw/datasette/issues/864#issuecomment-648580556 | https://api.github.com/repos/simonw/datasette/issues/864 | MDEyOklzc3VlQ29tbWVudDY0ODU4MDU1Ng== | simonw 9599 | 2020-06-24T04:40:49Z | 2020-06-24T04:40:49Z | OWNER | The ideal fix here would be to rework my |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.add_message() doesn't work inside plugins 644309017 | |
648580236 | https://github.com/simonw/datasette/issues/864#issuecomment-648580236 | https://api.github.com/repos/simonw/datasette/issues/864 | MDEyOklzc3VlQ29tbWVudDY0ODU4MDIzNg== | simonw 9599 | 2020-06-24T04:39:39Z | 2020-06-24T04:39:39Z | OWNER | Urgh, fixing this is going to be a bit of a pain. Here's where I added that custom If I want this to be made available to Currently So I'm going to have to refactor this quite a bit to get that shared request object which can be passed both to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.add_message() doesn't work inside plugins 644309017 | |
648442511 | https://github.com/simonw/sqlite-utils/issues/117#issuecomment-648442511 | https://api.github.com/repos/simonw/sqlite-utils/issues/117 | MDEyOklzc3VlQ29tbWVudDY0ODQ0MjUxMQ== | simonw 9599 | 2020-06-23T21:39:41Z | 2020-06-23T21:39:41Z | OWNER | So there are two sides to supporting this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support for compound (composite) foreign keys 644161221 | |
648440634 | https://github.com/simonw/sqlite-utils/issues/117#issuecomment-648440634 | https://api.github.com/repos/simonw/sqlite-utils/issues/117 | MDEyOklzc3VlQ29tbWVudDY0ODQ0MDYzNA== | simonw 9599 | 2020-06-23T21:35:16Z | 2020-06-23T21:35:16Z | OWNER | Relevant discussion: https://github.com/simonw/sqlite-generate/issues/8#issuecomment-648438056 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support for compound (composite) foreign keys 644161221 | |
648440525 | https://github.com/simonw/sqlite-utils/issues/117#issuecomment-648440525 | https://api.github.com/repos/simonw/sqlite-utils/issues/117 | MDEyOklzc3VlQ29tbWVudDY0ODQ0MDUyNQ== | simonw 9599 | 2020-06-23T21:35:01Z | 2020-06-23T21:35:01Z | OWNER | Here's what's missing:
The first two columns returned by |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support for compound (composite) foreign keys 644161221 | |
648434885 | https://github.com/simonw/sqlite-utils/issues/116#issuecomment-648434885 | https://api.github.com/repos/simonw/sqlite-utils/issues/116 | MDEyOklzc3VlQ29tbWVudDY0ODQzNDg4NQ== | simonw 9599 | 2020-06-23T21:21:33Z | 2020-06-23T21:21:33Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for table.pks introspection property 644122661 | ||
648403834 | https://github.com/simonw/sqlite-utils/issues/116#issuecomment-648403834 | https://api.github.com/repos/simonw/sqlite-utils/issues/116 | MDEyOklzc3VlQ29tbWVudDY0ODQwMzgzNA== | simonw 9599 | 2020-06-23T20:36:29Z | 2020-06-23T20:36:29Z | OWNER | Should go in this section https://sqlite-utils.readthedocs.io/en/stable/python-api.html#introspection - under |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for table.pks introspection property 644122661 | |
648296323 | https://github.com/simonw/datasette/issues/694#issuecomment-648296323 | https://api.github.com/repos/simonw/datasette/issues/694 | MDEyOklzc3VlQ29tbWVudDY0ODI5NjMyMw== | kwladyka 3903726 | 2020-06-23T17:10:51Z | 2020-06-23T17:10:51Z | NONE | @simonw Did you find the reason? I had similar situation and I check this on millions ways. I am sure app doesn't consume such memory. I was trying the app with:
I was watching app with Only one solution is to change memory to 512M. It is definitely something wrong with I even did special app for testing this. It looks like when I cross very small amount of code / memory / app size in random when, then memory needs grow +hundreds. Nothing make sense here. Especially it works everywhere expect cloud run. Please let me know if you discovered something more. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish cloudrun --memory option 576582604 | |
648234787 | https://github.com/simonw/datasette/issues/859#issuecomment-648234787 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0ODIzNDc4Nw== | simonw 9599 | 2020-06-23T15:22:51Z | 2020-06-23T15:22:51Z | OWNER | I wonder if this is a SQLite caching issue then? Datasette has a configuration option for this but I haven't spent much time experimenting with it so I don't know how much of an impact it can have: https://datasette.readthedocs.io/en/stable/config.html#cache-size-kb |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
648232645 | https://github.com/simonw/datasette/issues/859#issuecomment-648232645 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0ODIzMjY0NQ== | abdusco 3243482 | 2020-06-23T15:19:53Z | 2020-06-23T15:19:53Z | CONTRIBUTOR | The issue seems to appear sporadically, like when I return to database page after a while, during which some records have been added to the database. I've just visited database, page first visit took ~10s, consecutive visits took 0.3s. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
648163272 | https://github.com/simonw/datasette/issues/859#issuecomment-648163272 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0ODE2MzI3Mg== | simonw 9599 | 2020-06-23T13:52:23Z | 2020-06-23T13:52:23Z | OWNER | I'm chunking inserts at 100 at a time right now: https://github.com/simonw/sqlite-utils/blob/4d9a3204361d956440307a57bd18c829a15861db/sqlite_utils/db.py#L1030 I think the performance is more down to using Faker to create the test data - generating millions of entirely fake, randomized records takes a fair bit of time. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647925594 | https://github.com/simonw/datasette/issues/859#issuecomment-647925594 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzkyNTU5NA== | abdusco 3243482 | 2020-06-23T05:55:21Z | 2020-06-23T06:28:29Z | CONTRIBUTOR | Hmm, not seeing the problem now. I have couple of workers that check some pages regularly and scrape new content and save to the DB. Could it be that datasette tries to recount tables every time database size changes? Normally it keeps a count cache, but as DB gets updated so often (new content every 5 min or so) it's practically recounting every time I go to the database page? EDIT: It turns out it doesn't hold cache with mutable databases. I'll update the issue with more findings and a better way to reproduce the problem if I encounter it again. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647936117 | https://github.com/simonw/datasette/issues/859#issuecomment-647936117 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzkzNjExNw== | abdusco 3243482 | 2020-06-23T06:25:17Z | 2020-06-23T06:25:17Z | CONTRIBUTOR |
Try chunking write operations into batches every 1000 records or so. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647935300 | https://github.com/simonw/datasette/issues/859#issuecomment-647935300 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzkzNTMwMA== | abdusco 3243482 | 2020-06-23T06:23:01Z | 2020-06-23T06:23:01Z | CONTRIBUTOR |
Ah that was a typo, I meant 50k. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647923666 | https://github.com/simonw/datasette/issues/859#issuecomment-647923666 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzkyMzY2Ng== | abdusco 3243482 | 2020-06-23T05:49:31Z | 2020-06-23T05:49:31Z | CONTRIBUTOR | I think I should mention that having FTS on all tables mean I have 5 visible, 25 hidden (FTS) tables displayed on database page. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647894903 | https://github.com/simonw/datasette/issues/859#issuecomment-647894903 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0Nzg5NDkwMw== | simonw 9599 | 2020-06-23T04:07:59Z | 2020-06-23T04:07:59Z | OWNER | Just to check: are you seeing the problem on this page: https://latest.datasette.io/fixtures (the database page) - or this page (the table page): https://latest.datasette.io/fixtures/compound_three_primary_keys If it's the table page then the problem may well be #862. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647893140 | https://github.com/simonw/datasette/issues/596#issuecomment-647893140 | https://api.github.com/repos/simonw/datasette/issues/596 | MDEyOklzc3VlQ29tbWVudDY0Nzg5MzE0MA== | simonw 9599 | 2020-06-23T03:59:51Z | 2020-06-23T03:59:51Z | OWNER | Related: #862 - a time limit on the total time spent considering suggested facets for a table. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle really wide tables better 507454958 | |
647892930 | https://github.com/simonw/datasette/issues/862#issuecomment-647892930 | https://api.github.com/repos/simonw/datasette/issues/862 | MDEyOklzc3VlQ29tbWVudDY0Nzg5MjkzMA== | simonw 9599 | 2020-06-23T03:58:48Z | 2020-06-23T03:58:48Z | OWNER | Should this be controlled be a separate configuration setting? I'm inclined to say no - I think instead I'll set the limit to be 10 * whatever |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Set an upper limit on total facet suggestion time for a page 643510821 | |
647890619 | https://github.com/simonw/datasette/issues/859#issuecomment-647890619 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0Nzg5MDYxOQ== | simonw 9599 | 2020-06-23T03:48:21Z | 2020-06-23T03:48:21Z | OWNER |
Looks like that will take 35 minutes to run (it's not a particularly fast tool). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647890378 | https://github.com/simonw/datasette/issues/859#issuecomment-647890378 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0Nzg5MDM3OA== | simonw 9599 | 2020-06-23T03:47:19Z | 2020-06-23T03:47:19Z | OWNER | I generated a 600MB database using sqlite-generate just now - with 100 tables at 100,00 rows and 3 tables at 1,000,000 rows - and performance of the database page was fine, 250ms. Those tables only had 4 columns each though. You said "200k+, 50+ rows in a couple of tables" - does that mean 50+ columns? I'll try with larger numbers of columns and see what difference that makes. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647889674 | https://github.com/simonw/datasette/issues/861#issuecomment-647889674 | https://api.github.com/repos/simonw/datasette/issues/861 | MDEyOklzc3VlQ29tbWVudDY0Nzg4OTY3NA== | simonw 9599 | 2020-06-23T03:44:17Z | 2020-06-23T03:44:17Z | OWNER | https://github.com/simonw/sqlite-generate is now ready to be used - see also https://pypi.org/project/sqlite-generate/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Script to generate larger SQLite test files 642652808 | |
647822757 | https://github.com/simonw/datasette/issues/861#issuecomment-647822757 | https://api.github.com/repos/simonw/datasette/issues/861 | MDEyOklzc3VlQ29tbWVudDY0NzgyMjc1Nw== | simonw 9599 | 2020-06-22T23:40:43Z | 2020-06-22T23:40:43Z | OWNER | I started building that tool here: https://github.com/simonw/sqlite-generate (I built a new cookiecutter template for that too, https://github.com/simonw/click-app) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Script to generate larger SQLite test files 642652808 | |
647803394 | https://github.com/simonw/datasette/issues/838#issuecomment-647803394 | https://api.github.com/repos/simonw/datasette/issues/838 | MDEyOklzc3VlQ29tbWVudDY0NzgwMzM5NA== | ChristopherWilks 6289012 | 2020-06-22T22:36:34Z | 2020-06-22T22:36:34Z | NONE | I also am seeing the same issue with an Apache setup (same even w/o But also want to say thanks for a great tool (this issue not withstanding)! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Incorrect URLs when served behind a proxy with base_url set 637395097 | |
647266979 | https://github.com/simonw/datasette/issues/861#issuecomment-647266979 | https://api.github.com/repos/simonw/datasette/issues/861 | MDEyOklzc3VlQ29tbWVudDY0NzI2Njk3OQ== | simonw 9599 | 2020-06-22T04:26:25Z | 2020-06-22T04:26:25Z | OWNER | I think this is a separate Click utility. I'm going to call it |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Script to generate larger SQLite test files 642652808 | |
647258199 | https://github.com/simonw/datasette/issues/687#issuecomment-647258199 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NzI1ODE5OQ== | simonw 9599 | 2020-06-22T03:55:20Z | 2020-06-22T03:55:20Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | ||
647237091 | https://github.com/simonw/datasette/issues/687#issuecomment-647237091 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NzIzNzA5MQ== | simonw 9599 | 2020-06-22T02:44:10Z | 2020-06-22T02:44:10Z | OWNER | Now split into four pages:
Still need to add the "Testing plugins" page, then I can close this issue. I should also do #855, documenting the new |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | |
647203845 | https://github.com/simonw/datasette/issues/687#issuecomment-647203845 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NzIwMzg0NQ== | simonw 9599 | 2020-06-22T00:32:42Z | 2020-06-22T00:32:42Z | OWNER | Maybe add this to the plugins.rst page near the top: ``` .. toctree:: :caption: See also :maxdepth: 1 plugin_hooks internals ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | |
647194131 | https://github.com/simonw/datasette/issues/859#issuecomment-647194131 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzE5NDEzMQ== | abdusco 3243482 | 2020-06-21T23:15:54Z | 2020-06-21T23:26:09Z | CONTRIBUTOR | I'm not sure if table counts are to blame. There shouldn't be a ~3 orders of magnitude difference. ```fish user@klein /a/w/scrapyard (master)> set sql "select count() from table_1; select count() from table_2; select count(*) from table_3;" user@klein /a/w/scrapyard (master)> time sqlite3 scrapyard.db "$sql" 187489 46492 2229 Executed in 25.57 millis fish external usr time 3.55 millis 0.00 micros 3.55 millis sys time 22.42 millis 1123.00 micros 21.30 millis ``` but not letting datasette count the tables definitely helps. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647190177 | https://github.com/simonw/datasette/issues/687#issuecomment-647190177 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NzE5MDE3Nw== | simonw 9599 | 2020-06-21T22:32:36Z | 2020-06-21T22:32:36Z | OWNER | I'm going to break out the plugin hooks first in a single commit to make for a cleaner commit history (since that way git can hopefully detect that the content moved). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | |
647190144 | https://github.com/simonw/datasette/issues/687#issuecomment-647190144 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NzE5MDE0NA== | simonw 9599 | 2020-06-21T22:32:13Z | 2020-06-21T22:32:13Z | OWNER | So the new plan is NOT to have a
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | |
647189948 | https://github.com/simonw/datasette/issues/859#issuecomment-647189948 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzE4OTk0OA== | simonw 9599 | 2020-06-21T22:30:12Z | 2020-06-21T22:30:43Z | OWNER | I'll write a little script which generates a 300MB SQLite file with a bunch of tables with lots of randomly generated rows in to help test this. Having a tool like that which can generate larger databases with different gnarly performance characteristics will be useful for other performance work too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647189666 | https://github.com/simonw/datasette/issues/859#issuecomment-647189666 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzE4OTY2Ng== | simonw 9599 | 2020-06-21T22:26:55Z | 2020-06-21T22:26:55Z | OWNER | This makes a lot of sense. I implemented the mechanism for the index page because I have my own instance of Datasette that was running slow, but it had a dozen database files attached to it. I've not run into this with a single giant database file but it absolutely makes sense that the same optimization would be necessary for the database page there too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
647189535 | https://github.com/simonw/datasette/issues/860#issuecomment-647189535 | https://api.github.com/repos/simonw/datasette/issues/860 | MDEyOklzc3VlQ29tbWVudDY0NzE4OTUzNQ== | simonw 9599 | 2020-06-21T22:25:16Z | 2020-06-21T22:25:27Z | OWNER | This is also relevant to #639, and may mean I can close that ticket in place of this one. I'm going to get this at least to a proof-of-concept stage first though. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for instance/database/table metadata 642651572 | |
647189045 | https://github.com/simonw/datasette/issues/357#issuecomment-647189045 | https://api.github.com/repos/simonw/datasette/issues/357 | MDEyOklzc3VlQ29tbWVudDY0NzE4OTA0NQ== | simonw 9599 | 2020-06-21T22:19:58Z | 2020-06-21T22:19:58Z | OWNER | I'm going to take this in a different direction. I'm not happy with how So I'm going to close this ticket and spin up a new one for that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for loading metadata.json 348043884 | |
647135713 | https://github.com/simonw/datasette/issues/859#issuecomment-647135713 | https://api.github.com/repos/simonw/datasette/issues/859 | MDEyOklzc3VlQ29tbWVudDY0NzEzNTcxMw== | abdusco 3243482 | 2020-06-21T14:30:02Z | 2020-06-21T14:30:02Z | CONTRIBUTOR | Oops, the same method is called from both index and database pages. But removing select count queries speed up the page load quite a bit. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database page loads too slowly with many large tables (due to table counts) 642572841 | |
646938984 | https://github.com/simonw/datasette/issues/687#issuecomment-646938984 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NjkzODk4NA== | simonw 9599 | 2020-06-20T04:22:25Z | 2020-06-20T04:23:02Z | OWNER | I think I want the "Plugin hooks" page to be top-level, parallel to "Plugins" and "Internals for Plugins". It's the page of documentation refer to most often so I don't want to have to click down a hierarchy from the side navigation to find it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | |
646930455 | https://github.com/simonw/datasette/issues/687#issuecomment-646930455 | https://api.github.com/repos/simonw/datasette/issues/687 | MDEyOklzc3VlQ29tbWVudDY0NjkzMDQ1NQ== | simonw 9599 | 2020-06-20T03:22:21Z | 2020-06-20T03:22:21Z | OWNER | The tutorial can start by showing how to use the new cookiecutter template from #642. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand plugins documentation to multiple pages 572896293 | |
646930365 | https://github.com/simonw/datasette/issues/855#issuecomment-646930365 | https://api.github.com/repos/simonw/datasette/issues/855 | MDEyOklzc3VlQ29tbWVudDY0NjkzMDM2NQ== | simonw 9599 | 2020-06-20T03:21:48Z | 2020-06-20T03:21:48Z | OWNER | Maybe I should also refactor the plugin documentation, as contemplated in #687. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add instructions for using cookiecutter plugin template to plugin docs 642127307 | |
646930160 | https://github.com/simonw/datasette/issues/642#issuecomment-646930160 | https://api.github.com/repos/simonw/datasette/issues/642 | MDEyOklzc3VlQ29tbWVudDY0NjkzMDE2MA== | simonw 9599 | 2020-06-20T03:20:25Z | 2020-06-20T03:20:25Z | OWNER | Shipped this today! https://github.com/simonw/datasette-plugin is a cookiecutter template for creating new plugins. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Provide a cookiecutter template for creating new plugins 529429214 | |
646930059 | https://github.com/simonw/datasette/issues/642#issuecomment-646930059 | https://api.github.com/repos/simonw/datasette/issues/642 | MDEyOklzc3VlQ29tbWVudDY0NjkzMDA1OQ== | simonw 9599 | 2020-06-20T03:19:57Z | 2020-06-20T03:19:57Z | OWNER | @psychemedia sorry I missed your comment before. Niche Museums is definitely the best example of custom templates at the moment: https://github.com/simonw/museums/tree/master/templates I want to comprehensively document the variables made available to custom templates before shipping Datasette 1.0 - just filed that as #857. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Provide a cookiecutter template for creating new plugins 529429214 | |
646928638 | https://github.com/simonw/datasette/issues/855#issuecomment-646928638 | https://api.github.com/repos/simonw/datasette/issues/855 | MDEyOklzc3VlQ29tbWVudDY0NjkyODYzOA== | simonw 9599 | 2020-06-20T03:09:41Z | 2020-06-20T03:09:41Z | OWNER | I've shipped the cookiecutter template and used it to build https://github.com/simonw/datasette-saved-queries - it's ready to add to the official documentation. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add instructions for using cookiecutter plugin template to plugin docs 642127307 | |
646905073 | https://github.com/simonw/datasette/issues/852#issuecomment-646905073 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NjkwNTA3Mw== | simonw 9599 | 2020-06-20T00:21:34Z | 2020-06-20T00:22:28Z | OWNER | New repo: https://github.com/simonw/datasette-saved-queries - which I created using the new cookiecutter template at https://github.com/simonw/datasette-plugin |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
646760805 | https://github.com/simonw/datasette/issues/852#issuecomment-646760805 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0Njc2MDgwNQ== | simonw 9599 | 2020-06-19T17:07:45Z | 2020-06-19T17:07:45Z | OWNER | Plugin idea: Then it returns any queries from that table as additional canned queries. Bonus idea: it could write the user's actor_id to a column if they are signed in, and provide a link to see "just my saved queries" in that case. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
646686493 | https://github.com/simonw/datasette/issues/849#issuecomment-646686493 | https://api.github.com/repos/simonw/datasette/issues/849 | MDEyOklzc3VlQ29tbWVudDY0NjY4NjQ5Mw== | simonw 9599 | 2020-06-19T15:04:51Z | 2020-06-19T15:04:51Z | OWNER | https://twitter.com/jaffathecake/status/1273983493006077952 concerns what happens to open pull requests - they will automatically close when you remove |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename master branch to main 639072811 | |
646396772 | https://github.com/simonw/datasette/issues/852#issuecomment-646396772 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NjM5Njc3Mg== | simonw 9599 | 2020-06-19T02:16:47Z | 2020-06-19T02:16:47Z | OWNER | I'll close this once I've built a plugin against it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
646396690 | https://github.com/simonw/datasette/issues/852#issuecomment-646396690 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NjM5NjY5MA== | simonw 9599 | 2020-06-19T02:16:24Z | 2020-06-19T02:16:24Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | ||
646396499 | https://github.com/simonw/datasette/issues/852#issuecomment-646396499 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NjM5NjQ5OQ== | simonw 9599 | 2020-06-19T02:15:49Z | 2020-06-19T02:15:58Z | OWNER | Released an alpha preview in https://github.com/simonw/datasette/releases/tag/0.45a1 Wrote about this here: https://simonwillison.net/2020/Jun/19/datasette-alphas/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
646350530 | https://github.com/simonw/datasette/issues/852#issuecomment-646350530 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NjM1MDUzMA== | simonw 9599 | 2020-06-18T23:13:57Z | 2020-06-18T23:14:11Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
646329456 | https://github.com/simonw/datasette/issues/852#issuecomment-646329456 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NjMyOTQ1Ng== | simonw 9599 | 2020-06-18T22:07:09Z | 2020-06-18T22:07:37Z | OWNER | It would be neat if the queries returned by this hook could be restricted to specific users. I think I can do that by returning an "allow" block as part of the query. But... what if we allow users to save private queries and we might have thousands of users each with hundreds of saved queries? For that case it would be good if the plugin hook could take an optional This would also allow us to dynamically generate a canned query for "return the bookmarks belonging to this actor" or similar! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
646320237 | https://github.com/simonw/datasette/issues/807#issuecomment-646320237 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjMyMDIzNw== | simonw 9599 | 2020-06-18T21:41:16Z | 2020-06-18T21:41:16Z | OWNER | https://pypi.org/project/datasette/0.45a0/ is the release on PyPI. And in a fresh virtual environment:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646319315 | https://github.com/simonw/datasette/issues/807#issuecomment-646319315 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjMxOTMxNQ== | simonw 9599 | 2020-06-18T21:38:56Z | 2020-06-18T21:38:56Z | OWNER | This worked! https://pypi.org/project/datasette/#history https://github.com/simonw/datasette/releases/tag/0.45a0 is my manually created GitHub prerelease. https://datasette.readthedocs.io/en/latest/changelog.html#a0-2020-06-18 has the release notes. A shame Read The Docs doesn't seem to build the docs for these releases -it's not showing the tag in the releases pane here: Also the new tag isn't an option in the Build menu on https://readthedocs.org/projects/datasette/builds/ Not a big problem though since the "latest" tag on Read The Docs will still carry the in-development documentation. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646308467 | https://github.com/simonw/datasette/issues/835#issuecomment-646308467 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjMwODQ2Nw== | simonw 9599 | 2020-06-18T21:12:50Z | 2020-06-18T21:12:50Z | OWNER | Problem there is Login CSRF attacks: https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#login-csrf - I still want to perform CSRF checks on login forms, even though the user may not yet have any cookies. Maybe I can turn off CSRF checks for cookie-free requests but allow login forms to specifically opt back in to CSRF protection? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646307083 | https://github.com/simonw/datasette/issues/835#issuecomment-646307083 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjMwNzA4Mw== | simonw 9599 | 2020-06-18T21:09:35Z | 2020-06-18T21:09:35Z | OWNER | So maybe one really easy fix here is to disable CSRF checks entirely for any request that doesn't have any cookies? Also suggested here: https://twitter.com/mrkurt/status/1273682965168603137 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646303240 | https://github.com/simonw/datasette/issues/807#issuecomment-646303240 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjMwMzI0MA== | simonw 9599 | 2020-06-18T21:00:41Z | 2020-06-18T21:00:41Z | OWNER | New documentation about the alpha/beta releases: https://datasette.readthedocs.io/en/latest/contributing.html#contributing-alpha-beta |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646302909 | https://github.com/simonw/datasette/issues/807#issuecomment-646302909 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjMwMjkwOQ== | simonw 9599 | 2020-06-18T21:00:02Z | 2020-06-18T21:00:02Z | OWNER | Alpha release is running through Travis now: https://travis-ci.org/github/simonw/datasette/builds/699864168 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646293670 | https://github.com/simonw/datasette/issues/807#issuecomment-646293670 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI5MzY3MA== | simonw 9599 | 2020-06-18T20:38:50Z | 2020-06-18T20:38:50Z | OWNER | https://pypi.org/project/datasette-render-images/#history worked: I'm now confident enough that I'll make these changes and ship an alpha of Datasette itself. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646293029 | https://github.com/simonw/datasette/issues/807#issuecomment-646293029 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI5MzAyOQ== | simonw 9599 | 2020-06-18T20:37:28Z | 2020-06-18T20:37:46Z | OWNER | Here's the Read The Docs documentation on versioned releases: https://docs.readthedocs.io/en/stable/versions.html It looks like they do the right thing:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646292578 | https://github.com/simonw/datasette/issues/807#issuecomment-646292578 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI5MjU3OA== | simonw 9599 | 2020-06-18T20:36:22Z | 2020-06-18T20:36:22Z | OWNER | https://travis-ci.com/github/simonw/datasette-render-images/builds/172118541 demonstrates that the alpha/beta conditional is working as intended: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646291309 | https://github.com/simonw/datasette/issues/807#issuecomment-646291309 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI5MTMwOQ== | simonw 9599 | 2020-06-18T20:33:31Z | 2020-06-18T20:33:31Z | OWNER | One more experiment: I'm going to ship In the alpha releasing run on Travis that echo statement did NOT execute: https://travis-ci.com/github/simonw/datasette-render-images/builds/172116625 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646290171 | https://github.com/simonw/datasette/issues/807#issuecomment-646290171 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI5MDE3MQ== | simonw 9599 | 2020-06-18T20:30:48Z | 2020-06-18T20:30:48Z | OWNER | OK, I just shipped 0.2a0 of But this page does: https://pypi.org/project/datasette-render-images/#history And https://pypi.org/project/datasette-render-images/0.2a0/ exists. In a fresh virtual environment
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646288146 | https://github.com/simonw/datasette/issues/835#issuecomment-646288146 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjI4ODE0Ng== | simonw 9599 | 2020-06-18T20:26:22Z | 2020-06-18T20:26:31Z | OWNER | Useful tip from Carlton Gibson: https://twitter.com/carltongibson/status/1273680590672453632
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646280134 | https://github.com/simonw/datasette/issues/807#issuecomment-646280134 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI4MDEzNA== | simonw 9599 | 2020-06-18T20:08:15Z | 2020-06-18T20:08:15Z | OWNER | https://github.com/simonw/datasette-render-images uses Travis and is low-risk for trying this out. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646279428 | https://github.com/simonw/datasette/issues/807#issuecomment-646279428 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3OTQyOA== | simonw 9599 | 2020-06-18T20:06:43Z | 2020-06-18T20:06:43Z | OWNER | I'm going to try this on a separate repository so I don't accidentally publish a Datasette release I didn't mean to publish! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646279280 | https://github.com/simonw/datasette/issues/807#issuecomment-646279280 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3OTI4MA== | simonw 9599 | 2020-06-18T20:06:24Z | 2020-06-18T20:06:24Z | OWNER | So maybe this condition is right?
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646278801 | https://github.com/simonw/datasette/issues/807#issuecomment-646278801 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3ODgwMQ== | simonw 9599 | 2020-06-18T20:05:18Z | 2020-06-18T20:05:18Z | OWNER | Travis conditions documentation: https://docs.travis-ci.com/user/conditions-v1 These look useful:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646277680 | https://github.com/simonw/datasette/issues/807#issuecomment-646277680 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3NzY4MA== | simonw 9599 | 2020-06-18T20:02:42Z | 2020-06-18T20:02:42Z | OWNER | So I think if I push a tag of Except... I don't want to push alphas as Docker images - so I need to fix this code: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646277155 | https://github.com/simonw/datasette/issues/807#issuecomment-646277155 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3NzE1NQ== | simonw 9599 | 2020-06-18T20:01:31Z | 2020-06-18T20:01:31Z | OWNER | I thought I might have to update a regex (my CircleCI configs won't match on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646276150 | https://github.com/simonw/datasette/issues/807#issuecomment-646276150 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3NjE1MA== | simonw 9599 | 2020-06-18T19:59:17Z | 2020-06-18T19:59:17Z | OWNER | Relevant PEP: https://www.python.org/dev/peps/pep-0440/ Django's implementation dates back 8 years: https://github.com/django/django/commit/40f0ecc56a23d35c2849f8e79276f6d8931412d1 From the PEP:
I'm going to habitually include the 0. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646273035 | https://github.com/simonw/datasette/issues/807#issuecomment-646273035 | https://api.github.com/repos/simonw/datasette/issues/807 | MDEyOklzc3VlQ29tbWVudDY0NjI3MzAzNQ== | simonw 9599 | 2020-06-18T19:52:28Z | 2020-06-18T19:52:28Z | OWNER | I'd like this soon, because I want to start experimenting with things like #852 and #842 without shipping those plugin hooks in a full stable release. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to ship alpha and beta releases 632843030 | |
646272627 | https://github.com/simonw/datasette/issues/842#issuecomment-646272627 | https://api.github.com/repos/simonw/datasette/issues/842 | MDEyOklzc3VlQ29tbWVudDY0NjI3MjYyNw== | simonw 9599 | 2020-06-18T19:51:32Z | 2020-06-18T19:51:32Z | OWNER | I'd be OK with the first version of this not including a plugin hook. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Magic parameters for canned queries 638212085 | |
646264051 | https://github.com/simonw/datasette/issues/842#issuecomment-646264051 | https://api.github.com/repos/simonw/datasette/issues/842 | MDEyOklzc3VlQ29tbWVudDY0NjI2NDA1MQ== | simonw 9599 | 2020-06-18T19:32:13Z | 2020-06-18T19:32:37Z | OWNER | If every magic parameter has a prefix and suffix, like But does it make sense for every magic parameter to be of form |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Magic parameters for canned queries 638212085 | |
646246062 | https://github.com/simonw/datasette/issues/842#issuecomment-646246062 | https://api.github.com/repos/simonw/datasette/issues/842 | MDEyOklzc3VlQ29tbWVudDY0NjI0NjA2Mg== | simonw 9599 | 2020-06-18T18:54:41Z | 2020-06-18T18:54:41Z | OWNER | The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Magic parameters for canned queries 638212085 | |
646242172 | https://github.com/simonw/datasette/issues/842#issuecomment-646242172 | https://api.github.com/repos/simonw/datasette/issues/842 | MDEyOklzc3VlQ29tbWVudDY0NjI0MjE3Mg== | simonw 9599 | 2020-06-18T18:46:06Z | 2020-06-18T18:53:31Z | OWNER | Yes that can work - and using conn = sqlite3.connect(":memory:") class Magic(dict): def missing(self, key): return key.upper() conn.execute("select :name", Magic()).fetchall()
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Magic parameters for canned queries 638212085 | |
646238702 | https://github.com/simonw/datasette/issues/842#issuecomment-646238702 | https://api.github.com/repos/simonw/datasette/issues/842 | MDEyOklzc3VlQ29tbWVudDY0NjIzODcwMg== | simonw 9599 | 2020-06-18T18:39:07Z | 2020-06-18T18:39:07Z | OWNER | It would be nice if Datasette didn't have to do any additional work to find e.g. Could I do this with a custom class that implements |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Magic parameters for canned queries 638212085 | |
646218809 | https://github.com/simonw/datasette/issues/820#issuecomment-646218809 | https://api.github.com/repos/simonw/datasette/issues/820 | MDEyOklzc3VlQ29tbWVudDY0NjIxODgwOQ== | simonw 9599 | 2020-06-18T17:58:02Z | 2020-06-18T17:58:02Z | OWNER | I had the same idea again ten days later: #852. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Idea: Plugin hook for registering canned queries 635049296 | |
646217766 | https://github.com/simonw/datasette/issues/835#issuecomment-646217766 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjIxNzc2Ng== | simonw 9599 | 2020-06-18T17:55:54Z | 2020-06-18T17:56:04Z | OWNER | Idea: a mechanism where the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646216934 | https://github.com/simonw/datasette/issues/835#issuecomment-646216934 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjIxNjkzNA== | simonw 9599 | 2020-06-18T17:54:14Z | 2020-06-18T17:54:14Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646214158 | https://github.com/simonw/datasette/issues/835#issuecomment-646214158 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjIxNDE1OA== | simonw 9599 | 2020-06-18T17:48:45Z | 2020-06-18T17:48:45Z | OWNER | I wonder if it's safe to generically say "Don't do CSRF protection on any request that includes a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646209520 | https://github.com/simonw/datasette/issues/835#issuecomment-646209520 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjIwOTUyMA== | simonw 9599 | 2020-06-18T17:39:30Z | 2020-06-18T17:40:53Z | OWNER |
Since |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646204308 | https://github.com/simonw/datasette/issues/835#issuecomment-646204308 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjIwNDMwOA== | simonw 9599 | 2020-06-18T17:32:41Z | 2020-06-18T17:32:41Z | OWNER | The only way I can think of for a view to opt-out of CSRF protection is for them to be able to reconfigure the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646175055 | https://github.com/simonw/datasette/issues/835#issuecomment-646175055 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjE3NTA1NQ== | simonw 9599 | 2020-06-18T17:00:45Z | 2020-06-18T17:00:45Z | OWNER | Here's the Rails pattern for this: https://gist.github.com/maxivak/a25957942b6c21a41acd |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646172200 | https://github.com/simonw/datasette/issues/835#issuecomment-646172200 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjE3MjIwMA== | simonw 9599 | 2020-06-18T16:57:45Z | 2020-06-18T16:57:45Z | OWNER | I think there are a couple of steps to this one. The nature of CSRF is that it's about hijacking existing authentication credentials. If your Datasette site runs without any authentication plugins at all CSRF protection isn't actually useful. Some POST endpoints should be able to opt-out of CSRF protection entirely. A writable canned query that accepts anonymous poll submissions for example might determine that CSRF is not needed. If a plugin adds This means I need two new mechanisms:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646151706 | https://github.com/simonw/datasette/issues/835#issuecomment-646151706 | https://api.github.com/repos/simonw/datasette/issues/835 | MDEyOklzc3VlQ29tbWVudDY0NjE1MTcwNg== | simonw 9599 | 2020-06-18T16:36:23Z | 2020-06-18T16:36:23Z | OWNER | Tweeted about this here: https://twitter.com/simonw/status/1273655053170077701 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for skipping CSRF checks on API posts 637363686 | |
646140022 | https://github.com/simonw/datasette/issues/853#issuecomment-646140022 | https://api.github.com/repos/simonw/datasette/issues/853 | MDEyOklzc3VlQ29tbWVudDY0NjE0MDAyMg== | simonw 9599 | 2020-06-18T16:21:53Z | 2020-06-18T16:21:53Z | OWNER | I have a test that demonstrates this working, but also demonstrates that the CSRF protection from #798 makes this really tricky to work with. I'd like to improve that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ensure register_routes() works for POST 640943441 | |
645785830 | https://github.com/simonw/datasette/issues/852#issuecomment-645785830 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NTc4NTgzMA== | simonw 9599 | 2020-06-18T05:37:00Z | 2020-06-18T05:37:00Z | OWNER | The easiest way to do this would be with a new plugin hook:
Another approach would be to make the whole of I think I like the dedicated |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
645781482 | https://github.com/simonw/datasette/issues/852#issuecomment-645781482 | https://api.github.com/repos/simonw/datasette/issues/852 | MDEyOklzc3VlQ29tbWVudDY0NTc4MTQ4Mg== | simonw 9599 | 2020-06-18T05:24:55Z | 2020-06-18T05:25:00Z | OWNER | Question about this on Twitter: https://twitter.com/amjithr/status/1273440766862352384 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
canned_queries() plugin hook 640917326 | |
645599881 | https://github.com/dogsheep/twitter-to-sqlite/issues/47#issuecomment-645599881 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/47 | MDEyOklzc3VlQ29tbWVudDY0NTU5OTg4MQ== | simonw 9599 | 2020-06-17T20:13:48Z | 2020-06-17T20:13:48Z | MEMBER | I've now figured out how to compile specific SQLite versions to help replicate this problem: https://github.com/simonw/til/blob/master/sqlite/ld-preload.md Next step: replicate the problem! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fall back to FTS4 if FTS5 is not available 639542974 | |
645515103 | https://github.com/dogsheep/twitter-to-sqlite/issues/47#issuecomment-645515103 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/47 | MDEyOklzc3VlQ29tbWVudDY0NTUxNTEwMw== | hpk42 73579 | 2020-06-17T17:30:01Z | 2020-06-17T17:30:01Z | NONE | It's the one with python3.7::
On Wed, Jun 17, 2020 at 10:24 -0700, Simon Willison wrote:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fall back to FTS4 if FTS5 is not available 639542974 | |
645512127 | https://github.com/dogsheep/twitter-to-sqlite/issues/47#issuecomment-645512127 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/47 | MDEyOklzc3VlQ29tbWVudDY0NTUxMjEyNw== | simonw 9599 | 2020-06-17T17:24:22Z | 2020-06-17T17:24:22Z | MEMBER | That means your version of SQLite is old enough that it doesn't support the FTS5 extension. Could you share what operating system you're running, and what the output is that you get from running this?
I can teach this tool to fall back on FTS4 if FTS5 isn't available. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fall back to FTS4 if FTS5 is not available 639542974 | |
645293374 | https://github.com/simonw/datasette/issues/851#issuecomment-645293374 | https://api.github.com/repos/simonw/datasette/issues/851 | MDEyOklzc3VlQ29tbWVudDY0NTI5MzM3NA== | abdusco 3243482 | 2020-06-17T10:32:02Z | 2020-06-17T10:32:28Z | CONTRIBUTOR | Welp, I'm an idiot. Turns out I had a sneaky comma Correcting the SQL solved the issue. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Having trouble getting writable canned queries to work 640330278 | |
645068128 | https://github.com/simonw/datasette/issues/850#issuecomment-645068128 | https://api.github.com/repos/simonw/datasette/issues/850 | MDEyOklzc3VlQ29tbWVudDY0NTA2ODEyOA== | simonw 9599 | 2020-06-16T23:52:16Z | 2020-06-16T23:52:16Z | OWNER | https://aws.amazon.com/blogs/compute/announcing-http-apis-for-amazon-api-gateway/ looks very important here: AWS HTTP APIs were introduced in December 2019 and appear to be a third of the price of API Gateway. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proof of concept for Datasette on AWS Lambda with EFS 639993467 | |
645067611 | https://github.com/simonw/datasette/issues/236#issuecomment-645067611 | https://api.github.com/repos/simonw/datasette/issues/236 | MDEyOklzc3VlQ29tbWVudDY0NTA2NzYxMQ== | simonw 9599 | 2020-06-16T23:50:12Z | 2020-06-16T23:50:59Z | OWNER | As for your other questions:
Yes, exactly. I know this will limit the size of database that can be deployed (since Lambda has a 50MB total package limit as far as I can tell) but there are plenty of interesting databases that are small enough to fit there. The new EFS support for Lambda means that theoretically the size of database is now unlimited, which is really interesting. That's what got me inspired to take a look at a proof of concept in #850.
I personally like scale-to-zero because many of my projects are likely to receive very little traffic. So API GW first, and maybe ALB as an option later on for people operating at scale?
As you've found, the only native component is uvloop which is only needed if uvicorn is being used to serve requests.
For the eventual "datasette publish lambda" command I want whatever results in the smallest amount of inconvenience for users. I've been trying out Amazon SAM in #850 and it requires users to run Docker on their machines, which is a pretty huge barrier to entry! I don't have much experience with CloudFormation but it's probably a better bet, especially if you can "pip install" the dependencies needed to deploy with it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish lambda plugin 317001500 | |
645066486 | https://github.com/simonw/datasette/issues/236#issuecomment-645066486 | https://api.github.com/repos/simonw/datasette/issues/236 | MDEyOklzc3VlQ29tbWVudDY0NTA2NjQ4Ng== | simonw 9599 | 2020-06-16T23:45:45Z | 2020-06-16T23:45:45Z | OWNER | Hi Colin, Sorry I didn't see this sooner! I've just started digging into this myself, to try and play with the new EFS Lambda support: #850. Yes, uvloop is only needed because of uvicorn. I have a branch here that removes that dependency just for trying out Lambda: https://github.com/simonw/datasette/tree/no-uvicorn - so you can run I'm going to try out your |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish lambda plugin 317001500 |
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]);
user >30