issues
1,862 rows where author_association = "OWNER" sorted by updated_at descending
This data as json, CSV (advanced)
id | node_id | number | title | user | state | locked | assignee | milestone | comments | created_at | updated_at ▲ | closed_at | author_association | pull_request | body | repo | type | active_lock_reason | performed_via_github_app | reactions | draft | state_reason |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
592844348 | MDExOlB1bGxSZXF1ZXN0Mzk3NzQ5NjUz | 714 | --metadata accepts YAML as well as JSON | simonw 9599 | closed | 0 | 1 | 2020-04-02T18:36:02Z | 2020-04-02T19:30:54Z | 2020-04-02T19:30:54Z | OWNER | simonw/datasette/pulls/714 | Refs #713. Still needs tests and documentation. |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/714/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
587222354 | MDU6SXNzdWU1ODcyMjIzNTQ= | 707 | Consider configuring Jinja in Datasette() constructor, not .app() | simonw 9599 | closed | 0 | 0 | 2020-03-24T19:19:58Z | 2020-03-27T01:12:57Z | 2020-03-27T01:12:57Z | OWNER | Right now the following fails with an error:
This is a little surprising, especially now that Maybe this should happen in the Datasette class constructor instead. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/707/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
565064079 | MDExOlB1bGxSZXF1ZXN0Mzc1MTgwODMy | 672 | --dirs option for scanning directories for SQLite databases | simonw 9599 | open | 0 | 15 | 2020-02-14T02:25:52Z | 2020-03-27T01:03:53Z | OWNER | simonw/datasette/pulls/672 | Refs #417. |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/672/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
565552217 | MDU6SXNzdWU1NjU1NTIyMTc= | 674 | Rethink how sanity checks work | simonw 9599 | closed | 0 | 5 | 2020-02-14T20:57:02Z | 2020-03-26T17:19:23Z | 2020-02-15T17:57:46Z | OWNER | If you specify a file to open using Files found by scanning a directory #672 should just be skipped. Split off from comment by @simonw in https://github.com/simonw/datasette/issues/673#issuecomment-586455321 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/674/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
588108428 | MDU6SXNzdWU1ODgxMDg0Mjg= | 712 | base_url doesn't entirely work for running Datasette inside Binder | simonw 9599 | closed | 0 | 12 | 2020-03-26T02:25:55Z | 2020-03-26T15:11:49Z | 2020-03-26T14:35:43Z | OWNER |
Originally posted by @wragge in https://github.com/simonw/datasette/issues/394#issuecomment-604166918 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/712/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
585390482 | MDU6SXNzdWU1ODUzOTA0ODI= | 702 | Option in metadata.json to set default sort order for a table | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 5 | 2020-03-21T00:19:56Z | 2020-03-25T04:19:36Z | 2020-03-22T02:40:35Z | OWNER | If you access the table page without any |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/702/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
587398703 | MDU6SXNzdWU1ODczOTg3MDM= | 711 | Release notes for Datasette 0.39 | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 2 | 2020-03-25T02:31:13Z | 2020-03-25T04:06:55Z | 2020-03-25T04:06:55Z | OWNER | Then I can ship it. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/711/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
585626199 | MDU6SXNzdWU1ODU2MjYxOTk= | 705 | latest.datasette.io is no longer updating | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 15 | 2020-03-22T01:59:30Z | 2020-03-25T02:30:24Z | 2020-03-25T02:30:24Z | OWNER | https://latest.datasette.io/-/versions is stuck on 0.35. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/705/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
587302139 | MDExOlB1bGxSZXF1ZXN0MzkzMjc0NDMz | 708 | base_url configuration setting, refs #394 | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 2 | 2020-03-24T21:52:00Z | 2020-03-25T00:18:44Z | 2020-03-25T00:18:44Z | OWNER | simonw/datasette/pulls/708 | Pull request implementing #394 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/708/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||
583970196 | MDU6SXNzdWU1ODM5NzAxOTY= | 701 | Search box CSS doesn't look great on OS X Safari | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 3 | 2020-03-18T20:00:52Z | 2020-03-24T22:57:18Z | 2020-03-24T22:57:18Z | OWNER | datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/701/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
585597329 | MDU6SXNzdWU1ODU1OTczMjk= | 704 | Add datasette-publish-fly to Datasette Publish documentation | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 1 | 2020-03-21T22:25:10Z | 2020-03-24T22:39:09Z | 2020-03-24T22:39:09Z | OWNER | It's a cool example of a plugin that provides a new publish provider - worth mentioning on https://datasette.readthedocs.io/en/stable/publish.html |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/704/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
587314002 | MDU6SXNzdWU1ODczMTQwMDI= | 709 | Each plugin hook should link to example plugins built with it | simonw 9599 | closed | 0 | Datasette 0.39 5234079 | 1 | 2020-03-24T22:18:48Z | 2020-03-24T22:30:10Z | 2020-03-24T22:29:43Z | OWNER | datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/709/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
315960272 | MDU6SXNzdWUzMTU5NjAyNzI= | 227 | prepare_context() plugin hook | simonw 9599 | closed | 0 | 8 | 2018-04-19T16:55:26Z | 2020-03-24T22:19:54Z | 2020-03-24T22:19:54Z | OWNER | This would be called with the context dictionary before each template is rendered. It would have the opportunity to modify that context. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/227/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
586486367 | MDU6SXNzdWU1ODY0ODYzNjc= | 95 | Columns with only null values are no longer created in the database | simonw 9599 | closed | 0 | 0 | 2020-03-23T20:07:42Z | 2020-03-23T20:31:15Z | 2020-03-23T20:31:15Z | OWNER | Bug introduced in #94, and released in |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/95/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
586477757 | MDU6SXNzdWU1ODY0Nzc3NTc= | 94 | If column data is a mixture of integers and nulls, detected type should be INTEGER | simonw 9599 | closed | 0 | 0 | 2020-03-23T19:51:46Z | 2020-03-23T19:57:10Z | 2020-03-23T19:57:10Z | OWNER | It looks like detected type for that case is TEXT at the moment. |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/94/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
569237568 | MDU6SXNzdWU1NjkyMzc1Njg= | 677 | The first time you click sort by ID it should show you results in reverse order | simonw 9599 | closed | 0 | 1 | 2020-02-21T23:38:50Z | 2020-03-21T23:57:46Z | 2020-03-21T23:57:46Z | OWNER | e.g. on https://latest.datasette.io/fixtures/roadside_attractions Clicking the "pk" column header doesn't actually do anything - it sorts by pk asc but since the page was already sorted like that nothing useful changes. The first click on a primary key column that the page is already implicitly sorted by should instead enable sort descending on that column. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/677/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
582713554 | MDU6SXNzdWU1ODI3MTM1NTQ= | 700 | Request object utility for handling POST form data | simonw 9599 | closed | 0 | 1 | 2020-03-17T02:44:59Z | 2020-03-17T02:47:50Z | 2020-03-17T02:47:50Z | OWNER |
Originally posted by @simonw in https://github.com/simonw/datasette/issues/698#issuecomment-599704264 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/700/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
275087397 | MDU6SXNzdWUyNzUwODczOTc= | 120 | Plugin that adds an authentication layer of some sort | simonw 9599 | closed | 0 | 4 | 2017-11-18T15:39:13Z | 2020-03-16T18:48:06Z | 2020-03-16T18:48:06Z | OWNER | Would allow people who want to host private data to do so. .sh |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/120/reactions", "total_count": 7, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 } |
completed | ||||||
581339961 | MDU6SXNzdWU1ODEzMzk5NjE= | 92 | .columns_dict doesn't work for all possible column types | simonw 9599 | closed | 0 | 7 | 2020-03-14T19:30:35Z | 2020-03-15T18:37:43Z | 2020-03-14T20:04:14Z | OWNER | Got this error:
|
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/92/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
577578306 | MDU6SXNzdWU1Nzc1NzgzMDY= | 697 | index.html is not reliably loaded from a plugin | simonw 9599 | closed | 0 | 7 | 2020-03-08T22:37:55Z | 2020-03-08T23:33:28Z | 2020-03-08T23:11:27Z | OWNER | Lots of detail in https://github.com/simonw/datasette-search-all/issues/2 - short version is that I have a plugin with its own Related:
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/697/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
576711589 | MDU6SXNzdWU1NzY3MTE1ODk= | 695 | Update SQLite bundled with Docker container | simonw 9599 | closed | 0 | 7 | 2020-03-06T05:42:12Z | 2020-03-08T23:33:23Z | 2020-03-06T06:15:27Z | OWNER | It's 3.26.0 at the moment: https://github.com/simonw/datasette/blob/af9cd4ca64652fae262e6f7b5d201f6e0adc989b/Dockerfile#L9-L11 Most recent release is 3.31.1: https://www.sqlite.org/releaselog/3_31_1.html |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/695/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
574035432 | MDU6SXNzdWU1NzQwMzU0MzI= | 692 | is_hidden_table context variable on table.html page | simonw 9599 | open | 0 | 1 | 2020-03-02T15:03:25Z | 2020-03-02T15:03:48Z | OWNER | It's useful to know if a table is hidden when rendering that page. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/692/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
573740712 | MDU6SXNzdWU1NzM3NDA3MTI= | 90 | Cannot .enable_fts() for columns with spaces in their names | simonw 9599 | closed | 0 | 0 | 2020-03-02T06:06:03Z | 2020-03-02T06:10:49Z | 2020-03-02T06:10:49Z | OWNER | ```
import sqlite_utils
db = sqlite_utils.Database(memory=True) OperationalError Traceback (most recent call last) <ipython-input-8-ce4b87dd1c7a> in <module> ----> 1 db['test'].enable_fts(["space in name"]) /usr/local/lib/python3.7/site-packages/sqlite_utils/db.py in enable_fts(self, columns, fts_version, create_triggers) 755 ) 756 self.db.conn.executescript(sql) --> 757 self.populate_fts(columns) 758 759 if create_triggers: /usr/local/lib/python3.7/site-packages/sqlite_utils/db.py in populate_fts(self, columns) 787 table=self.name, columns=", ".join(columns) 788 ) --> 789 self.db.conn.executescript(sql) 790 return self 791 OperationalError: near "in": syntax error ``` |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/90/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
471780443 | MDU6SXNzdWU0NzE3ODA0NDM= | 46 | extracts= option for insert/update/etc | simonw 9599 | closed | 0 | 3 | 2019-07-23T15:55:46Z | 2020-03-01T16:53:40Z | 2019-07-23T17:00:44Z | OWNER | Relates to #42 and #44. I want the ability to extract values out into lookup tables during bulk insert/upsert operations.
|
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/46/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
573088799 | MDExOlB1bGxSZXF1ZXN0MzgxNjY2Nzc3 | 688 | Don't count rows on homepage for DBs > 100MB | simonw 9599 | closed | 0 | 0 | 2020-02-29T01:01:06Z | 2020-02-29T01:08:30Z | 2020-02-29T01:08:29Z | OWNER | simonw/datasette/pulls/688 | Closes #649. |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/688/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
534530973 | MDU6SXNzdWU1MzQ1MzA5NzM= | 649 | Reduce table counts on index page with many databases | simonw 9599 | closed | 0 | 2 | 2019-12-08T11:56:37Z | 2020-02-29T01:08:29Z | 2020-02-29T01:08:29Z | OWNER | Since #467 the index page has attempted to optimistically count times. My personal Dogsheep has enough connected databases and tables that the page can still take way too long to load - sometimes more than twenty seconds. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/649/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
502355384 | MDU6SXNzdWU1MDIzNTUzODQ= | 580 | Testing utilities should be available to plugins | simonw 9599 | closed | 0 | 5 | 2019-10-03T23:58:26Z | 2020-02-28T07:58:46Z | 2020-02-28T07:58:46Z | OWNER | I'm trying to write a plugin at the moment (datasette-atom) which needs to run unit tests against a full in-memory Datasette instance, in the same way that the Datasette test suite itself works. I got it working by creating copies of the TestClient and TestResponse classes within the plugin itself: I had to do this because those classes are in the It would be better if these classes were included in the main package in a way that made it easy for plugins to reuse them to write their own tests. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/580/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
571805300 | MDU6SXNzdWU1NzE4MDUzMDA= | 88 | table.disable_fts() method and "sqlite-utils disable-fts ..." command | simonw 9599 | closed | 0 | 5 | 2020-02-27T04:00:50Z | 2020-02-27T04:40:44Z | 2020-02-27T04:40:44Z | OWNER | This would make it easier to iterate on the FTS configuration for a database without having to wipe and recreate the database each time. |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/88/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
570327466 | MDExOlB1bGxSZXF1ZXN0Mzc5Mzc4Nzgw | 686 | ?_searchmode=raw option | simonw 9599 | closed | 0 | 0 | 2020-02-25T05:45:50Z | 2020-02-25T05:56:09Z | 2020-02-25T05:56:04Z | OWNER | simonw/datasette/pulls/686 | Closes #676 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/686/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
569613563 | MDU6SXNzdWU1Njk2MTM1NjM= | 682 | Mechanism for writing to database via a queue | simonw 9599 | closed | 0 | 10 | 2020-02-24T03:10:07Z | 2020-02-25T04:45:10Z | 2020-02-25T04:45:10Z | OWNER | I've been mulling this over for a long time, and I have a new approach that I think is worth exploring. The catch with writing to SQLite is that it should only accept one write at a time. I'm now thinking that an easy way to manage that would be with a write queue for each database which is then read by a single dedicated write thread which manages its own writable connection. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/682/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
476573875 | MDU6SXNzdWU0NzY1NzM4NzU= | 567 | Datasette Edit | simonw 9599 | closed | 0 | 3 | 2019-08-04T17:09:28Z | 2020-02-25T03:40:50Z | 2020-02-25T03:40:50Z | OWNER | Datasette started out immutable. Then it gained the ability to run against read-only databases that were being modified by other processes. It's time for the next logical progression: the option to allow Datasette (or more likely individual plugins) to write to the database! This is going to require some careful rethinking of how connection management works. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/567/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
449931899 | MDU6SXNzdWU0NDk5MzE4OTk= | 494 | --reload should only trigger for -i databases | simonw 9599 | closed | 0 | simonw 9599 | 1 | 2019-05-29T17:28:43Z | 2020-02-24T19:45:05Z | 2020-02-24T19:45:05Z | OWNER | Right now it's triggering any time a mutable database changes. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/494/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
569253072 | MDU6SXNzdWU1NjkyNTMwNzI= | 678 | prepare_connection() plugin hook should accept optional datasette argument | simonw 9599 | closed | 0 | 3 | 2020-02-22T00:50:26Z | 2020-02-22T03:53:19Z | 2020-02-22T02:28:51Z | OWNER | I want to build a plugin that allows users to configure certain database columns to be "masked" - so the To do this, I need to use the |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/678/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
569268612 | MDU6SXNzdWU1NjkyNjg2MTI= | 679 | Release 0.36 | simonw 9599 | closed | 0 | 2 | 2020-02-22T02:41:01Z | 2020-02-22T03:52:13Z | 2020-02-22T03:52:13Z | OWNER | I think we have enough changes to warrant a release - and I want to take advantage of the changes to the Changes since 0.35 so far: https://github.com/simonw/datasette/compare/0.35...be2265b0e811d0ac2875c2f748125c17b0f9289e
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/679/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
565837965 | MDU6SXNzdWU1NjU4Mzc5NjU= | 87 | Should detect collections.OrderedDict as a regular dictionary | simonw 9599 | closed | 0 | 2 | 2020-02-16T02:06:34Z | 2020-02-16T02:20:59Z | 2020-02-16T02:20:59Z | OWNER |
|
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/87/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
565518772 | MDU6SXNzdWU1NjU1MTg3NzI= | 673 | Mechanism for checking if a SQLite database file is safe to open | simonw 9599 | closed | 0 | 11 | 2020-02-14T19:36:04Z | 2020-02-14T20:13:59Z | 2020-02-14T20:13:59Z | OWNER | Opening a SpatiaLite database file without SpatiaLite will result in errors later on. Same for database files which use custom extensions, like the Apple Photos database. I've figured out how to tell if a database is safe to open or not:
Run this against a SpatiaLite database and you get the following:
Originally posted by @simonw in https://github.com/simonw/datasette/pull/672#issuecomment-586441484 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/673/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
565041624 | MDU6SXNzdWU1NjUwNDE2MjQ= | 671 | datasette.add_database(name, db) and datasette.remove_database(name) methods | simonw 9599 | closed | 0 | 1 | 2020-02-14T01:05:48Z | 2020-02-14T01:30:35Z | 2020-02-14T01:30:30Z | OWNER |
Originally posted by @simonw in https://github.com/simonw/datasette/issues/417#issuecomment-586047995 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/671/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
562911863 | MDU6SXNzdWU1NjI5MTE4NjM= | 85 | Create index doesn't work for columns containing spaces | simonw 9599 | closed | 0 | 1 | 2020-02-11T00:34:46Z | 2020-02-11T05:13:20Z | 2020-02-11T05:13:20Z | OWNER | sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/85/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||||
345821500 | MDU6SXNzdWUzNDU4MjE1MDA= | 352 | render_cell(value) plugin hook | simonw 9599 | closed | 0 | 4 | 2018-07-30T15:56:20Z | 2020-02-10T16:18:58Z | 2018-08-05T00:14:57Z | OWNER | To allow plugins to customize how values matching a specific pattern are displayed in the HTML table view. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/352/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
559374410 | MDU6SXNzdWU1NTkzNzQ0MTA= | 83 | Make db["table"].exists a documented API | simonw 9599 | closed | 0 | 1 | 2020-02-03T22:31:44Z | 2020-02-08T23:58:35Z | 2020-02-08T23:56:23Z | OWNER | Right now it's a static thing which might get out-of-sync with the database. It should probably be a live check. Maybe call it |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/83/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
561460274 | MDU6SXNzdWU1NjE0NjAyNzQ= | 84 | .upsert() with hash_id throws error | simonw 9599 | closed | 0 | 0 | 2020-02-07T07:08:19Z | 2020-02-07T07:17:11Z | 2020-02-07T07:17:11Z | OWNER |
The problem is, if you try this:
|
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/84/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
559964149 | MDU6SXNzdWU1NTk5NjQxNDk= | 665 | Introduce a SQL statement parser in Python | simonw 9599 | open | 0 | 1 | 2020-02-04T20:36:05Z | 2020-02-04T20:36:48Z | OWNER | 254 and #653 are both examples of problems that could be solved using a real SQL parser in Python. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/665/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
497171390 | MDU6SXNzdWU0OTcxNzEzOTA= | 577 | Utility mechanism for plugins to render templates | simonw 9599 | closed | 0 | Datasette 1.0 3268330 | 7 | 2019-09-23T15:30:36Z | 2020-02-04T20:26:20Z | 2020-02-04T20:26:19Z | OWNER | Sometimes a plugin will need to render a template for some custom UI. We need a documented API for doing this, which ensures that everything will work correctly if you extend base.html etc. See also #576. This could be a |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/577/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
559522877 | MDExOlB1bGxSZXF1ZXN0MzcwNjc1MDA3 | 664 | Datasette.render_template() method | simonw 9599 | closed | 0 | 5 | 2020-02-04T06:53:59Z | 2020-02-04T20:26:18Z | 2020-02-04T20:26:18Z | OWNER | simonw/datasette/pulls/664 | Refs #577 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/664/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
558600274 | MDU6SXNzdWU1NTg2MDAyNzQ= | 81 | Remove .detect_column_types() from table, make it a documented API | simonw 9599 | closed | 0 | 4 | 2020-02-01T21:25:54Z | 2020-02-01T21:55:35Z | 2020-02-01T21:55:35Z | OWNER | I used it in It would make more sense for this method to live on the Database rather than the Table - or even to exist as a separate utility method entirely. Then it should be documented. |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/81/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
557892819 | MDExOlB1bGxSZXF1ZXN0MzY5Mzk0MDQz | 80 | on_create mechanism for after table creation | simonw 9599 | closed | 0 | 5 | 2020-01-31T03:38:48Z | 2020-01-31T05:08:04Z | 2020-01-31T05:08:04Z | OWNER | simonw/sqlite-utils/pulls/80 | I need this for |
sqlite-utils 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/80/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
557077945 | MDExOlB1bGxSZXF1ZXN0MzY4NzM0NTAw | 663 | -p argument for datasette package, plus tests - refs #661 | simonw 9599 | closed | 0 | 1 | 2020-01-29T19:47:50Z | 2020-01-29T22:46:43Z | 2020-01-29T22:46:43Z | OWNER | simonw/datasette/pulls/663 | datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/663/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
278190321 | MDU6SXNzdWUyNzgxOTAzMjE= | 157 | Teach "datasette publish" about custom template directories | simonw 9599 | closed | 0 | Custom templates edition 2949431 | 1 | 2017-11-30T16:44:57Z | 2020-01-15T16:05:13Z | 2017-12-09T18:28:54Z | OWNER | The following command should copy the custom templates into the deployment and ensure
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/157/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
521868864 | MDU6SXNzdWU1MjE4Njg4NjQ= | 66 | The ".upsert()" method is misnamed | simonw 9599 | closed | 0 | 15 | 2019-11-12T23:48:28Z | 2019-12-31T01:30:21Z | 2019-12-31T01:30:20Z | OWNER | This thread here is illuminating: https://stackoverflow.com/questions/3634984/insert-if-not-exists-else-update The term It means "behave as an UPDATE or a no-op if the INSERT would violate a uniqueness constraint". The syntax in 3.24.0+ looks like this (confusingly it does not use the term "upsert"):
If the record already exists, it will be entirely replaced by a new record - as opposed to updating any specified fields but leaving existing fields as they are (the behaviour of "upsert" in SQLite itself). |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/66/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
529376481 | MDExOlB1bGxSZXF1ZXN0MzQ2MjY0OTI2 | 67 | Run tests against 3.5 too | simonw 9599 | closed | 0 | 2 | 2019-11-27T14:20:35Z | 2019-12-31T01:29:44Z | 2019-12-31T01:29:43Z | OWNER | simonw/sqlite-utils/pulls/67 | sqlite-utils 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/67/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
543738004 | MDExOlB1bGxSZXF1ZXN0MzU3OTkyNTg4 | 72 | Fixed implementation of upsert | simonw 9599 | closed | 0 | 0 | 2019-12-30T05:08:05Z | 2019-12-30T05:29:24Z | 2019-12-30T05:29:24Z | OWNER | simonw/sqlite-utils/pulls/72 | Refs #66 |
sqlite-utils 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/72/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
542814756 | MDU6SXNzdWU1NDI4MTQ3NTY= | 71 | Tests are failing due to missing FTS5 | simonw 9599 | closed | 0 | 3 | 2019-12-27T09:41:16Z | 2019-12-27T09:49:37Z | 2019-12-27T09:49:37Z | OWNER | https://travis-ci.com/simonw/sqlite-utils/jobs/268436167 This is a recent change: 2 months ago they worked fine. I'm not sure what changed here. Maybe something to do with https://launchpad.net/~jonathonf/+archive/ubuntu/backports ? |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/71/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
541467590 | MDU6SXNzdWU1NDE0Njc1OTA= | 654 | Template debug mode that outputs template context | simonw 9599 | closed | 0 | 3 | 2019-12-22T15:51:25Z | 2019-12-22T16:13:11Z | 2019-12-22T16:04:51Z | OWNER | It would make writing templates (including custom templates) easier if there was an option to dump out the full template context - maybe |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/654/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
530468212 | MDU6SXNzdWU1MzA0NjgyMTI= | 643 | Set up some basic benchmarks as part of the unit tests | simonw 9599 | open | 0 | 0 | 2019-11-29T19:24:19Z | 2019-11-29T19:24:19Z | OWNER | https://pypi.org/project/pytest-benchmark/ looks great for this. Here's how to run it as a github action: https://github.com/rhysd/github-action-benchmark/blob/master/examples/pytest/README.md |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/643/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
528442126 | MDU6SXNzdWU1Mjg0NDIxMjY= | 641 | Better documentation for --static option | simonw 9599 | closed | 0 | 1 | 2019-11-26T02:07:57Z | 2019-11-26T03:30:02Z | 2019-11-26T02:31:53Z | OWNER | This is misleading: The correct format is e.g. Also it's not mentioned in the regular documentation at all. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/641/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
525993034 | MDU6SXNzdWU1MjU5OTMwMzQ= | 637 | Custom queries with 0 results should say "0 results" | simonw 9599 | closed | 0 | 3 | 2019-11-20T18:28:14Z | 2019-11-23T06:17:23Z | 2019-11-23T06:07:08Z | OWNER | Consider https://latest.datasette.io/fixtures/neighborhood_search?text=foop It's currently not obvious that the query executed and returned 0 results. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/637/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
526913133 | MDU6SXNzdWU1MjY5MTMxMzM= | 638 | Don't suggest column for faceting if all values are 1 | simonw 9599 | closed | 0 | 3 | 2019-11-22T00:14:22Z | 2019-11-22T01:14:59Z | 2019-11-22T00:57:49Z | OWNER | https://www.niche-museums.com/museums/museums?_facet=wikipedia_url Challenge is how to do this efficiently, since suggested facet queries need to be lightning fast. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/638/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
525254973 | MDU6SXNzdWU1MjUyNTQ5NzM= | 636 | rowid is not included in dropdown filter menus | simonw 9599 | closed | 0 | 3 | 2019-11-19T20:43:04Z | 2019-11-19T23:01:17Z | 2019-11-19T23:01:17Z | OWNER | For This also means if you link to e.g. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/636/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
464987783 | MDExOlB1bGxSZXF1ZXN0Mjk1MTI3MjEz | 546 | Facet by delimiter | simonw 9599 | open | 0 | 2 | 2019-07-07T20:06:05Z | 2019-11-18T23:46:01Z | OWNER | simonw/datasette/pulls/546 | Refs #510 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/546/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
501773982 | MDExOlB1bGxSZXF1ZXN0MzIzOTgzNzMy | 579 | New connection pooling | simonw 9599 | open | 0 | 1 | 2019-10-02T23:22:19Z | 2019-11-15T22:57:21Z | OWNER | simonw/datasette/pulls/579 | See #569 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/579/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
521329771 | MDU6SXNzdWU1MjEzMjk3NzE= | 628 | Render jinja2 templates in async mode | simonw 9599 | closed | 0 | 2 | 2019-11-12T05:01:55Z | 2019-11-14T23:28:09Z | 2019-11-14T23:14:24Z | OWNER | I started playing with this in #404 and got good results but it didn't work in Python 3.5. As of #627 I don't support 3.5 any more so this can go ahead. Rendering templates in async mode will mean that template plugins can include async code... which opens the door to custom template functions that execute SQL queries! |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/628/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
522566332 | MDExOlB1bGxSZXF1ZXN0MzQwNzQzMjIw | 635 | Use Jinja async mode | simonw 9599 | closed | 0 | 0 | 2019-11-14T01:20:57Z | 2019-11-14T23:14:23Z | 2019-11-14T23:14:23Z | OWNER | simonw/datasette/pulls/635 | Refs #628. Still needs documentation. |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/635/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
382471625 | MDExOlB1bGxSZXF1ZXN0MjMyMTcyMTA2 | 389 | Bump dependency versions | simonw 9599 | closed | 0 | 2 | 2018-11-20T02:23:12Z | 2019-11-13T19:13:41Z | 2019-11-13T19:13:41Z | OWNER | simonw/datasette/pulls/389 | datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/389/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
521995039 | MDU6SXNzdWU1MjE5OTUwMzk= | 632 | Upgrade datasette publish Heroku runtime | simonw 9599 | closed | 0 | 2 | 2019-11-13T06:46:19Z | 2019-11-13T16:44:07Z | 2019-11-13T16:43:23Z | OWNER |
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/632/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
489429284 | MDU6SXNzdWU0ODk0MjkyODQ= | 572 | Error running datasette publish with just --source_url | simonw 9599 | closed | 0 | 1 | 2019-09-04T22:19:22Z | 2019-11-13T04:28:44Z | 2019-11-13T04:28:44Z | OWNER |
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/572/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
521335335 | MDU6SXNzdWU1MjEzMzUzMzU= | 629 | "datasette publish" commands should deploy with Python 3.8 | simonw 9599 | closed | 0 | 1 | 2019-11-12T05:22:31Z | 2019-11-12T06:03:10Z | 2019-11-12T06:03:10Z | OWNER | Now that we support 3.8 (#627) |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/629/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
521346800 | MDExOlB1bGxSZXF1ZXN0MzM5NzQyNDMy | 630 | Use python:3.8 base Docker image | simonw 9599 | closed | 0 | 0 | 2019-11-12T06:02:37Z | 2019-11-12T06:03:10Z | 2019-11-12T06:03:10Z | OWNER | simonw/datasette/pulls/630 | Closes #629 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/630/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
520715188 | MDU6SXNzdWU1MjA3MTUxODg= | 622 | Datasette should work with Python 3.8 (and drop compatibility with Python 3.5) | simonw 9599 | closed | 0 | 4 | 2019-11-11T03:12:36Z | 2019-11-12T05:52:49Z | 2019-11-12T05:09:13Z | OWNER | See #595, #594, #404. The big thing holding me back from ditching Python 3.5 was glitch.com - but they now offer Python 3.7: https://support.glitch.com/t/can-you-upgrade-python-to-latest-version/7980/25?u=simonw |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/622/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
403499298 | MDExOlB1bGxSZXF1ZXN0MjQ3OTIzMzQ3 | 404 | Experiment: run Jinja in async mode | simonw 9599 | closed | 0 | 3 | 2019-01-27T00:28:44Z | 2019-11-12T05:02:18Z | 2019-11-12T05:02:13Z | OWNER | simonw/datasette/pulls/404 | See http://jinja.pocoo.org/docs/2.10/api/#async-support Tests all pass. Have not checked performance difference yet. Creating pull request to run tests in Travis. This is not ready to merge - I'm not yet sure if this is a good idea. |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/404/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
521282013 | MDU6SXNzdWU1MjEyODIwMTM= | 626 | Unit tests should fail under Python 3.8 | simonw 9599 | closed | 0 | 1 | 2019-11-12T01:54:11Z | 2019-11-12T04:31:26Z | 2019-11-12T04:31:13Z | OWNER | The unit tests currently pass under Python 3.8. But... when you actually attempt to run Datasette you get an error:
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/626/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
520728483 | MDExOlB1bGxSZXF1ZXN0MzM5MjQ0ODg4 | 624 | Bump pint to 0.9 | simonw 9599 | closed | 0 | 0 | 2019-11-11T04:07:07Z | 2019-11-11T04:19:02Z | 2019-11-11T04:19:02Z | OWNER | simonw/datasette/pulls/624 | datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/624/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
520718056 | MDExOlB1bGxSZXF1ZXN0MzM5MjM2NjQ3 | 623 | Test against Python 3.8 in Travis | simonw 9599 | closed | 0 | 2 | 2019-11-11T03:24:54Z | 2019-11-11T03:45:35Z | 2019-11-11T03:45:35Z | OWNER | simonw/datasette/pulls/623 | Needed for #622 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/623/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
452901999 | MDExOlB1bGxSZXF1ZXN0Mjg1Njk4MzEw | 501 | Test against Python 3.8-dev using Travis | simonw 9599 | closed | 0 | 3 | 2019-06-06T08:37:53Z | 2019-11-11T03:23:29Z | 2019-11-11T03:23:29Z | OWNER | simonw/datasette/pulls/501 | datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/501/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
520507306 | MDU6SXNzdWU1MjA1MDczMDY= | 618 | Mechanism for seeing indexes on a specific table | simonw 9599 | closed | 0 | 2 | 2019-11-09T20:10:41Z | 2019-11-10T01:40:05Z | 2019-11-10T01:30:25Z | OWNER | The only way to see the indexes that apply to a specific table at the moment is to run the following SQL manually:
It would be good if this list of indexes was displayed in a neater way on the table page. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/618/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
513008936 | MDU6SXNzdWU1MTMwMDg5MzY= | 608 | Improve UI of "datasette publish cloudrun" to reduce chances of accidentally over-writing a service | simonw 9599 | closed | 0 | 6 | 2019-10-27T19:21:28Z | 2019-11-08T02:51:36Z | 2019-11-08T02:48:46Z | OWNER | The concept of a "service" in Cloud Run is crucial: if you deploy to the same service, you will over-write what you deployed there last! As such, I'd like to make service a required positional argument for
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/608/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
519039316 | MDExOlB1bGxSZXF1ZXN0MzM3ODUzMzk0 | 65 | Release 1.12.1 | simonw 9599 | closed | 0 | 0 | 2019-11-07T04:51:29Z | 2019-11-07T04:58:48Z | 2019-11-07T04:58:47Z | OWNER | simonw/sqlite-utils/pulls/65 | sqlite-utils 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/65/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
476413293 | MDU6SXNzdWU0NzY0MTMyOTM= | 52 | Throws error if .insert_all() / .upsert_all() called with empty list | simonw 9599 | closed | 0 | 1 | 2019-08-03T04:09:00Z | 2019-11-07T04:32:39Z | 2019-11-07T04:32:39Z | OWNER | sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/52/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||||
519032008 | MDExOlB1bGxSZXF1ZXN0MzM3ODQ3NTcz | 64 | test_insert_upsert_all_empty_list | simonw 9599 | closed | 0 | 0 | 2019-11-07T04:24:45Z | 2019-11-07T04:32:38Z | 2019-11-07T04:32:38Z | OWNER | simonw/sqlite-utils/pulls/64 | sqlite-utils 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/64/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
453639196 | MDU6SXNzdWU0NTM2MzkxOTY= | 504 | Remove TableView ?_group_count= feature | simonw 9599 | closed | 0 | simonw 9599 | 0 | 2019-06-07T18:25:18Z | 2019-11-06T05:13:10Z | 2019-11-06T05:13:10Z | OWNER | This feature really doesn't warrant continuing to exist. For reference: #150 and #44 Don't forget to remove it from the docs: https://github.com/simonw/datasette/blob/172da009d890aa029cff7138b4dcfd4f60948525/docs/json_api.rst#L322-L324 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/504/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
517241040 | MDU6SXNzdWU1MTcyNDEwNDA= | 63 | ensure_index() method | simonw 9599 | closed | 0 | 1 | 2019-11-04T15:51:22Z | 2019-11-04T16:20:36Z | 2019-11-04T16:20:35Z | OWNER |
This will do the following: - if the specified table or column does not exist, do nothing - if they exist and already have an index, do nothing - otherwise, create the index I want this for tools like twitter-to-sqlite search where the |
sqlite-utils 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/63/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
516950748 | MDU6SXNzdWU1MTY5NTA3NDg= | 614 | Add "not in" filter - ?pk__notin=x,y,z | simonw 9599 | closed | 0 | 1 | 2019-11-04T04:07:17Z | 2019-11-04T04:31:58Z | 2019-11-04T04:12:00Z | OWNER | We have a Today I found myself needing the inverse, a |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/614/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
516874735 | MDU6SXNzdWU1MTY4NzQ3MzU= | 613 | Basic join support for table view | simonw 9599 | open | 0 | 1 | 2019-11-03T19:12:53Z | 2019-11-03T19:14:01Z | OWNER | I think it would be possible to support basic foreign key joins on the table page. The user could specify columns that should result in a join (from a set of suggestions similar to how facets work right now) and they could then be passed as This feature will make a lot of sense when combined with the ability to show / hide / customize columns, see #292 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/613/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
406055201 | MDU6SXNzdWU0MDYwNTUyMDE= | 406 | Support nullable foreign keys in _labels mode | simonw 9599 | closed | 0 | simonw 9599 | 2 | 2019-02-03T05:34:20Z | 2019-11-02T22:39:28Z | 2019-11-02T22:30:27Z | OWNER | Currently if there's a null in a foreign key we get "None" displayed in the inflated view: |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/406/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
516370822 | MDU6SXNzdWU1MTYzNzA4MjI= | 611 | Static assets no longer loading for installed plugins | simonw 9599 | closed | 0 | 3 | 2019-11-01T22:07:00Z | 2019-11-01T22:15:55Z | 2019-11-01T22:15:55Z | OWNER | Caused by fix I made in #606 e.g. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/611/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
516310670 | MDU6SXNzdWU1MTYzMTA2NzA= | 610 | Don't suggest array facet if column is only [] empty arrays | simonw 9599 | closed | 0 | 0 | 2019-11-01T19:42:02Z | 2019-11-01T21:46:08Z | 2019-11-01T21:46:08Z | OWNER | Follow on from #562 |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/610/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
470542938 | MDU6SXNzdWU0NzA1NDI5Mzg= | 562 | Facet by array shouldn't suggest for arrays that are not arrays-of-strings | simonw 9599 | closed | 0 | 2 | 2019-07-19T20:51:29Z | 2019-11-01T19:42:10Z | 2019-11-01T19:37:55Z | OWNER | It's triggering for arrays that look like this at the moment:
|
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/562/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
512218858 | MDU6SXNzdWU1MTIyMTg4NTg= | 606 | /-/plugins shows incorrect name for plugins | simonw 9599 | closed | 0 | 3 | 2019-10-24T22:53:25Z | 2019-11-01T05:41:04Z | 2019-11-01T05:40:07Z | OWNER | https://fivethirtyeight.datasettes.com/-/plugins
These should be shown as |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/606/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
509693773 | MDU6SXNzdWU1MDk2OTM3NzM= | 604 | _where= parameter is not persisted in hidden form fields | simonw 9599 | closed | 0 | 3 | 2019-10-21T02:14:10Z | 2019-10-30T19:12:38Z | 2019-10-30T18:49:44Z | OWNER | e.g. on this page: https://v0-30.datasette.io/fixtures/roadside_attractions?_where=name%20like%20%27%museum%%27 Click the "Apply" button and the |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/604/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
514899195 | MDExOlB1bGxSZXF1ZXN0MzM0NDQ4MjU4 | 609 | Update to latest black | simonw 9599 | closed | 0 | 0 | 2019-10-30T18:42:35Z | 2019-10-30T18:49:01Z | 2019-10-30T18:49:01Z | OWNER | simonw/datasette/pulls/609 | datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/609/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
509340359 | MDExOlB1bGxSZXF1ZXN0MzI5OTQ3MTgw | 601 | Don't auto-format SQL on page load | simonw 9599 | closed | 0 | 5 | 2019-10-18T22:37:39Z | 2019-10-20T02:29:49Z | 2019-10-18T23:56:45Z | OWNER | simonw/datasette/pulls/601 | Refs #600 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/601/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
509339999 | MDU6SXNzdWU1MDkzMzk5OTk= | 600 | Don't auto-format SQL on first page load | simonw 9599 | closed | 0 | 0 | 2019-10-18T22:36:10Z | 2019-10-18T23:56:46Z | 2019-10-18T23:56:46Z | OWNER | I've gone back and forth on this a bit, but I've decided I'm not keen on the way Datasette now automatically formats SQL when a query (or canned query) page first loads. I like having an optional "Format SQL" button, but applying formatting automatically means that if the user has carefully formatted their SQL to a specific style their formatting will be automatically over-ridden. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/600/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
508070977 | MDU6SXNzdWU1MDgwNzA5Nzc= | 597 | If you have databases called foo.db and foo-bar.db you cannot visit /foo-bar | simonw 9599 | closed | 0 | 5 | 2019-10-16T20:07:41Z | 2019-10-18T22:51:08Z | 2019-10-18T22:51:08Z | OWNER | Weird bug I just came across. It appears that if you have one database called |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/597/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
509267608 | MDExOlB1bGxSZXF1ZXN0MzI5ODkwMzIw | 599 | Fix for /foo v.s. /foo-bar issue in #597 | simonw 9599 | closed | 0 | 0 | 2019-10-18T19:22:55Z | 2019-10-18T22:51:07Z | 2019-10-18T22:51:07Z | OWNER | simonw/datasette/pulls/599 | Refs #597 |
datasette 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/599/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
504805857 | MDU6SXNzdWU1MDQ4MDU4NTc= | 587 | Use --platform=managed for publish cloudrun | simonw 9599 | closed | 0 | 0 | 2019-10-09T18:02:16Z | 2019-10-17T21:51:57Z | 2019-10-17T21:51:57Z | OWNER | Running
May as well set that as a default. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/587/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
503217375 | MDU6SXNzdWU1MDMyMTczNzU= | 585 | Databases on index page should display in order they were passed to "datasette serve"? | simonw 9599 | closed | 0 | 1 | 2019-10-07T03:42:39Z | 2019-10-14T03:52:34Z | 2019-10-14T03:52:34Z | OWNER | If you run this:
Then the index page for that Datasette instance should show the databases in the order they were specified on the command-line. Mind you when we add pagination to that page in #468 we may want to do something different here. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/585/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
275228834 | MDU6SXNzdWUyNzUyMjg4MzQ= | 136 | "Reformat SQL" button next to SQL editor textarea | simonw 9599 | closed | 0 | 0 | 2017-11-20T03:42:19Z | 2019-10-14T03:46:13Z | 2019-10-14T03:46:13Z | OWNER | datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/136/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||||
503218205 | MDU6SXNzdWU1MDMyMTgyMDU= | 586 | Enable browser caching for plugin statics with datasette-auth | simonw 9599 | closed | 0 | 2 | 2019-10-07T03:47:14Z | 2019-10-07T15:46:04Z | 2019-10-07T15:46:03Z | OWNER | An authenticated Datasette I run is seeing delays on every page load. On looking at the network inspector it turns out it's because datasette-vega is nearly 1MB and a This may well turn out to be a bug in |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/586/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
503128914 | MDU6SXNzdWU1MDMxMjg5MTQ= | 583 | Enable "explain" and "explain query plan" for CTEs | simonw 9599 | closed | 0 | 1 | 2019-10-06T17:00:10Z | 2019-10-06T17:24:07Z | 2019-10-06T17:24:07Z | OWNER | This currently throws an error: https://latest.datasette.io/fixtures?sql=explain+WITH+RECURSIVE%0D%0A++xaxis%28x%29+AS+%28VALUES%28-2.0%29+UNION+ALL+SELECT+x%2B0.05+FROM+xaxis+WHERE+x%3C1.2%29%2C%0D%0A++yaxis%28y%29+AS+%28VALUES%28-1.0%29+UNION+ALL+SELECT+y%2B0.1+FROM+yaxis+WHERE+y%3C1.0%29%2C%0D%0A++m%28iter%2C+cx%2C+cy%2C+x%2C+y%29+AS+%28%0D%0A++++SELECT+0%2C+x%2C+y%2C+0.0%2C+0.0+FROM+xaxis%2C+yaxis%0D%0A++++UNION+ALL%0D%0A++++SELECT+iter%2B1%2C+cx%2C+cy%2C+xx-yy+%2B+cx%2C+2.0xy+%2B+cy+FROM+m+%0D%0A+++++WHERE+%28xx+%2B+yy%29+%3C+4.0+AND+iter%3C28%0D%0A++%29%2C%0D%0A++m2%28iter%2C+cx%2C+cy%29+AS+%28%0D%0A++++SELECT+max%28iter%29%2C+cx%2C+cy+FROM+m+GROUP+BY+cx%2C+cy%0D%0A++%29%2C%0D%0A++a%28t%29+AS+%28%0D%0A++++SELECT+group_concat%28+substr%28%27+.%2B*%23%27%2C+1%2Bmin%28iter%2F7%2C4%29%2C+1%29%2C+%27%27%29+%0D%0A++++FROM+m2+GROUP+BY+cy%0D%0A++%29%0D%0ASELECT+group_concat%28rtrim%28t%29%2Cx%270a%27%29+FROM+a%3B |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/583/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
503053243 | MDU6SXNzdWU1MDMwNTMyNDM= | 582 | Datasette should not completely crash if one SQLite database is malformed | simonw 9599 | open | 0 | 0 | 2019-10-06T05:11:43Z | 2019-10-06T05:11:43Z | OWNER | If you run Datasette against a number of database files and one of them is malformed, you get this 500 error on the index page: It would be better if Datasette still worked and listed the databases that were NOT malformed, then showed an inline error message just for the one that could not be accessed. |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/582/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
440437037 | MDU6SXNzdWU0NDA0MzcwMzc= | 454 | Plugin for allowing CORS from specified hosts | simonw 9599 | closed | 0 | simonw 9599 | 5 | 2019-05-05T12:05:02Z | 2019-10-03T23:59:57Z | 2019-10-03T23:59:56Z | OWNER | It would be useful if Datasette could be configured to allow CORS requests from one or more origins, as opposed to only allowing either none or This is slightly tricky because the This means the application code needs to have a whitelist of allowed hosts and code that dynamically changes the outgoing |
datasette 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/454/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issues] ( [id] INTEGER PRIMARY KEY, [node_id] TEXT, [number] INTEGER, [title] TEXT, [user] INTEGER REFERENCES [users]([id]), [state] TEXT, [locked] INTEGER, [assignee] INTEGER REFERENCES [users]([id]), [milestone] INTEGER REFERENCES [milestones]([id]), [comments] INTEGER, [created_at] TEXT, [updated_at] TEXT, [closed_at] TEXT, [author_association] TEXT, [pull_request] TEXT, [body] TEXT, [repo] INTEGER REFERENCES [repos]([id]), [type] TEXT , [active_lock_reason] TEXT, [performed_via_github_app] TEXT, [reactions] TEXT, [draft] INTEGER, [state_reason] TEXT); CREATE INDEX [idx_issues_repo] ON [issues] ([repo]); CREATE INDEX [idx_issues_milestone] ON [issues] ([milestone]); CREATE INDEX [idx_issues_assignee] ON [issues] ([assignee]); CREATE INDEX [idx_issues_user] ON [issues] ([user]);