issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
updated_at (date) >30 ✖
- 2020-09-22 53
- 2020-10-15 52
- 2020-10-30 49
- 2020-06-09 43
- 2020-10-20 40
- 2020-06-18 39
- 2020-12-18 39
- 2020-05-27 38
- 2020-12-30 38
- 2020-10-09 37
- 2020-06-01 33
- 2020-06-08 33
- 2020-09-15 33
- 2019-06-24 31
- 2020-09-21 31
- 2019-06-23 30
- 2018-04-16 29
- 2020-06-06 29
- 2020-06-16 29
- 2020-10-16 29
- 2020-05-30 28
- 2020-11-24 28
- 2020-12-31 28
- 2021-01-03 28
- 2017-11-13 27
- 2017-11-14 27
- 2020-02-14 27
- 2020-03-23 27
- 2020-08-18 26
- 2020-06-29 25
- …
issue >30
- JavaScript plugin hooks mechanism similar to pluggy 45
- Port Datasette to ASGI 42
- Authentication (and permissions) as a core concept 40
- await datasette.client.get(path) mechanism for executing internal requests 33
- Maintain an in-memory SQLite table of connected databases and their tables 32
- 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 27
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- Redesign register_output_renderer callback 24
- "datasette insert" command and plugin hook 23
- Datasette Plugins 22
- table.extract(...) method and "sqlite-utils extract" command 21
- Redesign default .json format 21
- Handle spatialite geometry columns better 20
- "flash messages" mechanism 20
- Move CI to GitHub Issues 20
- load_template hook doesn't work for include/extends 20
- ?sort=colname~numeric to sort by by column cast to real 19
- Better way of representing binary data in .csv output 19
- Introspect if table is FTS4 or FTS5 19
- Ability to ship alpha and beta releases 18
- Magic parameters for canned queries 18
- datasette.client internal requests mechanism 18
- Mechanism for storing metadata in _metadata tables 18
- Facets 16
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
754210356 | https://github.com/simonw/datasette/issues/983#issuecomment-754210356 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1NDIxMDM1Ng== | carlmjohnson 222245 | 2021-01-04T20:49:05Z | 2021-01-04T20:49:05Z | NONE | For reasons I've written about elsewhere, I'm in favor of modules. It has several beneficial effects. One, old browsers just ignore it all together. Two, if you include the same plain script on the page more than once, it will be executed twice, but if you include the same module script on a page twice, it will only execute once. Three, you get a module local namespace, instead of having to use the global window namespace or a function private namespace. OTOH, if you are going to use an old style script, the code from before isn't ideal, because you wipe out your registry if the script it included more than once. Also you may as well use object methods and splat arguments. The event based architecture probably makes more sense though. Just make up some event names prefixed with ```js function mycallback(){ // whatever } if (window.datasette) { window.datasette.init(mycallback); } else { document.addEventListener('datasette:init', mycallback); } ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
754194996 | https://github.com/simonw/datasette/issues/668#issuecomment-754194996 | https://api.github.com/repos/simonw/datasette/issues/668 | MDEyOklzc3VlQ29tbWVudDc1NDE5NDk5Ng== | simonw 9599 | 2021-01-04T20:18:39Z | 2021-01-04T20:18:39Z | OWNER | I fixed this in #1115 - you can run |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make it easier to load SpatiaLite 563347679 | |
754193501 | https://github.com/simonw/datasette/issues/436#issuecomment-754193501 | https://api.github.com/repos/simonw/datasette/issues/436 | MDEyOklzc3VlQ29tbWVudDc1NDE5MzUwMQ== | simonw 9599 | 2021-01-04T20:15:41Z | 2021-01-04T20:15:41Z | OWNER | Sadly |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
400 Error when trying to register new user via https://publish.datasettes.com/ 435819321 | |
754192873 | https://github.com/simonw/datasette/issues/371#issuecomment-754192873 | https://api.github.com/repos/simonw/datasette/issues/371 | MDEyOklzc3VlQ29tbWVudDc1NDE5Mjg3Mw== | simonw 9599 | 2021-01-04T20:14:28Z | 2021-01-04T20:14:28Z | OWNER | Now that Digital Ocean has App Platform this is less necessary, especially since the documentation covers how to use App Platform here: https://docs.datasette.io/en/stable/deploying.html#deploying-using-buildpacks |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish digitalocean plugin 377156339 | |
754192267 | https://github.com/simonw/datasette/issues/102#issuecomment-754192267 | https://api.github.com/repos/simonw/datasette/issues/102 | MDEyOklzc3VlQ29tbWVudDc1NDE5MjI2Nw== | simonw 9599 | 2021-01-04T20:13:19Z | 2021-01-04T20:13:19Z | OWNER | I'm more likely to do Lambda than Elastic Beanstalk, especially now the size limit for Lambdas has been increased as part of their support for Docker. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish elasticbeanstalk 274264175 | |
754191699 | https://github.com/simonw/datasette/issues/221#issuecomment-754191699 | https://api.github.com/repos/simonw/datasette/issues/221 | MDEyOklzc3VlQ29tbWVudDc1NDE5MTY5OQ== | simonw 9599 | 2021-01-04T20:12:14Z | 2021-01-04T20:12:14Z | OWNER | I'm going to close this. Plugins can register their own CLI tools (see https://github.com/simonw/click-app) if they need to. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow plugins to add new cli sub commands 315142414 | |
754190952 | https://github.com/simonw/datasette/issues/221#issuecomment-754190952 | https://api.github.com/repos/simonw/datasette/issues/221 | MDEyOklzc3VlQ29tbWVudDc1NDE5MDk1Mg== | simonw 9599 | 2021-01-04T20:10:51Z | 2021-01-04T20:10:51Z | OWNER | Is this still a good idea? I don't have any pressing need for it at the moment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow plugins to add new cli sub commands 315142414 | |
754190814 | https://github.com/simonw/datasette/issues/221#issuecomment-754190814 | https://api.github.com/repos/simonw/datasette/issues/221 | MDEyOklzc3VlQ29tbWVudDc1NDE5MDgxNA== | simonw 9599 | 2021-01-04T20:10:34Z | 2021-01-04T20:10:34Z | OWNER | For the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow plugins to add new cli sub commands 315142414 | |
754188383 | https://github.com/simonw/datasette/issues/18#issuecomment-754188383 | https://api.github.com/repos/simonw/datasette/issues/18 | MDEyOklzc3VlQ29tbWVudDc1NDE4ODM4Mw== | simonw 9599 | 2021-01-04T20:05:48Z | 2021-01-04T20:05:48Z | OWNER | I'm not using Sanic any more, but this is still very feasible. If I ever do it I'll write a plugin. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
See if I can get a websockets interface working 267739593 | |
754188099 | https://github.com/simonw/datasette/issues/103#issuecomment-754188099 | https://api.github.com/repos/simonw/datasette/issues/103 | MDEyOklzc3VlQ29tbWVudDc1NDE4ODA5OQ== | simonw 9599 | 2021-01-04T20:05:14Z | 2021-01-04T20:05:14Z | OWNER | Wontfix, Cloud Run is already implemented and is a better fit for Datasette. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish appengine 274265878 | |
754187520 | https://github.com/simonw/datasette/issues/913#issuecomment-754187520 | https://api.github.com/repos/simonw/datasette/issues/913 | MDEyOklzc3VlQ29tbWVudDc1NDE4NzUyMA== | simonw 9599 | 2021-01-04T20:04:10Z | 2021-01-04T20:04:10Z | OWNER | That's pretty elegant: each plugin gets its own namespace and can register new settings. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for passing additional options to `datasette my.db` that affect plugins 670209331 | |
754187326 | https://github.com/simonw/datasette/issues/913#issuecomment-754187326 | https://api.github.com/repos/simonw/datasette/issues/913 | MDEyOklzc3VlQ29tbWVudDc1NDE4NzMyNg== | simonw 9599 | 2021-01-04T20:03:50Z | 2021-01-04T20:03:50Z | OWNER | I renamed
Note the lack of colons. This actually makes colons cleaner to use for plugins - I could support this:
|
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for passing additional options to `datasette my.db` that affect plugins 670209331 | |
754184287 | https://github.com/simonw/datasette/issues/1111#issuecomment-754184287 | https://api.github.com/repos/simonw/datasette/issues/1111 | MDEyOklzc3VlQ29tbWVudDc1NDE4NDI4Nw== | simonw 9599 | 2021-01-04T19:57:53Z | 2021-01-04T19:57:53Z | OWNER | Relevant new feature in sqlite-utils: the ability to use triggers to maintain fast counts. This optimization could help a lot here. https://github.com/simonw/sqlite-utils/issues/212 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Accessing a database's `.json` is slow for very large SQLite files 751195017 | |
754182058 | https://github.com/simonw/datasette/issues/1164#issuecomment-754182058 | https://api.github.com/repos/simonw/datasette/issues/1164 | MDEyOklzc3VlQ29tbWVudDc1NDE4MjA1OA== | simonw 9599 | 2021-01-04T19:53:31Z | 2021-01-04T19:53:31Z | OWNER | This will be helped by the new |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for minifying JavaScript that ships with Datasette 776634318 | |
754181646 | https://github.com/simonw/datasette/pull/1170#issuecomment-754181646 | https://api.github.com/repos/simonw/datasette/issues/1170 | MDEyOklzc3VlQ29tbWVudDc1NDE4MTY0Ng== | simonw 9599 | 2021-01-04T19:52:40Z | 2021-01-04T19:52:40Z | OWNER | Thank you very much! |
{ "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 | |
754181647 | https://github.com/simonw/datasette/issues/983#issuecomment-754181647 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1NDE4MTY0Nw== | jussiarpalahti 11941245 | 2021-01-04T19:52:40Z | 2021-01-04T19:52:40Z | NONE | I was thinking JavaScript plugins going with server side template extensions custom HTML. Attach my own widgets on there and listen for Datasette events to refresh when user interacts with main UI. Like a map view or table that updates according to selected column. There's certainly other ways to look at this. Perhaps you could list possible hooks or high level design doc on what would be possible with the plugin system? Re: modules. I would like to see modules supported at least in development. The developer experience is so much better than what JavaScript coding has been in the past. With large parts of NPM at your disposal I’d imagine even less experienced coder can whisk a custom plugin in no time. Proper production build system (like one you get with Pika or Parcel) could package everything up into bundles that older browsers can understand. Though that does come with performance and size penalties alongside the added complexity. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
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 | |
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 |
{ "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 | |
754002859 | https://github.com/simonw/datasette/pull/1170#issuecomment-754002859 | https://api.github.com/repos/simonw/datasette/issues/1170 | MDEyOklzc3VlQ29tbWVudDc1NDAwMjg1OQ== | codecov[bot] 22429695 | 2021-01-04T14:22:52Z | 2021-01-04T14:22:52Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1170 +/-=======================================
Coverage 91.55% 91.55% 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 } |
Install Prettier via package.json 778126516 | |
753690280 | https://github.com/simonw/datasette/issues/983#issuecomment-753690280 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzY5MDI4MA== | simonw 9599 | 2021-01-03T23:13:30Z | 2021-01-03T23:13:30Z | OWNER | Oh that's interesting, I hadn't thought about plugins firing events - just responding to events fired by the rest of the application. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753671902 | https://github.com/simonw/sqlite-utils/issues/219#issuecomment-753671902 | https://api.github.com/repos/simonw/sqlite-utils/issues/219 | MDEyOklzc3VlQ29tbWVudDc1MzY3MTkwMg== | simonw 9599 | 2021-01-03T20:31:04Z | 2021-01-03T20:32:13Z | OWNER | A |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
reset_counts() method and command 777707544 | |
753671235 | https://github.com/simonw/sqlite-utils/issues/219#issuecomment-753671235 | https://api.github.com/repos/simonw/sqlite-utils/issues/219 | MDEyOklzc3VlQ29tbWVudDc1MzY3MTIzNQ== | simonw 9599 | 2021-01-03T20:25:10Z | 2021-01-03T20:25:10Z | OWNER | To detect tables, look at the names of the triggers - |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
reset_counts() method and command 777707544 | |
753671009 | https://github.com/simonw/sqlite-utils/issues/219#issuecomment-753671009 | https://api.github.com/repos/simonw/sqlite-utils/issues/219 | MDEyOklzc3VlQ29tbWVudDc1MzY3MTAwOQ== | simonw 9599 | 2021-01-03T20:22:53Z | 2021-01-03T20:22:53Z | OWNER | I think this should be accompanied by a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
reset_counts() method and command 777707544 | |
753670833 | https://github.com/simonw/sqlite-utils/issues/219#issuecomment-753670833 | https://api.github.com/repos/simonw/sqlite-utils/issues/219 | MDEyOklzc3VlQ29tbWVudDc1MzY3MDgzMw== | simonw 9599 | 2021-01-03T20:20:54Z | 2021-01-03T20:20:54Z | OWNER | This is a little tricky. We should assume that the existing values in the But that means we need to figure out which tables in the database have the counts triggers defined. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
reset_counts() method and command 777707544 | |
753668099 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753668099 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2ODA5OQ== | simonw 9599 | 2021-01-03T19:55:53Z | 2021-01-03T19:55:53Z | OWNER | So if you instantiate the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753665521 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753665521 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2NTUyMQ== | simonw 9599 | 2021-01-03T19:31:33Z | 2021-01-03T19:31:33Z | OWNER | I'm having second thoughts about this being the default behaviour. It's pretty weird. I feel like HUGE databases that need this are rare, so having it on by default doesn't make sense. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753662490 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753662490 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2MjQ5MA== | simonw 9599 | 2021-01-03T19:05:53Z | 2021-01-03T19:05:53Z | OWNER | Idea: a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753661292 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753661292 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2MTI5Mg== | simonw 9599 | 2021-01-03T18:56:06Z | 2021-01-03T18:56:23Z | OWNER | Another option: on creation of the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753661158 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753661158 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2MTE1OA== | simonw 9599 | 2021-01-03T18:55:16Z | 2021-01-03T18:55:16Z | OWNER | Alternative implementation: provided |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753660814 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753660814 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2MDgxNA== | simonw 9599 | 2021-01-03T18:53:05Z | 2021-01-03T18:53:05Z | OWNER | Here's the current It's implemented on I'm a bit cautious about making that property so much more complex. In order to decide if it should try the
Then it can do the query, and if the query fails it can fall back on the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753660379 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753660379 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzY2MDM3OQ== | simonw 9599 | 2021-01-03T18:50:15Z | 2021-01-03T18:50:15Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753659260 | https://github.com/simonw/sqlite-utils/issues/206#issuecomment-753659260 | https://api.github.com/repos/simonw/sqlite-utils/issues/206 | MDEyOklzc3VlQ29tbWVudDc1MzY1OTI2MA== | simonw 9599 | 2021-01-03T18:42:01Z | 2021-01-03T18:42:01Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils should suggest --csv if JSON parsing fails 761915790 | |
753657180 | https://github.com/simonw/datasette/issues/1169#issuecomment-753657180 | https://api.github.com/repos/simonw/datasette/issues/1169 | MDEyOklzc3VlQ29tbWVudDc1MzY1NzE4MA== | simonw 9599 | 2021-01-03T18:23:30Z | 2021-01-03T18:23:30Z | OWNER | Also welcome in that PR would be a bit of documentation for contributors, see #1167 - but no problem if you leave that out, I'm happy to add it later. |
{ "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 | |
753653260 | https://github.com/simonw/datasette/issues/1169#issuecomment-753653260 | https://api.github.com/repos/simonw/datasette/issues/1169 | MDEyOklzc3VlQ29tbWVudDc1MzY1MzI2MA== | simonw 9599 | 2021-01-03T17:54:40Z | 2021-01-03T17:54:40Z | OWNER | And @benpickles yes I would land that pull request straight away as-is. Thanks! |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Prettier package not actually being cached 777677671 | |
753653033 | https://github.com/simonw/datasette/issues/1169#issuecomment-753653033 | https://api.github.com/repos/simonw/datasette/issues/1169 | MDEyOklzc3VlQ29tbWVudDc1MzY1MzAzMw== | simonw 9599 | 2021-01-03T17:52:53Z | 2021-01-03T17:52:53Z | OWNER | Oh that's so frustrating! I was worried about that - I spotted a few runs that seemed faster and hoped that it meant that the package was coming out of the You've convinced me that Datasette itself should have a But... I'd really love to figure out a general pattern for using Any ideas? The best I can think of is for the workflow itself to write out a |
{ "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 | |
753600999 | https://github.com/simonw/datasette/issues/983#issuecomment-753600999 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzYwMDk5OQ== | MarkusH 475613 | 2021-01-03T11:11:21Z | 2021-01-03T11:11:21Z | NONE | With regards to JS/Browser events, given your example of menu items that plugins could add, I could imagine this code to work:
// as part of a plugin const event = new Event(datasette.events.AddMenuItem, {link: '/foo/bar', title: 'Go somewhere'}); Document.dispatchEvent(event) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753587963 | https://github.com/simonw/datasette/issues/983#issuecomment-753587963 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzU4Nzk2Mw== | dracos 154364 | 2021-01-03T09:02:50Z | 2021-01-03T10:00:05Z | NONE |
Don't think you are :) (e.g. gzipped, using arrow functions in my example saves 2 bytes over spelling out function). On FMS, past month, looking at popular browsers, looks like we'd have 95.41% arrow support, 94.19% module support, and 4.58% (mostly IE9/IE11/Safari 9) supporting neither. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753570710 | https://github.com/simonw/datasette/issues/983#issuecomment-753570710 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzU3MDcxMA== | simonw 9599 | 2021-01-03T05:29:56Z | 2021-01-03T05:29:56Z | OWNER | I thought about using browser events, but they don't quite match the API that I'm looking to provide. In particular, the great thing about Pluggy is that if you have multiple handlers registered for a specific plugin hook each of those handlers can return a value, and Pluggy will combine those values into a list of replies. This is great for things like plugin hooks that add extra menu items - each plugin can return a menu item (maybe as a label/URL/click-callback object) and the calling code can then add all of those items to the menu. See https://docs.datasette.io/en/stable/plugin_hooks.html#table-actions-datasette-actor-database-table for a Python example. I'm on the fence about relying on JavaScript modules. I need to think about browser compatibility for them - but I'm already commited to requiring support for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753568428 | https://github.com/simonw/datasette/issues/1160#issuecomment-753568428 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MzU2ODQyOA== | simonw 9599 | 2021-01-03T05:02:32Z | 2021-01-03T05:02:32Z | OWNER | Should this command include a I thought about doing that for But maybe I can set sensible defaults for that with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
753568264 | https://github.com/simonw/sqlite-utils/issues/202#issuecomment-753568264 | https://api.github.com/repos/simonw/sqlite-utils/issues/202 | MDEyOklzc3VlQ29tbWVudDc1MzU2ODI2NA== | simonw 9599 | 2021-01-03T05:00:24Z | 2021-01-03T05:00:24Z | OWNER | I'm not going to implement this, because it actually needs several additional options that already exist on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils insert -f colname - for configuring full-text search 738514367 | |
753567969 | https://github.com/simonw/sqlite-utils/issues/202#issuecomment-753567969 | https://api.github.com/repos/simonw/sqlite-utils/issues/202 | MDEyOklzc3VlQ29tbWVudDc1MzU2Nzk2OQ== | simonw 9599 | 2021-01-03T04:55:17Z | 2021-01-03T04:55:43Z | OWNER | The long version of this can be |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils insert -f colname - for configuring full-text search 738514367 | |
753567932 | https://github.com/simonw/sqlite-utils/pull/203#issuecomment-753567932 | https://api.github.com/repos/simonw/sqlite-utils/issues/203 | MDEyOklzc3VlQ29tbWVudDc1MzU2NzkzMg== | simonw 9599 | 2021-01-03T04:54:43Z | 2021-01-03T04:54:43Z | OWNER | Another option: expand the The question then is what should I'd be inclined to say they should return We can label Since this would still be a breaking change in some minor edge-cases I'm thinking maybe 4.0 needs to happen in order to land this feature. I'm not opposed to doing that, I was just hoping it might be avoidable. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
changes to allow for compound foreign keys 743384829 | |
753567744 | https://github.com/simonw/sqlite-utils/pull/203#issuecomment-753567744 | https://api.github.com/repos/simonw/sqlite-utils/issues/203 | MDEyOklzc3VlQ29tbWVudDc1MzU2Nzc0NA== | simonw 9599 | 2021-01-03T04:51:44Z | 2021-01-03T04:51:44Z | OWNER | One way that this could avoid a breaking change would be to have This is a bit of an ugly API design, and it could still break existing code that encounters a compound foreign key for the first time - but it would leave code working for the more common case of a non-compound-foreign-key. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
changes to allow for compound foreign keys 743384829 | |
753567508 | https://github.com/simonw/sqlite-utils/pull/203#issuecomment-753567508 | https://api.github.com/repos/simonw/sqlite-utils/issues/203 | MDEyOklzc3VlQ29tbWVudDc1MzU2NzUwOA== | simonw 9599 | 2021-01-03T04:48:17Z | 2021-01-03T04:48:17Z | OWNER | Sorry for taking so long to review this! This approach looks great to me - being able to optionally pass a tuple anywhere the API currently expects a column is smart, and it's consistent with how the There's just one problem I can see with this: the way it changes the This represents a breaking change to the existing API - any code that expects As such, I'd have to bump the major version of Ideally I'd like to make this change in a way that doesn't represent an API compatibility break. I need to think a bit harder about how that might be achieved. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
changes to allow for compound foreign keys 743384829 | |
753566184 | https://github.com/simonw/sqlite-utils/issues/217#issuecomment-753566184 | https://api.github.com/repos/simonw/sqlite-utils/issues/217 | MDEyOklzc3VlQ29tbWVudDc1MzU2NjE4NA== | simonw 9599 | 2021-01-03T04:27:38Z | 2021-01-03T04:27:38Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename .escape() to .quote() 777543336 | ||
753566156 | https://github.com/simonw/sqlite-utils/issues/216#issuecomment-753566156 | https://api.github.com/repos/simonw/sqlite-utils/issues/216 | MDEyOklzc3VlQ29tbWVudDc1MzU2NjE1Ng== | simonw 9599 | 2021-01-03T04:27:14Z | 2021-01-03T04:27:14Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
database.triggers_dict introspection property 777540352 | ||
753563757 | https://github.com/simonw/sqlite-utils/issues/218#issuecomment-753563757 | https://api.github.com/repos/simonw/sqlite-utils/issues/218 | MDEyOklzc3VlQ29tbWVudDc1MzU2Mzc1Nw== | simonw 9599 | 2021-01-03T03:49:51Z | 2021-01-03T03:49:51Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"sqlite-utils triggers" command 777560474 | ||
753545757 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753545757 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzU0NTc1Nw== | simonw 9599 | 2021-01-02T23:58:07Z | 2021-01-02T23:58:07Z | OWNER | Thought: maybe there should be a One way that could happen is if a table is dropped and recreated - the counts in the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753545381 | https://github.com/simonw/sqlite-utils/issues/215#issuecomment-753545381 | https://api.github.com/repos/simonw/sqlite-utils/issues/215 | MDEyOklzc3VlQ29tbWVudDc1MzU0NTM4MQ== | simonw 9599 | 2021-01-02T23:52:52Z | 2021-01-02T23:52:52Z | OWNER | Idea: a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use _counts to speed up counts 777535402 | |
753544914 | https://github.com/simonw/sqlite-utils/issues/217#issuecomment-753544914 | https://api.github.com/repos/simonw/sqlite-utils/issues/217 | MDEyOklzc3VlQ29tbWVudDc1MzU0NDkxNA== | simonw 9599 | 2021-01-02T23:47:42Z | 2021-01-02T23:47:42Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename .escape() to .quote() 777543336 | ||
753535488 | https://github.com/simonw/sqlite-utils/issues/213#issuecomment-753535488 | https://api.github.com/repos/simonw/sqlite-utils/issues/213 | MDEyOklzc3VlQ29tbWVudDc1MzUzNTQ4OA== | simonw 9599 | 2021-01-02T22:03:48Z | 2021-01-02T22:03:48Z | OWNER | I got this error while prototyping this:
It looks like that's because SQLite doesn't like triggers on a table that themselves then update that table - so I'm going to exclude the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db.enable_counts() method 777529979 | |
753533775 | https://github.com/simonw/sqlite-utils/issues/213#issuecomment-753533775 | https://api.github.com/repos/simonw/sqlite-utils/issues/213 | MDEyOklzc3VlQ29tbWVudDc1MzUzMzc3NQ== | simonw 9599 | 2021-01-02T21:47:10Z | 2021-01-02T21:47:10Z | OWNER | I'm going to skip virtual tables, which I can identify using this property: https://github.com/simonw/sqlite-utils/blob/1cad7fad3e7a5b734088f5cc545b69a055e636da/sqlite_utils/db.py#L720-L726 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db.enable_counts() method 777529979 | |
753531657 | https://github.com/simonw/datasette/issues/1012#issuecomment-753531657 | https://api.github.com/repos/simonw/datasette/issues/1012 | MDEyOklzc3VlQ29tbWVudDc1MzUzMTY1Nw== | bollwyvl 45380 | 2021-01-02T21:25:36Z | 2021-01-02T21:25:36Z | CONTRIBUTOR | Actually, on more research, I found out this is handled by the trove-classifiers package now, so it's just a one-liner pr instead of fire-up-a-docker-container-and-do-some-migrations |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
For 1.0 update trove classifier in setup.py 718540751 | |
753524779 | https://github.com/simonw/datasette/issues/1168#issuecomment-753524779 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzUyNDc3OQ== | simonw 9599 | 2021-01-02T20:19:26Z | 2021-01-02T20:19:26Z | OWNER | Idea: version the metadata scheme. If the table is called |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753422324 | https://github.com/simonw/sqlite-utils/issues/212#issuecomment-753422324 | https://api.github.com/repos/simonw/sqlite-utils/issues/212 | MDEyOklzc3VlQ29tbWVudDc1MzQyMjMyNA== | simonw 9599 | 2021-01-02T03:00:34Z | 2021-01-02T03:00:34Z | OWNER | Here's a prototype:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for maintaining cache of table counts using triggers 777392020 | |
753406744 | https://github.com/simonw/sqlite-utils/issues/210#issuecomment-753406744 | https://api.github.com/repos/simonw/sqlite-utils/issues/210 | MDEyOklzc3VlQ29tbWVudDc1MzQwNjc0NA== | simonw 9599 | 2021-01-02T00:02:39Z | 2021-01-02T00:02:39Z | OWNER | It looks like https://github.com/ofajardo/pyreadr is a good library for this. I won't add this to Normally I'd write a That work is happening over here: https://github.com/simonw/datasette/issues/1160 - I'll close this issue in favour of a sometime-in-the-future |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support of RData files 767685961 | |
753405835 | https://github.com/simonw/sqlite-utils/issues/209#issuecomment-753405835 | https://api.github.com/repos/simonw/sqlite-utils/issues/209 | MDEyOklzc3VlQ29tbWVudDc1MzQwNTgzNQ== | simonw 9599 | 2021-01-01T23:52:06Z | 2021-01-01T23:52:06Z | OWNER | I just hit this one too. Such a weird bug! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failure with sqlite 3.34 in test_cli.py::test_optimize 766156875 | |
753402423 | https://github.com/simonw/datasette/issues/1168#issuecomment-753402423 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzQwMjQyMw== | simonw 9599 | 2021-01-01T23:16:05Z | 2021-01-01T23:16:05Z | OWNER | One catch: solving the "show me all metadata for everything in this Datasette instance" problem. Ideally there would be a SQLite table that can be queried for this. But the need to resolve the potentially complex set of precedence rules means that table would be difficult if not impossible to provide at run-time. Ideally a denormalized table would be available that featured the results of running those precedence rule calculations. But how to handle keeping this up-to-date? It would need to be recalculated any time a This is a much larger problem - but one potential fix would be to use triggers to maintain a "version number" for the Such a mechanism would have applications outside of just this |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753401001 | https://github.com/simonw/datasette/issues/1168#issuecomment-753401001 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzQwMTAwMQ== | simonw 9599 | 2021-01-01T23:01:45Z | 2021-01-01T23:01:45Z | OWNER | I need to prototype this. Could I do that as a plugin? I think so - I could try out the algorithm for loading metadata and display it on pages using some custom templates. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753400420 | https://github.com/simonw/datasette/issues/1168#issuecomment-753400420 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzQwMDQyMA== | simonw 9599 | 2021-01-01T22:53:58Z | 2021-01-01T22:53:58Z | OWNER | Precedence idea:
- First priority is non-_internal metadata from other databases - if those conflict then pick then the alphabetically-ordered-first database name wins
- Next priority: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753400306 | https://github.com/simonw/datasette/issues/1168#issuecomment-753400306 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzQwMDMwNg== | simonw 9599 | 2021-01-01T22:52:44Z | 2021-01-01T22:52:44Z | OWNER | Also: probably load column metadata as part of the table metadata rather than loading column metadata individually, since it's going to be rare to want the metadata for a single column rather than for an entire table full of columns. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753400265 | https://github.com/simonw/datasette/issues/1168#issuecomment-753400265 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzQwMDI2NQ== | simonw 9599 | 2021-01-01T22:52:09Z | 2021-01-01T22:52:09Z | OWNER | From an implementation perspective, I think the way this works is SQL queries read the relevant metadata from ALL available metadata tables, then Python code solves the precedence rules to produce the final, combined metadata for a database/table/column. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753399635 | https://github.com/simonw/datasette/issues/1168#issuecomment-753399635 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5OTYzNQ== | simonw 9599 | 2021-01-01T22:45:21Z | 2021-01-01T22:50:21Z | OWNER | Would also need to figure out the precedence rules:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753399428 | https://github.com/simonw/datasette/issues/1168#issuecomment-753399428 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5OTQyOA== | simonw 9599 | 2021-01-01T22:43:14Z | 2021-01-01T22:43:22Z | OWNER | Could this use a compound primary key on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753399366 | https://github.com/simonw/datasette/issues/1168#issuecomment-753399366 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5OTM2Ng== | simonw 9599 | 2021-01-01T22:42:37Z | 2021-01-01T22:42:37Z | OWNER | So what would the database schema for this look like? I'm leaning towards a single table called If it's just a single | database | table | column | metadata | | --- | --- | --- | --- | | | mytable | | {"title": "My Table" } | | | mytable | mycolumn | {"description": "Column description" } | | otherdb | othertable | | {"description": "Table in another DB" } | If the The alternative to the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753398542 | https://github.com/simonw/datasette/issues/1168#issuecomment-753398542 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5ODU0Mg== | simonw 9599 | 2021-01-01T22:37:24Z | 2021-01-01T22:37:24Z | OWNER | The direction I'm leaning in now is the following:
Plugins that want to provide metadata can do so by populating a table. They could even maintain their own in-memory database for this, or they could write to the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753392102 | https://github.com/simonw/datasette/issues/1168#issuecomment-753392102 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5MjEwMg== | simonw 9599 | 2021-01-01T22:06:33Z | 2021-01-01T22:06:33Z | OWNER | Some SQLite databases include SQL comments in the schema definition which tell you what each column means:
I had an idea to build a plugin that could return these. That would be easy with a "get metadata for this column" plugin hook - in the absence of one a plugin could still run that reads the schemas on startup and uses them to populate a metadata database table somewhere. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753391869 | https://github.com/simonw/datasette/issues/1168#issuecomment-753391869 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5MTg2OQ== | simonw 9599 | 2021-01-01T22:04:30Z | 2021-01-01T22:04:30Z | OWNER | The sticking point here seems to be the plugin hook. Allowing plugins to over-ride the way the question "give me the metadata for this database/table/column" is answered makes the database-backed metadata mechanisms much more complicated to think about. What if plugins didn't get to over-ride metadata in this way, but could instead update the metadata in a persistent Datasette-managed storage mechanism? Then maybe Datasette could do the following:
If database files were optionally allowed to store metadata about tables that live in another database file this could perhaps solve the plugin needs - since an "edit metadata" plugin would be able to edit records in a separate, dedicated |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753390791 | https://github.com/simonw/datasette/issues/1168#issuecomment-753390791 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5MDc5MQ== | simonw 9599 | 2021-01-01T22:00:42Z | 2021-01-01T22:00:42Z | OWNER | Here are the requirements I'm currently trying to satisfy:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753390262 | https://github.com/simonw/datasette/issues/1168#issuecomment-753390262 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM5MDI2Mg== | simonw 9599 | 2021-01-01T21:58:11Z | 2021-01-01T21:58:11Z | OWNER | One possibility: plugins could write directly to that in-memory database table. But how would they know to write again should the server restart? Maybe they would write to it once when called by the Also: if I want to support metadata optionally living in a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753389938 | https://github.com/simonw/datasette/issues/1168#issuecomment-753389938 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM4OTkzOA== | simonw 9599 | 2021-01-01T21:54:15Z | 2021-01-01T21:54:15Z | OWNER | So what if the These columns could be populated by Datasette on startup through reading the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753389477 | https://github.com/simonw/datasette/issues/1168#issuecomment-753389477 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM4OTQ3Nw== | simonw 9599 | 2021-01-01T21:49:57Z | 2021-01-01T21:49:57Z | OWNER | What if metadata was stored in a JSON text column in the existing The downside of JSON columns generally is that they're harder to run indexed queries against. For metadata I don't think that matters - even with 10,000 tables each with their own metadata a SQL query asking for e.g. "everything that has Apache 2 as the license" would return in just a few ms. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753388809 | https://github.com/simonw/datasette/issues/1168#issuecomment-753388809 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM4ODgwOQ== | simonw 9599 | 2021-01-01T21:47:51Z | 2021-01-01T21:47:51Z | OWNER | A database that exposes metadata will have the same restriction as the new As such, I'd rather bundle any metadata tables into the existing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753366024 | https://github.com/simonw/datasette/issues/1168#issuecomment-753366024 | https://api.github.com/repos/simonw/datasette/issues/1168 | MDEyOklzc3VlQ29tbWVudDc1MzM2NjAyNA== | simonw 9599 | 2021-01-01T18:48:34Z | 2021-01-01T18:48:34Z | OWNER | Also: in #188 I proposed bundling metadata in the SQLite database itself alongside the data. This is a great way of ensuring metadata travels with the data when it is downloaded as a SQLite |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for storing metadata in _metadata tables 777333388 | |
753224999 | https://github.com/simonw/datasette/issues/983#issuecomment-753224999 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIyNDk5OQ== | jussiarpalahti 11941245 | 2020-12-31T23:29:36Z | 2020-12-31T23:29:36Z | NONE | I have yet to build Datasette plugin and am unfamiliar with Pluggy. Since browsers have event handling builtin Datasette could communicate with plugins through it. Handlers register as listeners for custom Datasette events and Datasette's JS can then trigger said events. I was also wondering if you had looked at Javascript Modules for JS plugins? With services like Skypack (https://www.skypack.dev) NPM libraries can be loaded directly into browser, no build step needed. Same goes for local JS if you adhere to ES Module spec. If minification is required then tools such as Snowpack (https://www.snowpack.dev) could fit better. It uses https://github.com/evanw/esbuild for bundling and minification. On plugins you'd simply:
In Datasette HTML pages' head you'd merely import these files as modules one by one. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753224351 | https://github.com/simonw/datasette/issues/1166#issuecomment-753224351 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzIyNDM1MQ== | simonw 9599 | 2020-12-31T23:23:29Z | 2020-12-31T23:23:29Z | OWNER | I should configure the action to only run if changes have been made within the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753221646 | https://github.com/simonw/datasette/issues/983#issuecomment-753221646 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIyMTY0Ng== | simonw 9599 | 2020-12-31T22:58:47Z | 2020-12-31T22:58:47Z | OWNER | https://github.com/mishoo/UglifyJS/issues/1905#issuecomment-300485490 says:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753221362 | https://github.com/simonw/datasette/issues/1164#issuecomment-753221362 | https://api.github.com/repos/simonw/datasette/issues/1164 | MDEyOklzc3VlQ29tbWVudDc1MzIyMTM2Mg== | simonw 9599 | 2020-12-31T22:55:57Z | 2020-12-31T22:55:57Z | OWNER | I had to add this as the first line in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for minifying JavaScript that ships with Datasette 776634318 | |
753220665 | https://github.com/simonw/datasette/issues/1164#issuecomment-753220665 | https://api.github.com/repos/simonw/datasette/issues/1164 | MDEyOklzc3VlQ29tbWVudDc1MzIyMDY2NQ== | simonw 9599 | 2020-12-31T22:49:36Z | 2020-12-31T22:49:36Z | OWNER | I started with a 7K
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for minifying JavaScript that ships with Datasette 776634318 | |
753220412 | https://github.com/simonw/datasette/issues/1164#issuecomment-753220412 | https://api.github.com/repos/simonw/datasette/issues/1164 | MDEyOklzc3VlQ29tbWVudDc1MzIyMDQxMg== | simonw 9599 | 2020-12-31T22:47:36Z | 2020-12-31T22:47:36Z | OWNER | I'm trying to minify
It turns out But
Annoyingly it looks like
I really don't like how |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for minifying JavaScript that ships with Datasette 776634318 | |
753219521 | https://github.com/simonw/datasette/issues/983#issuecomment-753219521 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxOTUyMQ== | simonw 9599 | 2020-12-31T22:39:52Z | 2020-12-31T22:39:52Z | OWNER | For inlining the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753219407 | https://github.com/simonw/datasette/issues/983#issuecomment-753219407 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxOTQwNw== | simonw 9599 | 2020-12-31T22:38:45Z | 2020-12-31T22:39:10Z | OWNER | You'll be able to add JavaScript plugins using a bunch of different mechanisms:
|
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753218817 | https://github.com/simonw/datasette/issues/983#issuecomment-753218817 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxODgxNw== | yozlet 173848 | 2020-12-31T22:32:25Z | 2020-12-31T22:32:25Z | NONE | Amazing work! And you've put in far more work than I'd expect to reduce the payload (which is admirable). So, to add a plugin with the current design, it goes in (a) the template or (b) a bookmarklet, right? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753217917 | https://github.com/simonw/datasette/issues/983#issuecomment-753217917 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxNzkxNw== | simonw 9599 | 2020-12-31T22:23:29Z | 2020-12-31T22:23:36Z | OWNER | If I'm going to do that, it would be good if subsequent plugins that register against the Maybe the tiny bootstrap code could define a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753217714 | https://github.com/simonw/datasette/issues/983#issuecomment-753217714 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxNzcxNA== | simonw 9599 | 2020-12-31T22:21:33Z | 2020-12-31T22:21:33Z | OWNER | Eventually I'd like to provide a whole bunch of other But I don't want to inline those into the page. So... I think the basic plugin system remains inline - maybe from an inlined file called If a plugin wants to take advantage of those APIs, maybe it registers itself using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753217127 | https://github.com/simonw/datasette/issues/987#issuecomment-753217127 | https://api.github.com/repos/simonw/datasette/issues/987 | MDEyOklzc3VlQ29tbWVudDc1MzIxNzEyNw== | simonw 9599 | 2020-12-31T22:16:46Z | 2020-12-31T22:16:46Z | OWNER | I'm going to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented HTML hooks for JavaScript plugin authors 712984738 | |
753215761 | https://github.com/simonw/datasette/issues/983#issuecomment-753215761 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxNTc2MQ== | simonw 9599 | 2020-12-31T22:07:31Z | 2020-12-31T22:07:31Z | OWNER | I think I need to keep the mechanism whereby a plugin can return I'll write some example plugins to help me decide if the filtering-out-of-undefined mechanism is needed or not. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753215545 | https://github.com/simonw/datasette/issues/983#issuecomment-753215545 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MzIxNTU0NQ== | simonw 9599 | 2020-12-31T22:05:41Z | 2020-12-31T22:05:41Z | OWNER | Using object destructuring like that is a great idea. I'm going to play with your version - it's delightfully succinct. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
753214664 | https://github.com/simonw/datasette/issues/1166#issuecomment-753214664 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzIxNDY2NA== | simonw 9599 | 2020-12-31T21:58:04Z | 2020-12-31T21:58:04Z | OWNER | Wrote a TIL about this: https://til.simonwillison.net/github-actions/prettier-github-actions |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753211535 | https://github.com/simonw/datasette/issues/1166#issuecomment-753211535 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzIxMTUzNQ== | simonw 9599 | 2020-12-31T21:46:04Z | 2020-12-31T21:46:04Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | ||
753210536 | https://github.com/simonw/datasette/issues/1166#issuecomment-753210536 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzIxMDUzNg== | simonw 9599 | 2020-12-31T21:45:19Z | 2020-12-31T21:45:19Z | OWNER | Oops, committed that bad formatting test to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753209192 | https://github.com/simonw/datasette/issues/1166#issuecomment-753209192 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzIwOTE5Mg== | simonw 9599 | 2020-12-31T21:44:22Z | 2020-12-31T21:44:22Z | OWNER | Tests passed in https://github.com/simonw/datasette/runs/1631677726?check_suite_focus=true I'm going to try submitting a pull request with badly formatted JavaScript to see if it gets caught. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753200580 | https://github.com/simonw/datasette/issues/1166#issuecomment-753200580 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzIwMDU4MA== | simonw 9599 | 2020-12-31T21:38:06Z | 2020-12-31T21:38:06Z | OWNER | I think this should work:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753197957 | https://github.com/simonw/datasette/issues/1166#issuecomment-753197957 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzE5Nzk1Nw== | simonw 9599 | 2020-12-31T21:36:14Z | 2020-12-31T21:36:14Z | OWNER | Maybe not that action actually - I wanted to use a pre-built action to avoid installing Prettier every time, but that's what it seems to do: https://github.com/creyD/prettier_action/blob/bb361e2979cff283ca7684908deac8f95400e779/entrypoint.sh#L28-L37 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753195905 | https://github.com/simonw/datasette/issues/1166#issuecomment-753195905 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzE5NTkwNQ== | simonw 9599 | 2020-12-31T21:34:46Z | 2020-12-31T21:34:46Z | OWNER | This action looks good - tag 3.2 is equivalent to this commit hash: https://github.com/creyD/prettier_action/tree/bb361e2979cff283ca7684908deac8f95400e779 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753193475 | https://github.com/simonw/datasette/issues/1166#issuecomment-753193475 | https://api.github.com/repos/simonw/datasette/issues/1166 | MDEyOklzc3VlQ29tbWVudDc1MzE5MzQ3NQ== | simonw 9599 | 2020-12-31T21:33:00Z | 2020-12-31T21:33:00Z | OWNER | I want a CI check that confirms that files conform to prettier - but only This seems to do the job:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Adopt Prettier for JavaScript code formatting 777140799 | |
753033121 | https://github.com/simonw/datasette/issues/1165#issuecomment-753033121 | https://api.github.com/repos/simonw/datasette/issues/1165 | MDEyOklzc3VlQ29tbWVudDc1MzAzMzEyMQ== | dracos 154364 | 2020-12-31T19:33:47Z | 2020-12-31T19:33:47Z | NONE | Sorry to go on about it, but it's my only example ;) And thought it might be of interest/use. Here is FixMyStreet's Cypress workflow https://github.com/mysociety/fixmystreet/blob/master/.github/workflows/cypress.yml with the master script that sets up server etc at https://github.com/mysociety/fixmystreet/blob/master/bin/browser-tests (that has features such as working inside/outside Vagrant, and can do JS code coverage) and then the tests are at https://github.com/mysociety/fixmystreet/tree/master/.cypress/cypress/integration |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for executing JavaScript unit tests 776635426 | |
752882797 | https://github.com/simonw/datasette/issues/983#issuecomment-752882797 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjg4Mjc5Nw== | dracos 154364 | 2020-12-31T08:07:59Z | 2020-12-31T15:04:32Z | NONE | If you're using arrow functions, you can presumably use default parameters, not much difference in support. That would save you 9 bytes. But OTOH you need Your latest 250-byte one, with use strict, gzips to 199 bytes. The following might be 292 bytes, but compresses to 204, basically the same, and works in any browser (well, IE9+) at all:
Source for that is below; I replaced the [fn,parameters] because closure-compiler includes a polyfill for that, and I ran
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752888552 | https://github.com/simonw/datasette/issues/983#issuecomment-752888552 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjg4ODU1Mg== | dracos 154364 | 2020-12-31T08:33:11Z | 2020-12-31T08:34:27Z | NONE | If you could say that all hook functions had to accept one options parameter (and could use object destructuring if they wished to only see a subset), you could have this, which minifies (to all-browser-JS) to 200 bytes, gzips to 146, and works practically the same:
Called the same, definitions tiny bit different:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752846267 | https://github.com/simonw/datasette/issues/1165#issuecomment-752846267 | https://api.github.com/repos/simonw/datasette/issues/1165 | MDEyOklzc3VlQ29tbWVudDc1Mjg0NjI2Nw== | simonw 9599 | 2020-12-31T05:10:41Z | 2020-12-31T05:13:14Z | OWNER | https://github.com/PostHog/posthog/tree/master/cypress/integration has some useful examples, linked from this article: https://posthog.com/blog/cypress-end-to-end-tests Also useful: their workflow https://github.com/PostHog/posthog/blob/master/.github/workflows/e2e.yml |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for executing JavaScript unit tests 776635426 |
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