github
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
267513523 | MDU6SXNzdWUyNjc1MTM1MjM= | 2 | Initial proof-of-concept | 9599 | closed | 0 | 2857392 | 0 | 2017-10-23T00:45:37Z | 2017-10-23T01:26:39Z | 2017-10-23T00:45:53Z | OWNER | Implemented in https://github.com/simonw/stateless-datasets/commit/de04d7a854d71003ffcf98028eab976a936c2dba | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/2/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
267516329 | MDU6SXNzdWUyNjc1MTYzMjk= | 6 | Better JSON response options | 9599 | closed | 0 | 2857392 | 0 | 2017-10-23T01:18:47Z | 2017-10-24T15:07:58Z | 2017-10-24T15:07:58Z | OWNER | Default returns this: { “Columns”: [“id”, “name”, “age”], “Rows”: [ [45, “Simon”, 36] ] } .jsono instead returns a list of objects each duplicating the headers in its keys. They both probably share the same pagination mechanism so it might not be a jsono flat list. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/6/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
267713226 | MDU6SXNzdWUyNjc3MTMyMjY= | 15 | Support multiple databases | 9599 | closed | 0 | 2857392 | 0 | 2017-10-23T15:29:51Z | 2017-10-24T02:01:38Z | 2017-10-24T02:01:38Z | OWNER | I'm going to loop through every database file in the app root directory and bundle all of them. Each one will be accessible at /databasename Note this is without the file extension, and we will disallow multiple files with the same name but different extensions. Supported extensions to start with will be `.db` and `.sqlite` and `.sqlite3` | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/15/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
267769431 | MDU6SXNzdWUyNjc3Njk0MzE= | 22 | Refactor to use class based views | 9599 | closed | 0 | 2857392 | 0 | 2017-10-23T18:26:22Z | 2019-05-27T20:05:56Z | 2017-10-24T02:25:53Z | OWNER | http://sanic.readthedocs.io/en/latest/sanic/class_based_views.html | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/22/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
267886865 | MDU6SXNzdWUyNjc4ODY4NjU= | 28 | /database?sql= should redirect correctly | 9599 | closed | 0 | 2857392 | 0 | 2017-10-24T03:38:44Z | 2017-10-24T23:54:30Z | 2017-10-24T23:54:30Z | OWNER | Needs to redirect to the location with the hash while retaining the query string. This should also work with the .json extension. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/28/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
268110769 | MDU6SXNzdWUyNjgxMTA3Njk= | 33 | Use locust for benchmarking and load tests | 9599 | open | 0 | 0 | 2017-10-24T17:00:09Z | 2017-12-10T03:12:16Z | OWNER | https://github.com/locustio/locust Needed for #32 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/33/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
271242824 | MDU6SXNzdWUyNzEyNDI4MjQ= | 45 | Run SQLite operations in a thread pool | 9599 | closed | 0 | 2857392 | 0 | 2017-11-05T02:27:12Z | 2017-11-05T02:27:34Z | 2017-11-05T02:27:33Z | OWNER | Let's run SQLite operations in threads, so we don't end up blocking our core event loop. These articles are helpful: * https://pymotw.com/3/asyncio/executors.html * https://marlinux.wordpress.com/2017/05/19/python-3-6-asyncio-sqlalchemy/ | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/45/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273128608 | MDU6SXNzdWUyNzMxMjg2MDg= | 58 | publish command should detect if "now" is installed | 9599 | closed | 0 | 2857392 | 0 | 2017-11-11T08:10:17Z | 2017-11-11T16:00:07Z | 2017-11-11T16:00:07Z | OWNER | If now is not installed, it should tell you where to get it. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/58/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273173116 | MDU6SXNzdWUyNzMxNzMxMTY= | 61 | Common header and footer | 9599 | closed | 0 | 2857392 | 0 | 2017-11-11T20:20:08Z | 2017-11-11T20:37:19Z | 2017-11-11T20:37:19Z | OWNER | Split from #16 - [x] A link to the homepage from some kind of navigation bar in the header - [x] link to github.com/simonw/datasette in the footer - [x] Slightly better titles (maybe ditch the visited link colours for titles only? should keep those for primary key links) | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/61/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273174397 | MDU6SXNzdWUyNzMxNzQzOTc= | 62 | Link to .json and .jsono versions on various pages | 9599 | closed | 0 | 2857392 | 0 | 2017-11-11T20:37:47Z | 2017-11-11T22:41:06Z | 2017-11-11T22:41:06Z | OWNER | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/62/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
273267081 | MDU6SXNzdWUyNzMyNjcwODE= | 70 | Paginate views using OFFSET/LIMIT | 9599 | closed | 0 | 2857392 | 0 | 2017-11-12T21:30:29Z | 2017-11-13T21:11:01Z | 2017-11-13T21:11:01Z | OWNER | As with #69 these should obey a maximum offset setting, which can be over-ridden. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/70/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273283166 | MDU6SXNzdWUyNzMyODMxNjY= | 72 | publish command should take an optional --name argument | 9599 | closed | 0 | 2857392 | 0 | 2017-11-13T00:59:35Z | 2017-11-13T02:12:27Z | 2017-11-13T02:12:27Z | OWNER | To set the directory name so that now will inherit it as the name of the app. Defaults to datasette | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/72/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273510781 | MDU6SXNzdWUyNzM1MTA3ODE= | 76 | publish should have required argument specifying publisher | 9599 | closed | 0 | 2857392 | 0 | 2017-11-13T17:21:26Z | 2017-11-13T18:41:01Z | 2017-11-13T18:41:01Z | OWNER | Initially the only argument will be “now” - but “hyper” can be added in the future | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/76/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273537940 | MDU6SXNzdWUyNzM1Mzc5NDA= | 77 | Add Travis CI badge to README | 9599 | closed | 0 | 2857392 | 0 | 2017-11-13T18:52:25Z | 2017-11-13T21:24:15Z | 2017-11-13T21:24:15Z | OWNER | Also fix this newline issue: <img width="647" alt="simonw_datasette__instant_json_api_for_your_sqlite_database" src="https://user-images.githubusercontent.com/9599/32743234-ae81b224-c860-11e7-98a9-980b7b448ffc.png"> | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/77/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
273554949 | MDU6SXNzdWUyNzM1NTQ5NDk= | 78 | Rename after to next and provide a next_url | 9599 | closed | 0 | 2857392 | 0 | 2017-11-13T19:48:31Z | 2017-11-13T20:35:03Z | 2017-11-13T20:35:03Z | OWNER | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/78/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
273626815 | MDU6SXNzdWUyNzM2MjY4MTU= | 83 | Individual row view is broken | 9599 | closed | 0 | 0 | 2017-11-14T00:29:11Z | 2017-11-14T00:45:34Z | 2017-11-14T00:45:34Z | OWNER | https://parlgov.datasettes.com/parlgov-25f9855/viewcalc_parliament_composition/18 <img width="822" alt="cursor_and_localhost_8002_parlgov-25f9855_viewcalc_parliament_composition_18" src="https://user-images.githubusercontent.com/9599/32756593-c439c71c-c88f-11e7-9243-b6e1b778c8fa.png"> | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/83/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
273660425 | MDU6SXNzdWUyNzM2NjA0MjU= | 84 | datasette package --metadata does not work with a relative path | 9599 | closed | 0 | 0 | 2017-11-14T04:00:50Z | 2017-11-15T05:18:35Z | 2017-11-15T05:18:35Z | OWNER | $ datasette package ~/parlgov-db/parlgov.db --metadata=~/parlgov-db/parlgov.json Usage: datasette package [OPTIONS] FILES... Error: Invalid value for "-m" / "--metadata": Could not open file: ~/parlgov-db/parlgov.json: No such file or directory simonw-07542:~ simonw$ cd ~/parlgov-db/ simonw-07542:parlgov-db simonw$ datasette package ~/parlgov-db/parlgov.db --metadata=parlgov.json Sending build context to Docker daemon 4.46MB Step 1/7 : FROM python:3 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/84/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
273895344 | MDU6SXNzdWUyNzM4OTUzNDQ= | 92 | Add --license --license_url --source --source_url --title arguments to datasette publish | 9599 | closed | 0 | 0 | 2017-11-14T18:27:07Z | 2017-11-15T05:04:41Z | 2017-11-15T05:04:41Z | OWNER | I keep on using the `echo '{"source": "..."}' | datasette publish now --metadata=-` pattern, which suggests it makes sense for us to support these as optional arguments. https://gist.github.com/simonw/9f8bf23b37a42d7628c4dcc4bba10253 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/92/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
274023417 | MDU6SXNzdWUyNzQwMjM0MTc= | 98 | Default to 127.0.0.1 not 0.0.0.0 | 9599 | closed | 0 | 0 | 2017-11-15T03:31:55Z | 2017-11-15T05:08:54Z | 2017-11-15T05:08:54Z | OWNER | https://twitter.com/yschimke/status/930606210855854080 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/98/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
274023625 | MDU6SXNzdWUyNzQwMjM2MjU= | 99 | Start a change log | 9599 | closed | 0 | 0 | 2017-11-15T03:33:21Z | 2017-11-16T15:12:46Z | 2017-11-16T15:12:45Z | OWNER | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/99/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||||
274374317 | MDU6SXNzdWUyNzQzNzQzMTc= | 108 | Include version in python code, output in template | 9599 | closed | 0 | 0 | 2017-11-16T02:32:40Z | 2017-11-16T15:30:04Z | 2017-11-16T15:30:04Z | OWNER | It would be useful if I could tell which version of datasette was running on a site. Embed version number and include it in maybe a tooltip on the “powered by datasette” link | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/108/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
274662378 | MDU6SXNzdWUyNzQ2NjIzNzg= | 113 | Fix the bug on the database custom SQL query view | 9599 | closed | 0 | 2919870 | 0 | 2017-11-16T21:01:26Z | 2017-11-17T15:40:52Z | 2017-11-17T15:40:52Z | OWNER | https://sf-film-locations.now.sh/sf-film-locations-57704b7?sql=select+*+from+Film_Locations_in_San_Francisco <img width="852" alt="sf-film-locations" src="https://user-images.githubusercontent.com/9599/32915540-19bad984-cace-11e7-9ed3-bd7294891dc0.png"> This is the bug I fixed in 01e0c3fa18cd0dd7970e208790ffd683a420c924 - but I only fixed it in one place. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/113/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
275048699 | MDExOlB1bGxSZXF1ZXN0MTUzNDMyMDQ1 | 118 | Foreign key information on row and table pages | 9599 | closed | 0 | 0 | 2017-11-18T03:13:27Z | 2017-11-18T03:15:57Z | 2017-11-18T03:15:50Z | OWNER | simonw/datasette/pulls/118 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/118/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
275159710 | MDU6SXNzdWUyNzUxNTk3MTA= | 128 | Every visualization should have an "embed" button | 9599 | open | 0 | 0 | 2017-11-19T13:38:13Z | 2019-05-13T18:33:51Z | OWNER | At least for the first round of visualizations, any time you construct one using the UI the result should include an "embed this" button that returns source code to copy and paste These examples should use unpkg.com (or similarl) urls with SRI hashes, eg https://www.srihash.org - and should load data from the datasette JSON API. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/128/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
275166078 | MDU6SXNzdWUyNzUxNjYwNzg= | 130 | Rename "datasette build" to "datasette inspect" | 9599 | closed | 0 | 0 | 2017-11-19T15:08:02Z | 2017-12-07T16:57:58Z | 2017-12-07T16:57:58Z | OWNER | This command introspects the databases and writes out a JSON summary. I think I'd like to use `datasette build` for something more interesting, potentially duplicating functionality from https://github.com/simonw/csvs-to-sqlite Since the internal method that does this is called `ds.inspect()` that seems like a reasonable replacement name for the command. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/130/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 | 9599 | closed | 0 | 0 | 2017-11-20T03:42:19Z | 2019-10-14T03:46:13Z | 2019-10-14T03:46:13Z | OWNER | Can use this: https://github.com/zeroturnaround/sql-formatter https://zeroturnaround.github.io/sql-formatter/ | 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 | ||||||
276192732 | MDExOlB1bGxSZXF1ZXN0MTU0MjQ2ODE2 | 145 | Fix pytest version conflict | 9599 | closed | 0 | 0 | 2017-11-22T20:15:34Z | 2017-11-22T20:17:54Z | 2017-11-22T20:17:52Z | OWNER | simonw/datasette/pulls/145 | https://travis-ci.org/simonw/datasette/jobs/305929426 pkg_resources.VersionConflict: (pytest 3.2.1 (/home/travis/virtualenv/python3.5.3/lib/python3.5/site-packages), Requirement.parse('pytest==3.2.3')) | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/145/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
276477888 | MDU6SXNzdWUyNzY0Nzc4ODg= | 148 | Need a != filter | 9599 | closed | 0 | 2919870 | 0 | 2017-11-23T22:05:22Z | 2017-11-23T22:10:02Z | 2017-11-23T22:10:01Z | OWNER | https://datasette-demos.now.sh/sf-trees-ebc2ad9/Street_Tree_List?qCareAssistant=1 shows trees managed by FUF - but how about trees that are NOT managed by FUF? | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/148/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
276765070 | MDU6SXNzdWUyNzY3NjUwNzA= | 152 | Incorrect display of rows page for tables with a primary key | 9599 | closed | 0 | 2949431 | 0 | 2017-11-25T17:29:54Z | 2017-12-07T05:23:20Z | 2017-12-07T05:23:19Z | OWNER | This is a regression. Here's the old version: <img width="420" alt="parlgov__party_family" src="https://user-images.githubusercontent.com/9599/33232903-031ef1a0-d1c3-11e7-94b4-10f9f0076b4f.png"> And here's the new, broken one: https://parlgov-xtxlddmtiz.now.sh/parlgov-25f9855/party_family/1 <img width="420" alt="parlgov__party_family" src="https://user-images.githubusercontent.com/9599/33232908-12f885be-d1c3-11e7-97f1-cb420f2a5de4.png"> The JSON output is the same for both - it's only the HTML representation that exhibits the bug. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/152/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
278191223 | MDU6SXNzdWUyNzgxOTEyMjM= | 159 | Come up with an elegant mechanism for per-row template customization | 9599 | closed | 0 | 2949431 | 0 | 2017-11-30T16:47:26Z | 2017-12-07T06:12:27Z | 2017-12-07T06:12:26Z | OWNER | It would be nice if customizing the display of an individual row in a custom table template was as simple as possible - refs #153 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/159/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
279199916 | MDU6SXNzdWUyNzkxOTk5MTY= | 162 | Link should not show up in the column selection dropdowns | 9599 | closed | 0 | 2949431 | 0 | 2017-12-05T00:19:04Z | 2017-12-07T05:05:58Z | 2017-12-07T05:05:58Z | OWNER | e.g. on https://san-francisco.datasettes.com/food-trucks-921342f/Applicant <img width="729" alt="food-trucks__applicant__131_rows" src="https://user-images.githubusercontent.com/9599/33583381-ece18de6-d90e-11e7-8287-d5e4813dcb78.png"> | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/162/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
310850458 | MDExOlB1bGxSZXF1ZXN0MTc5MTA4OTYx | 192 | New ?_shape=objects/object/lists param for JSON API | 9599 | closed | 0 | 0 | 2018-04-03T14:02:58Z | 2018-04-03T14:53:00Z | 2018-04-03T14:52:55Z | OWNER | simonw/datasette/pulls/192 | Refs #122 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/192/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
312355154 | MDExOlB1bGxSZXF1ZXN0MTgwMTg4Mzk3 | 196 | _sort= and _sort_desc= parameters to table view | 9599 | closed | 0 | 0 | 2018-04-09T00:07:21Z | 2018-04-09T05:10:29Z | 2018-04-09T05:10:23Z | OWNER | simonw/datasette/pulls/196 | See #189 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/196/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
312395790 | MDU6SXNzdWUzMTIzOTU3OTA= | 197 | Ability to sort by more than one column | 9599 | open | 0 | 0 | 2018-04-09T05:13:30Z | 2018-07-10T17:45:37Z | OWNER | Split off from #189. I'd like to support "sort by X descending, then by Y ascending if there are dupes for X" as well. Suggested syntax for that: ?_sort_desc=X&_sort=Y we currently only allow one argument to be sent. We should allow as many arguments as there are columns, for example: ?_sort=department&_sort_desc=precinct&_sort=age&_sort_desc=size | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/197/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
312396095 | MDU6SXNzdWUzMTIzOTYwOTU= | 198 | Ability to sort with nulls last | 9599 | open | 0 | 0 | 2018-04-09T05:15:40Z | 2018-07-10T17:45:37Z | OWNER | Split off from #189 Here's how to do that in SQL: https://fivethirtyeight.datasettes.com/fivethirtyeight-2628db9?sql=select+rowid%2C+*+from+%5Bnfl-wide-receivers%2Fadvanced-historical%5D%0D%0Aorder+by+case+when+career_ranypa+is+null+then+1+else+0+end%2C+career_ranypa%2C+rowid order by case when career_ranypa is null then 1 else 0 end, career_ranypa | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/198/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
314469126 | MDExOlB1bGxSZXF1ZXN0MTgxNzMxOTU2 | 210 | Start of the plugin system, based on pluggy | 9599 | closed | 0 | 0 | 2018-04-16T00:51:30Z | 2018-04-16T00:56:16Z | 2018-04-16T00:56:16Z | OWNER | simonw/datasette/pulls/210 | Refs #14 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/210/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
314504812 | MDExOlB1bGxSZXF1ZXN0MTgxNzU1MjIw | 212 | New --plugins-dir=plugins/ option | 9599 | closed | 0 | 0 | 2018-04-16T05:19:28Z | 2018-04-16T05:22:18Z | 2018-04-16T05:22:01Z | OWNER | simonw/datasette/pulls/212 | Refs #211 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/212/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
314506033 | MDU6SXNzdWUzMTQ1MDYwMzM= | 213 | Documentation for plugins system | 9599 | closed | 0 | 0 | 2018-04-16T05:27:07Z | 2018-04-16T15:12:48Z | 2018-04-16T15:12:48Z | OWNER | Documentation for #14 - how to write plugins, how to ship plugins to PyPI and how to use the `--plugins-dir` option added in #211 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/213/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
314771615 | MDU6SXNzdWUzMTQ3NzE2MTU= | 218 | Support custom unit display in order to handle "$10,000" | 9599 | open | 0 | 0 | 2018-04-16T18:39:31Z | 2018-07-10T17:45:38Z | OWNER | I tried to get Datasette to display `$10,000` using the new units support but we currently only display units as a suffix: https://github.com/simonw/datasette/blob/10a34f995c70daa37a8a2aa02c3135a4b023a24c/datasette/app.py#L563-L572 It would be neat if there was a mechanism for specifying a custom unit display - maybe something like this: ``` { "custom_units": { "us_dollar": { "unit": "us_dollar = [] = $", "format": "${:,}" } } } ``` | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/218/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
315316214 | MDExOlB1bGxSZXF1ZXN0MTgyMzU3NjEz | 222 | Fix for plugins in Python 3.5 | 9599 | closed | 0 | 0 | 2018-04-18T03:21:01Z | 2018-04-18T04:26:50Z | 2018-04-18T03:24:21Z | OWNER | simonw/datasette/pulls/222 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/222/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
315548495 | MDU6SXNzdWUzMTU1NDg0OTU= | 225 | /-/(inspect|metadata|plugins)(.json)? introspection | 9599 | closed | 0 | 0 | 2018-04-18T16:14:58Z | 2018-04-19T05:25:33Z | 2018-04-19T05:25:33Z | OWNER | 3 pages (and accompanying .json endpoints) for viewing: * the metadata.json that datasette was loaded with * the output of ds.inspect() * a list of installed plugins, detected by pluggy | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/225/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
317900587 | MDU6SXNzdWUzMTc5MDA1ODc= | 240 | FTS table detection should be part of .inspect() | 9599 | closed | 0 | 0 | 2018-04-26T06:58:10Z | 2018-04-29T00:04:44Z | 2018-04-29T00:04:44Z | OWNER | The code that detects if specific tables have a corresponding FTS column is currently called from TableView - it should instead be handled as part of `.inspect()`. This will make it easier to build other features that need to behave differently depending on whether a table can be searched, e.g. an autocomplete widget for selecting filters from foreign key tables. Current code: https://github.com/simonw/datasette/blob/f188ceaa2a3a5b2eab83425ad0f00cb0d364e24a/datasette/app.py#L728-L733 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/240/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
318490133 | MDU6SXNzdWUzMTg0OTAxMzM= | 241 | Default datasette logging format should be JSON | 9599 | open | 0 | 0 | 2018-04-27T17:32:48Z | 2018-07-10T17:45:40Z | OWNER | Structured logs are better. Datasette should default to outputting it's HTTP access log lines as newline delimited JSON instead of the Sanic default format it uses at the moment. For improved greppability these logs should have keys ordered in a consistent way. Python's JSON module can do this with ordered dictionaries. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/241/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
318692953 | MDU6SXNzdWUzMTg2OTI5NTM= | 242 | Rename ?_sql_time_limit_ms= to ?_timelimit= | 9599 | closed | 0 | 0 | 2018-04-29T06:11:35Z | 2018-05-02T00:20:42Z | 2018-05-02T00:20:42Z | OWNER | It's a bit of a mouthful at the moment. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/242/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
319371036 | MDExOlB1bGxSZXF1ZXN0MTg1MzA3NDA3 | 246 | ?_shape=array and _timelimit= | 9599 | closed | 0 | 0 | 2018-05-02T00:18:54Z | 2018-05-02T00:20:41Z | 2018-05-02T00:20:40Z | OWNER | simonw/datasette/pulls/246 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/246/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
320132682 | MDU6SXNzdWUzMjAxMzI2ODI= | 250 | Setup some issue templates | 9599 | open | 0 | 0 | 2018-05-04T01:49:07Z | 2018-05-04T01:49:07Z | OWNER | https://twitter.com/left_pad/status/99216385740464537 I like the idea of using these to help people understand some of the ways I want to use issues. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/250/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
321624016 | MDU6SXNzdWUzMjE2MjQwMTY= | 252 | /-/versions should report the FTS version supported by SQLite | 9599 | closed | 0 | 0 | 2018-05-09T15:43:47Z | 2018-05-11T13:19:52Z | 2018-05-11T13:19:52Z | OWNER | I can copy this function from `csvs-to-sqlite`: https://github.com/simonw/csvs-to-sqlite/blob/dccbf65b37bc9eed50e9edb80a42f257e93edb1f/csvs_to_sqlite/utils.py#L283-L293 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/252/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
323459939 | MDExOlB1bGxSZXF1ZXN0MTg4MzEyNDEx | 261 | Facets improvements plus suggested facets | 9599 | closed | 0 | 0 | 2018-05-16T03:52:39Z | 2018-05-16T15:27:26Z | 2018-05-16T15:27:25Z | OWNER | simonw/datasette/pulls/261 | Refs #255 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/261/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
323726888 | MDU6SXNzdWUzMjM3MjY4ODg= | 269 | If a facet fails due to timing out, let the user know somehow | 9599 | closed | 0 | 0 | 2018-05-16T18:01:47Z | 2018-05-18T06:11:46Z | 2018-05-18T06:11:46Z | OWNER | Refs #255 - right now facets fail silently if the user requested them but they take longer than 200ms to calculate - see also #264 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/269/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
326778161 | MDU6SXNzdWUzMjY3NzgxNjE= | 290 | Consider increasing the default for num_sql_threads (currently 3) | 9599 | open | 0 | 0 | 2018-05-27T00:52:41Z | 2018-05-27T00:52:41Z | OWNER | I ran a very rough micro-benchmark on the new `num_sql_threads` config option (added in #285) datasette --config num_sql_threads:1 fivethirtyeight.db Then ab -n 100 -c 10 'http://127.0.0.1:8011/fivethirtyeight-2628db9/twitter-ratio%2Fsenators' | Number of threads | Requests/second | |---|---| | 1 | 4.57 | | 3 | 9.77 | | 10 | 13.53 | | 20 | 15.24 | 50 | 8.21 | This was on my early 2018 OS X laptop. Need to benchmark in other common environments before making a decision on changing the default. That said, the default of 3 was a number I plucked out of thin air. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/290/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
327541975 | MDU6SXNzdWUzMjc1NDE5NzU= | 300 | Hide sort select box on larger screens | 9599 | closed | 0 | 0 | 2018-05-30T01:34:59Z | 2018-05-31T14:43:13Z | 2018-05-31T14:43:13Z | OWNER | I'm larger screens you can sort by clicking column headers, so no need to show the select box (which was added for the small screen layout that doesn't show headers) | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/300/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
332830309 | MDU6SXNzdWUzMzI4MzAzMDk= | 310 | datasette publish now is broken in master | 9599 | closed | 0 | 0 | 2018-06-15T16:01:14Z | 2018-06-16T16:29:50Z | 2018-06-16T16:29:50Z | OWNER | ``` > gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python3.6m -c httptools/parser/parser.c -o build/temp.linux-x86_64-3.6/httptools/parser/parser.o -O2 > unable to execute 'gcc': No such file or directory > error: command 'gcc' failed with exit status 1 > > ---------------------------------------- > Command "/usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-s73273rj/httptools/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-yha7dxqq/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-s73273rj/httptools/ ``` Turns out the `python-slim` base image I introduced in b18e4515855c3f1eeca3dfcccdbb6df05869084a doesn't include gcc: https://github.com/docker-library/python/issues/60#issuecomment-134322383 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/310/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
333120982 | MDExOlB1bGxSZXF1ZXN0MTk1NDEzMjQx | 315 | Streaming mode for downloading all rows as a CSV | 9599 | closed | 0 | 0 | 2018-06-18T03:06:59Z | 2018-06-18T03:29:13Z | 2018-06-18T03:21:02Z | OWNER | simonw/datasette/pulls/315 | Refs #266 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/315/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
334731076 | MDExOlB1bGxSZXF1ZXN0MTk2NjI4MzA0 | 324 | Speed up Travis by reusing pip wheel cache across builds | 9599 | closed | 0 | 0 | 2018-06-22T03:20:08Z | 2018-06-24T01:03:47Z | 2018-06-24T01:03:47Z | OWNER | simonw/datasette/pulls/324 | From https://atchai.com/blog/faster-ci/ - refs #323 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/324/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
340733753 | MDExOlB1bGxSZXF1ZXN0MjAxMDc1NTMy | 341 | Bump aiohttp to fix compatibility with Python 3.7 | 9599 | closed | 0 | 0 | 2018-07-12T17:41:24Z | 2018-07-12T18:07:38Z | 2018-07-12T18:07:38Z | OWNER | simonw/datasette/pulls/341 | Tests failed here: https://travis-ci.org/simonw/datasette/jobs/403223333 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/341/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
344654623 | MDU6SXNzdWUzNDQ2NTQ2MjM= | 347 | Rename "datasette package" to "datasette publish docker" | 9599 | open | 0 | 0 | 2018-07-26T00:42:46Z | 2018-07-26T00:42:46Z | OWNER | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/347/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
|||||||||
345821778 | MDExOlB1bGxSZXF1ZXN0MjA0ODUxNTEx | 353 | render_cell(value) plugin hook | 9599 | closed | 0 | 0 | 2018-07-30T15:57:08Z | 2018-08-05T00:14:57Z | 2018-08-05T00:14:57Z | OWNER | simonw/datasette/pulls/353 | Closes #352. | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/353/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
346026869 | MDU6SXNzdWUzNDYwMjY4Njk= | 354 | Handle many-to-many relationships | 9599 | open | 0 | 0 | 2018-07-31T04:03:13Z | 2020-11-24T19:51:18Z | OWNER | This is a master tracking ticket for various many-2-many features. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/354/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
347058326 | MDExOlB1bGxSZXF1ZXN0MjA1NzcwOTk2 | 1 | Make .indexes compatible with older SQLite versions | 9599 | closed | 0 | 0 | 2018-08-02T15:17:05Z | 2018-08-02T15:17:30Z | 2018-08-02T15:17:30Z | OWNER | simonw/sqlite-utils/pulls/1 | Older SQLite versions return a different set of columns from the PRAGMA we are using. | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/1/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
348534997 | MDExOlB1bGxSZXF1ZXN0MjA2ODYzODAz | 358 | Bump versions of pytest, pluggy and beautifulsoup4 | 9599 | closed | 0 | 0 | 2018-08-08T00:44:38Z | 2018-08-08T01:11:13Z | 2018-08-08T01:11:13Z | OWNER | simonw/datasette/pulls/358 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/358/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
351017365 | MDExOlB1bGxSZXF1ZXN0MjA4NzE5MDQz | 361 | Import pysqlite3 if available, closes #360 | 9599 | closed | 0 | 0 | 2018-08-16T00:52:21Z | 2018-08-16T00:58:57Z | 2018-08-16T00:58:57Z | OWNER | simonw/datasette/pulls/361 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/361/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
394751072 | MDExOlB1bGxSZXF1ZXN0MjQxNDE4NDQz | 392 | Fix some regex DeprecationWarnings | 9599 | closed | 0 | 0 | 2018-12-29T02:10:28Z | 2018-12-29T02:22:28Z | 2018-12-29T02:22:28Z | OWNER | simonw/datasette/pulls/392 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/392/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
403028630 | MDExOlB1bGxSZXF1ZXN0MjQ3NTc2OTQy | 4 | Fts5 | 9599 | closed | 0 | 0 | 2019-01-25T06:54:05Z | 2019-01-25T06:54:33Z | 2019-01-25T06:54:33Z | OWNER | simonw/sqlite-utils/pulls/4 | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/4/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
403396009 | MDExOlB1bGxSZXF1ZXN0MjQ3ODYxNDE5 | 5 | Run Travis tests against Python 3.8-dev | 9599 | closed | 0 | 0 | 2019-01-26T02:30:55Z | 2019-01-26T02:37:54Z | 2019-01-26T02:37:54Z | OWNER | simonw/sqlite-utils/pulls/5 | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/5/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
413778585 | MDExOlB1bGxSZXF1ZXN0MjU1NjU4MTEy | 12 | Support for numpy types, closes #11 | 9599 | closed | 0 | 0 | 2019-02-24T03:57:32Z | 2019-02-24T04:02:20Z | 2019-02-24T04:02:20Z | OWNER | simonw/sqlite-utils/pulls/12 | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/12/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
413857257 | MDU6SXNzdWU0MTM4NTcyNTc= | 15 | Ability to add columns to tables | 9599 | closed | 0 | 0 | 2019-02-24T19:20:51Z | 2019-02-24T20:04:40Z | 2019-02-24T20:04:40Z | OWNER | Makes sense to do this before foreign keys in #2 Python: db["table"].add_column("new_column", int) CLI: $ sqlite-utils add-column table new_column INTEGER | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/15/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
426722204 | MDU6SXNzdWU0MjY3MjIyMDQ= | 423 | ?_search_col=X not reflected correctly in the UI | 9599 | open | 0 | 0 | 2019-03-28T21:48:19Z | 2020-11-03T19:01:59Z | OWNER | e.g. https://latest.datasette.io/fixtures/searchable?_search_text1=barry ![2019-03-28 at 2 47 PM](https://user-images.githubusercontent.com/9599/55195035-84ebb800-5168-11e9-910b-fc9868bcd93e.png) | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/423/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
432217625 | MDU6SXNzdWU0MzIyMTc2MjU= | 19 | Incorrect help text for enable-fts command | 9599 | closed | 0 | 4348046 | 0 | 2019-04-11T19:46:44Z | 2019-05-25T00:44:31Z | 2019-05-25T00:44:31Z | OWNER | I clearly copied-and-pasted this from the `tables` command without updating it: https://github.com/simonw/sqlite-utils/blob/0b1af42ead3b3902347951180b3364ce1942da6e/sqlite_utils/cli.py#L216-L222 | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/19/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
432792459 | MDExOlB1bGxSZXF1ZXN0MjcwMTkxMDg0 | 430 | ?_where= parameter on table views, closes #429 | 9599 | closed | 0 | 0 | 2019-04-13T01:15:09Z | 2019-04-13T01:37:23Z | 2019-04-13T01:37:23Z | OWNER | simonw/datasette/pulls/430 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/430/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
433297989 | MDU6SXNzdWU0MzMyOTc5ODk= | 433 | ?column__in=value1,value2,value3 filter | 9599 | closed | 0 | 0 | 2019-04-15T13:58:24Z | 2019-04-15T23:00:20Z | 2019-04-15T23:00:20Z | OWNER | Support for the SQL `where column in (...)` construct, inspired by the new design for facet configuration in #427 `?column__in=value1,value2,value3` will map to `where column in ("value1", "value2", "value3")` If comma separation won't work (because the values themselves contain commas) you can do this instead: `?column__in=["value1","value2","value3,with-comma"]` See also #288 | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/433/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
439836586 | MDExOlB1bGxSZXF1ZXN0Mjc1NTU4NjEy | 445 | Extract facet code out into a new plugin hook, closes #427 | 9599 | closed | 0 | 0 | 2019-05-03T00:02:41Z | 2019-05-03T18:17:18Z | 2019-05-03T00:11:27Z | OWNER | simonw/datasette/pulls/445 | Datasette previously only supported one type of faceting: exact column value counting. With this change, faceting logic is extracted out into one or more separate classes which can implement other patterns of faceting - this is discussed in #427, but potential upcoming facet types include facet-by-date, facet-by-JSON-array, facet-by-many-2-many and more. A new plugin hook, register_facet_classes, can be used by plugins to add in additional facet classes. Each class must implement two methods: suggest(), which scans columns in the table to decide if they might be worth suggesting for faceting, and facet_results(), which executes the facet operation and returns results ready to be displayed in the UI. | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/445/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
440237422 | MDExOlB1bGxSZXF1ZXN0Mjc1ODYxNTU5 | 449 | Apply black to everything | 9599 | closed | 0 | 0 | 2019-05-03T21:57:26Z | 2019-05-04T02:17:14Z | 2019-05-04T02:15:15Z | OWNER | simonw/datasette/pulls/449 | I've been hesitating on this for literally months, because I'm not at all excited about the giant diff that will result. But I've been using black on many of my other projects (most actively [sqlite-utils](https://github.com/simonw/sqlite-utils)) and the productivity boost is undeniable: I don't have to spend a single second thinking about code formatting any more! So it's worth swallowing the one-off pain and moving on in a new, black-enabled world. | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/449/reactions", "total_count": 4, "+1": 0, "-1": 0, "laugh": 0, "hooray": 4, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
445855910 | MDU6SXNzdWU0NDU4NTU5MTA= | 475 | Documentation for about and about_url metadata | 9599 | closed | 0 | 4305096 | 0 | 2019-05-19T19:36:59Z | 2019-05-19T20:13:36Z | 2019-05-19T20:13:36Z | OWNER | Added in https://github.com/simonw/datasette/commit/bf6b0f918de4aeee7c1036ac975ce2fb23237da7 without docs. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/475/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
445858491 | MDU6SXNzdWU0NDU4NTg0OTE= | 476 | Remove "datasette skeleton" | 9599 | closed | 0 | 4305096 | 0 | 2019-05-19T20:04:11Z | 2019-05-19T20:06:06Z | 2019-05-19T20:06:06Z | OWNER | It doesn't work any more, and it's not a particularly useful feature - I've hardly used it since I added it. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/476/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
445862501 | MDU6SXNzdWU0NDU4NjI1MDE= | 477 | Documentation for ArrayFacet (facet by JSON array) | 9599 | closed | 0 | 4305096 | 0 | 2019-05-19T20:47:27Z | 2019-05-29T21:39:12Z | 2019-05-19T21:19:43Z | OWNER | This is missing from https://datasette.readthedocs.io/en/0.27.1/facets.html right now | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/477/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
446433735 | MDU6SXNzdWU0NDY0MzM3MzU= | 482 | Example of a custom facet plugin is incorrect | 9599 | closed | 0 | 4471010 | 0 | 2019-05-21T06:12:47Z | 2019-07-07T23:19:10Z | 2019-07-07T23:19:10Z | OWNER | The function signatures are wrong on https://datasette.readthedocs.io/en/0.28/plugins.html#register-facet-classes The new signatures are: `async def suggest(self)` and `async def facet_results(self)` - the `sql` and `params` are now passed to the class constructor. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/482/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | |||||
448668204 | MDU6SXNzdWU0NDg2NjgyMDQ= | 488 | Move detect_primary_keys to Database class method | 9599 | closed | 0 | 0 | 2019-05-27T05:11:51Z | 2019-05-27T20:05:34Z | 2019-05-27T18:29:02Z | OWNER | e.g. https://github.com/simonw/datasette/blob/026c84db30bd0a75ecde146a80a5d142078dc299/datasette/views/table.py#L73-L75 Should be ``` pks = await db.primary_keys(table) ``` | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/488/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
449445715 | MDU6SXNzdWU0NDk0NDU3MTU= | 491 | Figure out how to use Firebase with cloudrun to enable vanity URLs and CDN caching | 9599 | open | 0 | 0 | 2019-05-28T19:48:06Z | 2019-05-28T19:48:35Z | OWNER | It looks like Firebase can solve a couple of problems with the existing `datasette publish cloudrun` hosting mechanism: * The URLs it produces aren't pretty enough. Firebase offers more control over vanity URLs. * CDN caching (as seen in `datasette publish now`) is great for improving performance and saving money on Cloud Run execution time. https://firebase.google.com/docs/hosting/cloud-run looks like it can help with both of these. Lots of interesting questions: * Should this be a new `datasette publish firebase` command or should it instead be implemented as additional custom options to `datasette publish cloudrun`? * How much harder does it become to do account setup? * How much will this option cost users? | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/491/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
451261628 | MDExOlB1bGxSZXF1ZXN0Mjg0MzkwMTk3 | 497 | Upgrade pytest to 4.6.1 | 9599 | closed | 0 | 0 | 2019-06-03T01:45:34Z | 2019-06-03T02:06:32Z | 2019-06-03T02:06:27Z | OWNER | simonw/datasette/pulls/497 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/497/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 | 9599 | closed | 0 | 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 | 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 | |||||
453829910 | MDU6SXNzdWU0NTM4Mjk5MTA= | 505 | Add white-space: pre-wrap to SQL create statement | 9599 | closed | 0 | 9599 | 4471010 | 0 | 2019-06-08T19:59:56Z | 2019-07-07T20:26:55Z | 2019-07-07T20:26:55Z | OWNER | Right now a super-long CREATE TABLE statement causes the table page to be even wider than the table itself: <img width="1067" alt="many-photos-tables__RKMaster__1_row_where_where_modelId___18479_and_New_Issue_·_simonw_datasette_and_many-photos-tables__RKPlace__1_274_rows" src="https://user-images.githubusercontent.com/9599/59151726-27d47400-89ed-11e9-9ff7-76c129127329.png"> Adding `white-space: pre-wrap` to that `<pre>` element is an easy fix: <img width="1070" alt="many-photos-tables__RKMaster__28_260_rows_and_New_Issue_·_simonw_datasette" src="https://user-images.githubusercontent.com/9599/59151732-476b9c80-89ed-11e9-8c1b-c9af98bad5b4.png"> | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/505/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||
458941203 | MDU6SXNzdWU0NTg5NDEyMDM= | 29 | Prevent accidental add-foreign-key with invalid column | 9599 | closed | 0 | 0 | 2019-06-20T23:57:24Z | 2019-06-20T23:58:26Z | 2019-06-20T23:58:26Z | OWNER | You can corrupt your database by running: $ sqlite-utils add-foreign-key my.db table non_existent_column other_table other_column | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/29/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
459469278 | MDU6SXNzdWU0NTk0NjkyNzg= | 515 | Try shrinking official image with docker-slim | 9599 | open | 0 | 0 | 2019-06-22T12:25:37Z | 2019-06-22T12:25:37Z | OWNER | This looks really promising: https://github.com/docker-slim/docker-slim If it can shave substantial size from our official container reliably we could add it to the automated build process. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/515/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
460095928 | MDU6SXNzdWU0NjAwOTU5Mjg= | 528 | Establish a pattern for Datasette plugins built on top of Pandas | 9599 | open | 0 | 0 | 2019-06-24T21:05:52Z | 2019-06-24T21:05:52Z | OWNER | The Pandas ecosystem is huge, varied and full of tools that are really good at doing interesting analysis on top of tabular data. Pandas should not be a dependency of Datasette core, but I think there is a lot of potential in having plugins which use Pandas to apply interesting analysis to data sucked out of Datasette's SQLite tables. One example ([thanks, Tony](https://twitter.com/psychemedia/status/1143259809715752962)): https://github.com/ResidentMario/missingno could form the basis of a fantastic plugin for getting a high-level overview of how complete each column in a table is. Some thought is needed here about what shape these kind of plugins might take, and what plugin hooks they would use. | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/528/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
||||||||
461237618 | MDU6SXNzdWU0NjEyMzc2MTg= | 31 | Mechanism for adding multiple foreign key constraints at once | 9599 | closed | 0 | 0 | 2019-06-27T00:04:30Z | 2019-06-29T06:27:40Z | 2019-06-29T06:27:40Z | OWNER | Needed by [db-to-sqlite](https://github.com/simonw/db-to-sqlite). It currently works by collecting all of the foreign key relationships it can find and then applying them at the end of the process. The problem is, the `add_foreign_key()` method looks like this: https://github.com/simonw/sqlite-utils/blob/86bd2bba689e25f09551d611ccfbee1e069e5b66/sqlite_utils/db.py#L498-L516 That means it's doing a full `VACUUM` for every single relationship it sets up - and if you have hundreds of foreign key relationships in your database this can take hours. I think the right solution is to have a `.add_foreign_keys(list_of_args)` method which does the bulk operation and then a single `VACUUM`. `.add_foreign_key(...)` can then call the bulk action with a single list item. | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/31/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
462423972 | MDExOlB1bGxSZXF1ZXN0MjkzMTE3MTgz | 34 | sqlite-utils index-foreign-keys / db.index_foreign_keys() | 9599 | closed | 0 | 0 | 2019-06-30T16:43:40Z | 2019-06-30T23:50:55Z | 2019-06-30T23:50:55Z | OWNER | simonw/sqlite-utils/pulls/34 | Refs #33 - [x] `sqlite-utils index-foreign-keys` command - [x] `db.index_foreign_keys()` method - [x] unit tests - [x] documentation | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/34/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
462817589 | MDU6SXNzdWU0NjI4MTc1ODk= | 36 | Support compound primary keys | 9599 | closed | 0 | 0 | 2019-07-01T17:00:07Z | 2019-07-15T04:28:52Z | 2019-07-15T04:28:52Z | OWNER | This should work: ```python table = db["dog_breeds"].insert({ "dog_id": 1, "breed_id": 2 }, pk=("dog_id", "breed_id")) ``` Needed for m2m work in #23 | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/36/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
462928038 | MDU6SXNzdWU0NjI5MjgwMzg= | 532 | Switch setup.py to using ~= for dependencies | 9599 | closed | 0 | 0 | 2019-07-01T21:53:48Z | 2019-07-03T04:32:58Z | 2019-07-03T04:32:58Z | OWNER | `~=` means "compatible release" https://www.python.org/dev/peps/pep-0440/#compatible-release See also https://stackoverflow.com/questions/39590187/in-requirements-txt-what-does-tilde-equals-mean | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/532/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
463531894 | MDExOlB1bGxSZXF1ZXN0MjkzOTkyMzgy | 535 | Added asgi_wrapper plugin hook, closes #520 | 9599 | closed | 0 | 0 | 2019-07-03T03:58:00Z | 2019-07-03T04:06:26Z | 2019-07-03T04:06:26Z | OWNER | simonw/datasette/pulls/535 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/535/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
463534974 | MDExOlB1bGxSZXF1ZXN0MjkzOTk0NDQz | 536 | Switch to ~= dependencies, closes #532 | 9599 | closed | 0 | 0 | 2019-07-03T04:12:16Z | 2019-07-03T04:32:55Z | 2019-07-03T04:32:55Z | OWNER | simonw/datasette/pulls/536 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/536/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
464994105 | MDU6SXNzdWU0NjQ5OTQxMDU= | 548 | Add datasette-cors and datasette-auth-github plugins to Ecosystem page | 9599 | closed | 0 | 4471010 | 0 | 2019-07-07T21:14:14Z | 2019-07-08T02:02:36Z | 2019-07-08T02:02:36Z | OWNER | 107914493 | issue | { "url": "https://api.github.com/repos/simonw/datasette/issues/548/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
467623820 | MDExOlB1bGxSZXF1ZXN0Mjk3MjQzMDcz | 559 | Bump to uvicorn 0.8.4 | 9599 | closed | 0 | 0 | 2019-07-12T22:30:29Z | 2019-07-13T22:34:58Z | 2019-07-13T22:34:58Z | OWNER | simonw/datasette/pulls/559 | https://github.com/encode/uvicorn/commits/0.8.4 Query strings will now be included in log files: https://github.com/encode/uvicorn/pull/384 | 107914493 | pull | { "url": "https://api.github.com/repos/simonw/datasette/issues/559/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
467864071 | MDU6SXNzdWU0Njc4NjQwNzE= | 39 | table.get(...) method | 9599 | closed | 0 | 0 | 2019-07-14T17:20:51Z | 2019-07-15T04:28:53Z | 2019-07-15T04:28:53Z | OWNER | Utility method for fetching a record by its primary key. Accepts a single value (for primary key / rowid tables) or a list/tuple of values (for compound primary keys, refs #36). Raises a `NotFoundError` if the record cannot be found. | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/39/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
470131537 | MDU6SXNzdWU0NzAxMzE1Mzc= | 41 | sqlite-utils insert --tsv option | 9599 | closed | 0 | 0 | 2019-07-19T04:27:21Z | 2019-07-19T04:50:47Z | 2019-07-19T04:50:47Z | OWNER | Right now we only support ingesting CSV, but sometimes interesting data is released as TSV. https://www.washingtonpost.com/national/2019/07/18/how-download-use-dea-pain-pills-database/ for example. | 140912432 | issue | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/41/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
470637206 | MDU6SXNzdWU0NzA2MzcyMDY= | 3 | Import ActivitySummary | 9599 | closed | 0 | 0 | 2019-07-20T05:21:00Z | 2019-07-20T05:58:07Z | 2019-07-20T05:58:07Z | MEMBER | From #1 ```python 'ActivitySummary': {'attr_counts': {'activeEnergyBurned': 980, 'activeEnergyBurnedGoal': 980, 'activeEnergyBurnedUnit': 980, 'appleExerciseTime': 980, 'appleExerciseTimeGoal': 980, 'appleStandHours': 980, 'appleStandHoursGoal': 980, 'dateComponents': 980}, 'child_counts': {}, 'count': 980, 'parent_counts': {'HealthData': 980}}, ``` | 197882382 | issue | { "url": "https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/3/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
471684708 | MDExOlB1bGxSZXF1ZXN0MzAwMjg2NTM1 | 45 | Implemented table.lookup(...), closes #44 | 9599 | closed | 0 | 0 | 2019-07-23T13:03:30Z | 2019-07-23T13:07:00Z | 2019-07-23T13:07:00Z | OWNER | simonw/sqlite-utils/pulls/45 | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/45/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | ||||||
471797101 | MDExOlB1bGxSZXF1ZXN0MzAwMzc3NTk5 | 47 | extracts= table parameter | 9599 | closed | 0 | 0 | 2019-07-23T16:30:29Z | 2019-07-23T17:00:43Z | 2019-07-23T17:00:43Z | OWNER | simonw/sqlite-utils/pulls/47 | Still needs docs. Refs #46 | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/47/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
472104705 | MDExOlB1bGxSZXF1ZXN0MzAwNTgwMjIx | 8 | Use less RAM | 9599 | closed | 0 | 0 | 2019-07-24T06:35:01Z | 2019-07-24T06:35:52Z | 2019-07-24T06:35:52Z | MEMBER | dogsheep/healthkit-to-sqlite/pulls/8 | Closes #7 | 197882382 | pull | { "url": "https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/8/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
476436920 | MDExOlB1bGxSZXF1ZXN0MzAzOTkwNjgz | 53 | Work in progress: m2m() method for creating many-to-many records | 9599 | closed | 0 | 0 | 2019-08-03T10:03:56Z | 2019-08-04T03:38:10Z | 2019-08-04T03:37:33Z | OWNER | simonw/sqlite-utils/pulls/53 | - [x] `table.insert({"name": "Barry"}).m2m("tags", lookup={"tag": "Coworker"})` - [x] Explicit table name `.m2m("humans", ..., m2m_table="relationships")` - [x] Automatically use an existing m2m table if a single obvious candidate exists (a table with two foreign keys in the correct directions) - [x] Require the explicit `m2m_table=` argument if multiple candidates for the m2m table exist - [x] Documentation Refs #23 | 140912432 | pull | { "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/53/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0 | |||||
487598042 | MDU6SXNzdWU0ODc1OTgwNDI= | 1 | Implement code to pull checkins from the Foursquare API | 9599 | closed | 0 | 0 | 2019-08-30T17:40:02Z | 2019-08-30T18:23:24Z | 2019-08-30T18:23:24Z | MEMBER | The tool currently only works with a pre-prepared JSON file of checkins. When called without options, it should prompt the user to paste in a Foursquare OAuth token. The `--token=` option should work too, and should be backed up by an optional environment variable. | 205429375 | issue | { "url": "https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/1/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | ||||||
487721884 | MDU6SXNzdWU0ODc3MjE4ODQ= | 5 | Treat Foursquare timestamps as UTC | 9599 | closed | 0 | 0 | 2019-08-31T02:44:47Z | 2019-08-31T02:50:41Z | 2019-08-31T02:50:41Z | MEMBER | Current test failure is due to timezone differences between my laptop and Circle CI: https://circleci.com/gh/dogsheep/swarm-to-sqlite/3 ``` E Full diff: E - [{'created': '2018-07-01T04:48:19', E ? ^ E + [{'created': '2018-07-01T02:48:19', E ? ^ E 'createdAt': 1530413299, ``` The timestamps I store in `created` should always be UTC. | 205429375 | issue | { "url": "https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/5/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed |