issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Port Datasette to ASGI 42
- Ability to sort (and paginate) by column 31
- Export to CSV 27
- Documentation with recommendations on running Datasette in production without using Docker 26
- base_url configuration setting 24
- Datasette Plugins 22
- Handle spatialite geometry columns better 19
- Facets 16
- Bug: Sort by column with NULL in next_page URL 15
- Support cross-database joins 15
- The ".upsert()" method is misnamed 15
- --dirs option for scanning directories for SQLite databases 15
- latest.datasette.io is no longer updating 15
- Ability to customize presentation of specific columns in HTML view 14
- Mechanism for customizing the SQL used to select specific columns in the table view 14
- .execute_write() and .execute_write_fn() methods on Database 14
- Ability for a canned query to write to the database 14
- Upload all my photos to a secure S3 bucket 14
- Dockerfile should build more recent SQLite with FTS5 and spatialite support 13
- Fix all the places that currently use .inspect() data 13
- Metadata should be a nested arbitrary KV store 12
- Sanely handle Infinity/-Infinity values in JSON using ?_json_infinity=1 12
- Port Datasette from Sanic to ASGI + Uvicorn 12
- Populate "endpoint" key in ASGI scope 12
- base_url doesn't entirely work for running Datasette inside Binder 12
- Implement command-line tool interface 11
- Option to expose expanded foreign keys in JSON/CSV 11
- Full text search of all tables at once? 11
- Mechanism for adding arbitrary pages like /about 11
- Mechanism for checking if a SQLite database file is safe to open 11
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
622043887 | https://github.com/simonw/datasette/issues/747#issuecomment-622043887 | https://api.github.com/repos/simonw/datasette/issues/747 | MDEyOklzc3VlQ29tbWVudDYyMjA0Mzg4Nw== | simonw 9599 | 2020-04-30T19:04:19Z | 2020-04-30T19:04:19Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Directory configuration mode should support metadata.yaml 610192152 | ||
622036934 | https://github.com/simonw/datasette/issues/747#issuecomment-622036934 | https://api.github.com/repos/simonw/datasette/issues/747 | MDEyOklzc3VlQ29tbWVudDYyMjAzNjkzNA== | simonw 9599 | 2020-04-30T18:51:18Z | 2020-04-30T18:51:18Z | OWNER | Needs docs. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Directory configuration mode should support metadata.yaml 610192152 | |
622003376 | https://github.com/simonw/datasette/issues/747#issuecomment-622003376 | https://api.github.com/repos/simonw/datasette/issues/747 | MDEyOklzc3VlQ29tbWVudDYyMjAwMzM3Ng== | simonw 9599 | 2020-04-30T17:45:32Z | 2020-04-30T17:45:32Z | OWNER | I can use this function to load the JSON-or-YAML: https://github.com/simonw/datasette/blob/d349d57cdf3d577afb62bdf784af342a4d5be660/datasette/utils/init.py#L798-L806 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Directory configuration mode should support metadata.yaml 610192152 | |
621948898 | https://github.com/simonw/datasette/issues/747#issuecomment-621948898 | https://api.github.com/repos/simonw/datasette/issues/747 | MDEyOklzc3VlQ29tbWVudDYyMTk0ODg5OA== | simonw 9599 | 2020-04-30T16:05:50Z | 2020-04-30T16:05:50Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Directory configuration mode should support metadata.yaml 610192152 | ||
621045107 | https://github.com/simonw/datasette/pull/703#issuecomment-621045107 | https://api.github.com/repos/simonw/datasette/issues/703 | MDEyOklzc3VlQ29tbWVudDYyMTA0NTEwNw== | simonw 9599 | 2020-04-29T07:49:35Z | 2020-04-29T07:49:35Z | OWNER | Adding some still-to-do items to a checklist in the description. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
WIP implementation of writable canned queries 585597133 | |
621041812 | https://github.com/simonw/datasette/issues/698#issuecomment-621041812 | https://api.github.com/repos/simonw/datasette/issues/698 | MDEyOklzc3VlQ29tbWVudDYyMTA0MTgxMg== | simonw 9599 | 2020-04-29T07:42:48Z | 2020-04-29T07:42:48Z | OWNER | Need to figure out what the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability for a canned query to write to the database 582517965 | |
621037724 | https://github.com/simonw/datasette/issues/698#issuecomment-621037724 | https://api.github.com/repos/simonw/datasette/issues/698 | MDEyOklzc3VlQ29tbWVudDYyMTAzNzcyNA== | simonw 9599 | 2020-04-29T07:34:02Z | 2020-04-29T07:34:02Z | OWNER | Concept for displaying a success message: CSS: ```css .success { padding: 1em; border: 1px solid green; background-color: #c7fbc7; } |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability for a canned query to write to the database 582517965 | |
621036032 | https://github.com/simonw/datasette/issues/698#issuecomment-621036032 | https://api.github.com/repos/simonw/datasette/issues/698 | MDEyOklzc3VlQ29tbWVudDYyMTAzNjAzMg== | simonw 9599 | 2020-04-29T07:29:52Z | 2020-04-29T07:29:52Z | OWNER | What should happen when a query has been successfully executed? That depends on the query. Some queries may wish to redirect to another page. Other queries might want to show a custom message. There should at least be a default message saying the query has been executed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability for a canned query to write to the database 582517965 | |
621030783 | https://github.com/simonw/datasette/issues/744#issuecomment-621030783 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMTAzMDc4Mw== | aborruso 30607 | 2020-04-29T07:16:27Z | 2020-04-29T07:16:27Z | NONE | Hi @simonw it's debian as Windows Subsystem for Linux
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
621027697 | https://github.com/simonw/datasette/issues/744#issuecomment-621027697 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMTAyNzY5Nw== | simonw 9599 | 2020-04-29T07:08:09Z | 2020-04-29T07:08:09Z | OWNER | What operating system are you using? I need to figure out a way to replicate this bug. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
621027374 | https://github.com/simonw/datasette/pull/746#issuecomment-621027374 | https://api.github.com/repos/simonw/datasette/issues/746 | MDEyOklzc3VlQ29tbWVudDYyMTAyNzM3NA== | simonw 9599 | 2020-04-29T07:07:23Z | 2020-04-29T07:07:23Z | OWNER | It looks like this isn't the right fix: https://github.com/simonw/datasette/issues/744#issuecomment-621008152 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
shutil.Error, not OSError 608752766 | |
621011554 | https://github.com/simonw/datasette/issues/744#issuecomment-621011554 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMTAxMTU1NA== | aborruso 30607 | 2020-04-29T06:17:26Z | 2020-04-29T06:17:26Z | NONE | A stupid note: I have no It seems to me that it does not create any |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
621008152 | https://github.com/simonw/datasette/issues/744#issuecomment-621008152 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMTAwODE1Mg== | aborruso 30607 | 2020-04-29T06:05:02Z | 2020-04-29T06:05:02Z | NONE | Hi @simonw , I have installed it and I have the below errors.
No, /tmp folder is in the same volume. Thank you ``` Traceback (most recent call last): File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/utils/init.py", line 607, in link_or_copy_directory shutil.copytree(src, dst, copy_function=os.link) File "/usr/lib/python3.7/shutil.py", line 365, in copytree raise Error(errors) shutil.Error: [('/var/youtubeComunePalermo/processing/./template/base.html', '/tmp/tmpcqv_1i5d/templates/base.html', "[Errno 18] Invalid cross-device link: '/var/youtubeComunePalermo/processing/./template/base.html' -> '/tmp/tmpcqv_1i5d/templates/base.html'"), ('/var/youtubeComunePalermo/processing/./template/index.html', '/tmp/tmpcqv_1i5d/templates/index.html', "[Errno 18] Invalid cross-device link: '/var/youtubeComunePalermo/processing/./template/index.html' -> '/tmp/tmpcqv_1i5d/templates/index.html'")] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/aborruso/.local/bin/datasette", line 8, in <module> sys.exit(cli()) File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 829, in call return self.main(args, kwargs) File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, ctx.params) File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 610, in invoke return callback(args, **kwargs) File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/publish/heroku.py", line 103, in heroku extra_metadata, File "/usr/lib/python3.7/contextlib.py", line 112, in enter return next(self.gen) File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/publish/heroku.py", line 191, in temporary_heroku_directory os.path.join(tmp.name, "templates"), File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/utils/init.py", line 609, in link_or_copy_directory shutil.copytree(src, dst) File "/usr/lib/python3.7/shutil.py", line 321, in copytree os.makedirs(dst) File "/usr/lib/python3.7/os.py", line 221, in makedirs mkdir(name, mode) FileExistsError: [Errno 17] File exists: '/tmp/tmpcqv_1i5d/templates' ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
620972158 | https://github.com/simonw/datasette/issues/745#issuecomment-620972158 | https://api.github.com/repos/simonw/datasette/issues/745 | MDEyOklzc3VlQ29tbWVudDYyMDk3MjE1OA== | simonw 9599 | 2020-04-29T03:35:25Z | 2020-04-29T03:35:25Z | OWNER | Relevant documentation: https://datasette.readthedocs.io/en/stable/performance.html#hashed-url-mode |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extract the hash-URL mechanism out into a plugin 608613033 | |
620971526 | https://github.com/simonw/datasette/issues/744#issuecomment-620971526 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMDk3MTUyNg== | simonw 9599 | 2020-04-29T03:32:14Z | 2020-04-29T03:32:14Z | OWNER | @aborruso I think I have a branch with a fix - could you try it out? Install the new branch like this:
If this fixes your bug I'll merge that pull request! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
620970547 | https://github.com/simonw/datasette/issues/141#issuecomment-620970547 | https://api.github.com/repos/simonw/datasette/issues/141 | MDEyOklzc3VlQ29tbWVudDYyMDk3MDU0Nw== | simonw 9599 | 2020-04-29T03:27:37Z | 2020-04-29T03:27:54Z | OWNER | This bug raised its head again in #744 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish can fail if /tmp is on a different device 275814941 | |
620970475 | https://github.com/simonw/datasette/issues/744#issuecomment-620970475 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMDk3MDQ3NQ== | simonw 9599 | 2020-04-29T03:27:20Z | 2020-04-29T03:27:20Z | OWNER | This exception handling was introduced in #141 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
620970159 | https://github.com/simonw/datasette/issues/744#issuecomment-620970159 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMDk3MDE1OQ== | simonw 9599 | 2020-04-29T03:25:45Z | 2020-04-29T03:25:45Z | OWNER | https://docs.python.org/3/library/shutil.html#shutil.copytree says that I don't have an environment that can replicate this bug. @aborruso I'm going to ship a fix in a branch that you can test against. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
620969639 | https://github.com/simonw/datasette/issues/744#issuecomment-620969639 | https://api.github.com/repos/simonw/datasette/issues/744 | MDEyOklzc3VlQ29tbWVudDYyMDk2OTYzOQ== | simonw 9599 | 2020-04-29T03:23:31Z | 2020-04-29T03:23:31Z | OWNER | Is it possible that your Here's the code in question: https://github.com/simonw/datasette/blob/89c4ddd4828623888e91a1d2cb396cba12d4e7b4/datasette/utils/init.py#L595-L609 It looks to me like we were expecting an |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
link_or_copy_directory() error - Invalid cross-device link 608058890 | |
620841496 | https://github.com/simonw/datasette/issues/633#issuecomment-620841496 | https://api.github.com/repos/simonw/datasette/issues/633 | MDEyOklzc3VlQ29tbWVudDYyMDg0MTQ5Ng== | nryberg 46165 | 2020-04-28T20:37:50Z | 2020-04-28T20:37:50Z | NONE | Using the Heroku web interface, you can set the WEB_CONCURRENCY = 1 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Publish to Heroku is broken: "WARNING: You must pass the application as an import string to enable 'reload' or 'workers" 522334771 | |
620774507 | https://github.com/dogsheep/dogsheep-photos/issues/14#issuecomment-620774507 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/14 | MDEyOklzc3VlQ29tbWVudDYyMDc3NDUwNw== | simonw 9599 | 2020-04-28T18:19:06Z | 2020-04-28T18:19:06Z | MEMBER | The default timeout is a bit aggressive and sometimes failed for me if my resizing proxy took too long to fetch and resize the image.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Annotate photos using the Google Cloud Vision API 608512747 | |
620771067 | https://github.com/dogsheep/dogsheep-photos/issues/14#issuecomment-620771067 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/14 | MDEyOklzc3VlQ29tbWVudDYyMDc3MTA2Nw== | simonw 9599 | 2020-04-28T18:12:34Z | 2020-04-28T18:15:38Z | MEMBER | Python library docs: https://googleapis.dev/python/vision/latest/index.html I'm creating a new project for this called simonwillison-photos: https://console.cloud.google.com/projectcreate https://console.cloud.google.com/home/dashboard?project=simonwillison-photos Then I enabled the Vision API. The direct link to https://console.cloud.google.com/flows/enableapi?apiid=vision-json.googleapis.com which they provided in the docs didn't work - it gave me a "You don't have sufficient permissions to use the requested API" error - but starting at the "Enable APIs" page and searching for it worked fine. I created a new service account as an "owner" of that project: https://console.cloud.google.com/apis/credentials/serviceaccountkey (and complained about it on Twitter and through their feedback form)
```python from google.cloud import vision client = vision.ImageAnnotatorClient.from_service_account_file("simonwillison-photos-18c570b301fe.json") Photo of a lemurresponse = client.annotate_image(
{
"image": {
"source": {
"image_uri": "https://photos.simonwillison.net/i/1b3414ee9ade67ce04ade9042e6d4b433d1e523c9a16af17f490e2c0a619755b.jpeg"
}
},
"features": [
{"type": vision.enums.Feature.Type.IMAGE_PROPERTIES},
{"type": vision.enums.Feature.Type.OBJECT_LOCALIZATION},
{"type": vision.enums.Feature.Type.LABEL_DETECTION},
],
}
)
response
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Annotate photos using the Google Cloud Vision API 608512747 | |
620772190 | https://github.com/dogsheep/dogsheep-photos/issues/14#issuecomment-620772190 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/14 | MDEyOklzc3VlQ29tbWVudDYyMDc3MjE5MA== | simonw 9599 | 2020-04-28T18:14:43Z | 2020-04-28T18:14:43Z | MEMBER | Database schema for this will require some thought. Just dumping the output into a JSON column isn't going to be flexible enough - I want to be able to FTS against labels and OCR text, and potentially query against other characteristics too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Annotate photos using the Google Cloud Vision API 608512747 | |
620771698 | https://github.com/dogsheep/dogsheep-photos/issues/14#issuecomment-620771698 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/14 | MDEyOklzc3VlQ29tbWVudDYyMDc3MTY5OA== | simonw 9599 | 2020-04-28T18:13:48Z | 2020-04-28T18:13:48Z | MEMBER | For face detection:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Annotate photos using the Google Cloud Vision API 608512747 | |
620769348 | https://github.com/dogsheep/dogsheep-photos/issues/14#issuecomment-620769348 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/14 | MDEyOklzc3VlQ29tbWVudDYyMDc2OTM0OA== | simonw 9599 | 2020-04-28T18:09:21Z | 2020-04-28T18:09:21Z | MEMBER | Pricing is pretty good: free for first 1,000 calls per month, then $1.50 per thousand after that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Annotate photos using the Google Cloud Vision API 608512747 | |
620401443 | https://github.com/simonw/datasette/issues/735#issuecomment-620401443 | https://api.github.com/repos/simonw/datasette/issues/735 | MDEyOklzc3VlQ29tbWVudDYyMDQwMTQ0Mw== | aborruso 30607 | 2020-04-28T06:10:20Z | 2020-04-28T06:10:20Z | NONE | It works in heroku, than might be a bug with datasette-publish-now. Thank you |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Error when I click on "View and edit SQL" 605806386 | |
620401172 | https://github.com/simonw/datasette/issues/736#issuecomment-620401172 | https://api.github.com/repos/simonw/datasette/issues/736 | MDEyOklzc3VlQ29tbWVudDYyMDQwMTE3Mg== | aborruso 30607 | 2020-04-28T06:09:28Z | 2020-04-28T06:09:28Z | NONE |
It works in heroku, than might be a bug with datasette-publish-now. Thank you |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
strange behavior using accented characters 606720674 | |
620309185 | https://github.com/dogsheep/dogsheep-photos/issues/13#issuecomment-620309185 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/13 | MDEyOklzc3VlQ29tbWVudDYyMDMwOTE4NQ== | simonw 9599 | 2020-04-28T00:39:45Z | 2020-04-28T00:39:45Z | MEMBER | I'm going to leave this until I have the mechanism for associating a live photo video with the photo. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Also upload movie files 607888367 | |
620273692 | https://github.com/dogsheep/dogsheep-photos/issues/13#issuecomment-620273692 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/13 | MDEyOklzc3VlQ29tbWVudDYyMDI3MzY5Mg== | simonw 9599 | 2020-04-27T22:42:50Z | 2020-04-27T22:42:50Z | MEMBER | ```
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Also upload movie files 607888367 | |
620260658 | https://github.com/simonw/datasette/issues/726#issuecomment-620260658 | https://api.github.com/repos/simonw/datasette/issues/726 | MDEyOklzc3VlQ29tbWVudDYyMDI2MDY1OA== | simonw 9599 | 2020-04-27T22:05:46Z | 2020-04-27T22:05:46Z | OWNER | Aah - yes I've seen this a few times before in my own projects. The problem is that the column types don't match up - your
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Foreign key : case of a link to the associated row not displayed 600120439 | |
620177365 | https://github.com/simonw/datasette/issues/743#issuecomment-620177365 | https://api.github.com/repos/simonw/datasette/issues/743 | MDEyOklzc3VlQ29tbWVudDYyMDE3NzM2NQ== | simonw 9599 | 2020-04-27T19:11:01Z | 2020-04-27T19:11:30Z | OWNER | Huh... turns out the documentation already claims that wildcards work! Closing this as wontfix: https://datasette.readthedocs.io/en/stable/full_text_search.html#the-table-view-api |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
escape_fts() does not correctly escape * wildcards 607770595 | |
620174977 | https://github.com/simonw/datasette/issues/743#issuecomment-620174977 | https://api.github.com/repos/simonw/datasette/issues/743 | MDEyOklzc3VlQ29tbWVudDYyMDE3NDk3Nw== | simonw 9599 | 2020-04-27T19:05:56Z | 2020-04-27T19:05:56Z | OWNER | The other option would be to leave this as-is, and let people wildcard search all they want. I'm leaning in that direction. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
escape_fts() does not correctly escape * wildcards 607770595 | |
620172085 | https://github.com/simonw/datasette/issues/735#issuecomment-620172085 | https://api.github.com/repos/simonw/datasette/issues/735 | MDEyOklzc3VlQ29tbWVudDYyMDE3MjA4NQ== | simonw 9599 | 2020-04-27T19:00:30Z | 2020-04-27T19:00:30Z | OWNER | I think this may be a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Error when I click on "View and edit SQL" 605806386 | |
620171785 | https://github.com/simonw/datasette/issues/736#issuecomment-620171785 | https://api.github.com/repos/simonw/datasette/issues/736 | MDEyOklzc3VlQ29tbWVudDYyMDE3MTc4NQ== | simonw 9599 | 2020-04-27T18:59:54Z | 2020-04-27T18:59:54Z | OWNER | Would you mind trying publishing your database using one of the other options - Heroku, Cloud Run or https://fly.io/ - and see if you have the same bug there? If you DO get the same bug with another option, please re-open this issue. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
strange behavior using accented characters 606720674 | |
620171434 | https://github.com/simonw/datasette/issues/736#issuecomment-620171434 | https://api.github.com/repos/simonw/datasette/issues/736 | MDEyOklzc3VlQ29tbWVudDYyMDE3MTQzNA== | simonw 9599 | 2020-04-27T18:59:16Z | 2020-04-27T18:59:16Z | OWNER | I'm suspicious that this might be a bug with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
strange behavior using accented characters 606720674 | |
620170826 | https://github.com/simonw/datasette/issues/743#issuecomment-620170826 | https://api.github.com/repos/simonw/datasette/issues/743 | MDEyOklzc3VlQ29tbWVudDYyMDE3MDgyNg== | simonw 9599 | 2020-04-27T18:58:04Z | 2020-04-27T18:58:04Z | OWNER | Maybe this is moot because you can't store a Best source of information I could find was this tiny thread from 2014 about FTS4: http://sqlite.1065341.n5.nabble.com/Escaping-conventions-for-FTS4-virtual-table-queries-td74589.html
I could investigate further by learning to use the fts5vocab virtual table debugging tool to see what's actually stored in those FTS5 indexes and check if https://www.sqlite.org/fts5.html#the_fts5vocab_virtual_table_module |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
escape_fts() does not correctly escape * wildcards 607770595 | |
620166959 | https://github.com/simonw/datasette/issues/743#issuecomment-620166959 | https://api.github.com/repos/simonw/datasette/issues/743 | MDEyOklzc3VlQ29tbWVudDYyMDE2Njk1OQ== | simonw 9599 | 2020-04-27T18:50:30Z | 2020-04-27T18:50:30Z | OWNER | Here's the https://latest.datasette.io/fixtures?sql=select+escape_fts%28%27bar%2A%27%29 So apparently wrapping a SQLite FTS word like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
escape_fts() does not correctly escape * wildcards 607770595 | |
620153909 | https://github.com/simonw/datasette/issues/742#issuecomment-620153909 | https://api.github.com/repos/simonw/datasette/issues/742 | MDEyOklzc3VlQ29tbWVudDYyMDE1MzkwOQ== | simonw 9599 | 2020-04-27T18:24:53Z | 2020-04-27T18:24:53Z | OWNER | I'm already using it extensively: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Speed up tests with scope="session"? 607243940 | |
620095649 | https://github.com/simonw/datasette/issues/731#issuecomment-620095649 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYyMDA5NTY0OQ== | simonw 9599 | 2020-04-27T16:32:44Z | 2020-04-27T16:32:44Z | OWNER | { "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | ||
619708914 | https://github.com/simonw/datasette/issues/741#issuecomment-619708914 | https://api.github.com/repos/simonw/datasette/issues/741 | MDEyOklzc3VlQ29tbWVudDYxOTcwODkxNA== | simonw 9599 | 2020-04-27T04:30:02Z | 2020-04-27T04:30:24Z | OWNER | This can generate a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Replace "datasette publish --extra-options" with "--setting" 607223136 | |
619708745 | https://github.com/simonw/datasette/issues/741#issuecomment-619708745 | https://api.github.com/repos/simonw/datasette/issues/741 | MDEyOklzc3VlQ29tbWVudDYxOTcwODc0NQ== | simonw 9599 | 2020-04-27T04:29:26Z | 2020-04-27T04:29:26Z | OWNER | I can show deprecation warnings for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Replace "datasette publish --extra-options" with "--setting" 607223136 | |
619700113 | https://github.com/simonw/datasette/pull/739#issuecomment-619700113 | https://api.github.com/repos/simonw/datasette/issues/739 | MDEyOklzc3VlQ29tbWVudDYxOTcwMDExMw== | simonw 9599 | 2020-04-27T03:58:09Z | 2020-04-27T03:58:09Z | OWNER | I think documentation goes on https://datasette.readthedocs.io/en/stable/config.html - but I'm going to need to re-arrange that page to fit in a section about configuration directories. I'll move the existing list of settings into a "configration options" section. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Configuration directory mode 607107849 | |
619698467 | https://github.com/simonw/datasette/issues/740#issuecomment-619698467 | https://api.github.com/repos/simonw/datasette/issues/740 | MDEyOklzc3VlQ29tbWVudDYxOTY5ODQ2Nw== | simonw 9599 | 2020-04-27T03:51:27Z | 2020-04-27T03:51:27Z | OWNER | Spotted this while working on #731 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Don't throw 500 error on attempted directory browse 607211058 | |
619678614 | https://github.com/simonw/datasette/pull/739#issuecomment-619678614 | https://api.github.com/repos/simonw/datasette/issues/739 | MDEyOklzc3VlQ29tbWVudDYxOTY3ODYxNA== | simonw 9599 | 2020-04-27T02:44:21Z | 2020-04-27T02:44:21Z | OWNER | I'm going to add a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Configuration directory mode 607107849 | |
619622311 | https://github.com/simonw/datasette/pull/739#issuecomment-619622311 | https://api.github.com/repos/simonw/datasette/issues/739 | MDEyOklzc3VlQ29tbWVudDYxOTYyMjMxMQ== | simonw 9599 | 2020-04-26T20:45:07Z | 2020-04-26T20:45:07Z | OWNER | I think ALL explicit options should over-ride options that were detected in the directory structure. This means my current implementation isn't quite right - using a class method makes it hard to merge the details with the explicit options passed to the CLI function. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Configuration directory mode 607107849 | |
619621388 | https://github.com/simonw/datasette/issues/731#issuecomment-619621388 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxOTYyMTM4OA== | simonw 9599 | 2020-04-26T20:38:09Z | 2020-04-26T20:38:30Z | OWNER | Work now happening in the pull request: https://github.com/simonw/datasette/issues/739 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
619612675 | https://github.com/simonw/datasette/issues/648#issuecomment-619612675 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxOTYxMjY3NQ== | simonw 9599 | 2020-04-26T19:35:09Z | 2020-04-26T19:35:09Z | OWNER | https://www.niche-museums.com/about now uses this mechanism. It used to be an empty |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | |
619611417 | https://github.com/simonw/datasette/issues/731#issuecomment-619611417 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxOTYxMTQxNw== | simonw 9599 | 2020-04-26T19:28:12Z | 2020-04-26T19:28:12Z | OWNER | I've shipped #648 now, so no reason not to go with the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
619605811 | https://github.com/simonw/datasette/issues/738#issuecomment-619605811 | https://api.github.com/repos/simonw/datasette/issues/738 | MDEyOklzc3VlQ29tbWVudDYxOTYwNTgxMQ== | simonw 9599 | 2020-04-26T18:58:56Z | 2020-04-26T18:58:56Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Pass a request object to custom page templates 607086780 | ||
619604720 | https://github.com/simonw/datasette/issues/648#issuecomment-619604720 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxOTYwNDcyMA== | simonw 9599 | 2020-04-26T18:50:30Z | 2020-04-26T18:50:30Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | ||
619599904 | https://github.com/simonw/datasette/pull/737#issuecomment-619599904 | https://api.github.com/repos/simonw/datasette/issues/737 | MDEyOklzc3VlQ29tbWVudDYxOTU5OTkwNA== | simonw 9599 | 2020-04-26T18:21:06Z | 2020-04-26T18:21:06Z | OWNER | Just needs documentation now. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Custom pages mechanism, refs #648 607067303 | |
619593899 | https://github.com/simonw/datasette/pull/737#issuecomment-619593899 | https://api.github.com/repos/simonw/datasette/issues/737 | MDEyOklzc3VlQ29tbWVudDYxOTU5Mzg5OQ== | simonw 9599 | 2020-04-26T17:49:06Z | 2020-04-26T17:49:06Z | OWNER | I'm going with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Custom pages mechanism, refs #648 607067303 | |
619593811 | https://github.com/simonw/datasette/pull/737#issuecomment-619593811 | https://api.github.com/repos/simonw/datasette/issues/737 | MDEyOklzc3VlQ29tbWVudDYxOTU5MzgxMQ== | simonw 9599 | 2020-04-26T17:48:31Z | 2020-04-26T17:48:31Z | OWNER | Design challenge: the function that can be called in the custom template to return a custom status code and/or headers. Proposed design:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Custom pages mechanism, refs #648 607067303 | |
619591533 | https://github.com/simonw/datasette/pull/737#issuecomment-619591533 | https://api.github.com/repos/simonw/datasette/issues/737 | MDEyOklzc3VlQ29tbWVudDYxOTU5MTUzMw== | simonw 9599 | 2020-04-26T17:33:48Z | 2020-04-26T17:33:48Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Custom pages mechanism, refs #648 607067303 | |
619591380 | https://github.com/simonw/datasette/issues/648#issuecomment-619591380 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxOTU5MTM4MA== | simonw 9599 | 2020-04-26T17:33:04Z | 2020-04-26T17:33:04Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | |
619489720 | https://github.com/simonw/datasette/pull/725#issuecomment-619489720 | https://api.github.com/repos/simonw/datasette/issues/725 | MDEyOklzc3VlQ29tbWVudDYxOTQ4OTcyMA== | stonebig 4312421 | 2020-04-26T06:09:59Z | 2020-04-26T06:10:13Z | NONE | as a complementary remark: the versioning of datasette dependancies will become a problem when the new pip "dependancy resolver" will be activated. for now, it's just warnings via pip checks, later it will be a "no":
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update aiofiles requirement from ~=0.4.0 to >=0.4,<0.6 598891570 | |
619263600 | https://github.com/simonw/datasette/issues/648#issuecomment-619263600 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxOTI2MzYwMA== | simonw 9599 | 2020-04-24T22:23:13Z | 2020-04-24T22:23:13Z | OWNER | Idea: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | |
619259859 | https://github.com/simonw/datasette/issues/648#issuecomment-619259859 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxOTI1OTg1OQ== | simonw 9599 | 2020-04-24T22:10:34Z | 2020-04-24T22:10:34Z | OWNER | The trickiest part here is the 404 logic. It's spread out through a couple of places right now. It's in Then also in the `DatasetteRouter subclass of that: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | |
618796564 | https://github.com/dogsheep/dogsheep-photos/issues/12#issuecomment-618796564 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/12 | MDEyOklzc3VlQ29tbWVudDYxODc5NjU2NA== | simonw 9599 | 2020-04-24T04:35:25Z | 2020-04-24T04:35:25Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
If less than 500MB, show size in MB not GB 606033104 | ||
618775631 | https://github.com/simonw/datasette/issues/648#issuecomment-618775631 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxODc3NTYzMQ== | simonw 9599 | 2020-04-24T03:03:35Z | 2020-04-24T03:03:35Z | OWNER |
I think I could do that with a custom template function - if that function is called during the render then we follow those instructions instead of returning the rendered HTML. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | |
618775028 | https://github.com/simonw/datasette/issues/648#issuecomment-618775028 | https://api.github.com/repos/simonw/datasette/issues/648 | MDEyOklzc3VlQ29tbWVudDYxODc3NTAyOA== | simonw 9599 | 2020-04-24T03:01:32Z | 2020-04-24T03:01:32Z | OWNER | Now that I've closed #577 this should be pretty easy to implement. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for adding arbitrary pages like /about 534492501 | |
618772317 | https://github.com/simonw/datasette/issues/731#issuecomment-618772317 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODc3MjMxNw== | simonw 9599 | 2020-04-24T02:49:46Z | 2020-04-24T02:49:46Z | OWNER | Yeah I'll do that. My original thinking on allowing the But I've proposed a better solution for that here: #648 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
618758326 | https://github.com/simonw/datasette/issues/731#issuecomment-618758326 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODc1ODMyNg== | eyeseast 25778 | 2020-04-24T01:55:00Z | 2020-04-24T01:55:00Z | CONTRIBUTOR | Mounting |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
618725155 | https://github.com/dogsheep/dogsheep-photos/issues/9#issuecomment-618725155 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/9 | MDEyOklzc3VlQ29tbWVudDYxODcyNTE1NQ== | simonw 9599 | 2020-04-23T23:39:14Z | 2020-04-23T23:39:14Z | MEMBER | A few minutes later...
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
upload command should be resumable, should only upload photos not already uploaded 605938063 | |
618724149 | https://github.com/dogsheep/dogsheep-photos/issues/9#issuecomment-618724149 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/9 | MDEyOklzc3VlQ29tbWVudDYxODcyNDE0OQ== | simonw 9599 | 2020-04-23T23:35:29Z | 2020-04-23T23:35:29Z | MEMBER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
upload command should be resumable, should only upload photos not already uploaded 605938063 | |
618155472 | https://github.com/simonw/datasette/issues/731#issuecomment-618155472 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODE1NTQ3Mg== | simonw 9599 | 2020-04-23T03:28:42Z | 2020-04-23T03:28:56Z | OWNER | As an alternative to
Which would be automatically mounted at Or maybe just mount |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
618126449 | https://github.com/simonw/datasette/issues/731#issuecomment-618126449 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODEyNjQ0OQ== | eyeseast 25778 | 2020-04-23T01:38:55Z | 2020-04-23T01:38:55Z | CONTRIBUTOR | I've almost suggested this same thing a couple times. I tend to have Makefile (because I'm doing other |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
618100658 | https://github.com/dogsheep/dogsheep-photos/issues/8#issuecomment-618100658 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/8 | MDEyOklzc3VlQ29tbWVudDYxODEwMDY1OA== | simonw 9599 | 2020-04-23T00:03:35Z | 2020-04-23T00:03:35Z | MEMBER | Also MD5 isn't guaranteed for the ETag:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Should I have used MD5 instead of SHA256? 605147638 | |
618100434 | https://github.com/dogsheep/dogsheep-photos/issues/8#issuecomment-618100434 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/8 | MDEyOklzc3VlQ29tbWVudDYxODEwMDQzNA== | simonw 9599 | 2020-04-23T00:02:53Z | 2020-04-23T00:02:53Z | MEMBER | I don't think it matters one way or the other - I'm storing the sha256 in the filename, so the fact that I could read the MD5 back from the list bucket operation doesn't give me any benefits. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Should I have used MD5 instead of SHA256? 605147638 | |
618070791 | https://github.com/simonw/datasette/issues/731#issuecomment-618070791 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODA3MDc5MQ== | simonw 9599 | 2020-04-22T22:21:27Z | 2020-04-22T22:21:27Z | OWNER | I linked to this from https://github.com/zeit/now/discussions/4055 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
618070541 | https://github.com/simonw/datasette/issues/731#issuecomment-618070541 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODA3MDU0MQ== | simonw 9599 | 2020-04-22T22:20:38Z | 2020-04-22T22:20:38Z | OWNER | I started thinking about this while building https://github.com/simonw/datasette-publish-now The Vercel hosting platform is built on ASGI - so I need a way to provide an The plugin currently does that by generating an
This would be a whole lot easier if I could use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to automatically configure based on directory layout 605110015 | |
617491607 | https://github.com/dogsheep/github-to-sqlite/issues/31#issuecomment-617491607 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/31 | MDEyOklzc3VlQ29tbWVudDYxNzQ5MTYwNw== | simonw 9599 | 2020-04-22T01:20:19Z | 2020-04-22T01:20:19Z | MEMBER | https://github-to-sqlite.dogsheep.net/github/milestones now link to repo: And so do issues: https://github-to-sqlite.dogsheep.net/github/issues |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issue and milestone should have foreign key to repo 603624862 | |
617490914 | https://github.com/dogsheep/github-to-sqlite/issues/32#issuecomment-617490914 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/32 | MDEyOklzc3VlQ29tbWVudDYxNzQ5MDkxNA== | simonw 9599 | 2020-04-22T01:17:44Z | 2020-04-22T01:17:44Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issue comments don't appear to populate issues foreign key 604222295 | ||
617369247 | https://github.com/dogsheep/github-to-sqlite/issues/32#issuecomment-617369247 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/32 | MDEyOklzc3VlQ29tbWVudDYxNzM2OTI0Nw== | simonw 9599 | 2020-04-21T19:33:03Z | 2020-04-21T19:33:03Z | MEMBER | Caused by #31. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issue comments don't appear to populate issues foreign key 604222295 | |
617364956 | https://github.com/dogsheep/github-to-sqlite/issues/32#issuecomment-617364956 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/32 | MDEyOklzc3VlQ29tbWVudDYxNzM2NDk1Ng== | simonw 9599 | 2020-04-21T19:24:45Z | 2020-04-21T19:24:45Z | MEMBER | That's because I just broke this code: It expects the I should add a test for this as part of the fix. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issue comments don't appear to populate issues foreign key 604222295 | |
617348174 | https://github.com/dogsheep/github-to-sqlite/issues/31#issuecomment-617348174 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/31 | MDEyOklzc3VlQ29tbWVudDYxNzM0ODE3NA== | simonw 9599 | 2020-04-21T18:50:29Z | 2020-04-21T18:50:29Z | MEMBER | Since this represents a breaking schema change for anyone running SQL queries against these tables, I'm going to do a major version bump to 2.0 when I release this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issue and milestone should have foreign key to repo 603624862 | |
617208503 | https://github.com/simonw/datasette/issues/176#issuecomment-617208503 | https://api.github.com/repos/simonw/datasette/issues/176 | MDEyOklzc3VlQ29tbWVudDYxNzIwODUwMw== | nkirsch 12976 | 2020-04-21T14:16:24Z | 2020-04-21T14:16:24Z | NONE | @eads I'm interested in helping, if there's still a need... |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add GraphQL endpoint 285168503 | |
616884647 | https://github.com/dogsheep/github-to-sqlite/issues/31#issuecomment-616884647 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/31 | MDEyOklzc3VlQ29tbWVudDYxNjg4NDY0Nw== | simonw 9599 | 2020-04-21T00:49:16Z | 2020-04-21T00:50:20Z | MEMBER | The API just gives us the We currently turn that into a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issue and milestone should have foreign key to repo 603624862 | |
616883726 | https://github.com/dogsheep/github-to-sqlite/issues/30#issuecomment-616883726 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/30 | MDEyOklzc3VlQ29tbWVudDYxNjg4MzcyNg== | simonw 9599 | 2020-04-21T00:45:23Z | 2020-04-21T00:45:23Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issues milestone column is the wrong type 603618244 | ||
616883275 | https://github.com/dogsheep/github-to-sqlite/issues/29#issuecomment-616883275 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/29 | MDEyOklzc3VlQ29tbWVudDYxNjg4MzI3NQ== | simonw 9599 | 2020-04-21T00:43:28Z | 2020-04-21T00:43:28Z | MEMBER | I'm copying repo from issue, which surprisingly is a string, not an integer ID. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Milestones should have foreign key to creator and repo 603617013 | |
616879753 | https://github.com/dogsheep/github-to-sqlite/issues/30#issuecomment-616879753 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/30 | MDEyOklzc3VlQ29tbWVudDYxNjg3OTc1Mw== | simonw 9599 | 2020-04-21T00:29:29Z | 2020-04-21T00:29:29Z | MEMBER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Issues milestone column is the wrong type 603618244 | |
616029262 | https://github.com/dogsheep/twitter-to-sqlite/issues/45#issuecomment-616029262 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/45 | MDEyOklzc3VlQ29tbWVudDYxNjAyOTI2Mg== | simonw 9599 | 2020-04-19T04:39:21Z | 2020-04-19T04:39:21Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use raise_for_status() everywhere 602619330 | ||
615993178 | https://github.com/dogsheep/dogsheep-photos/issues/7#issuecomment-615993178 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/7 | MDEyOklzc3VlQ29tbWVudDYxNTk5MzE3OA== | simonw 9599 | 2020-04-19T00:37:08Z | 2020-04-19T00:37:08Z | MEMBER | https://pypi.org/project/ImageHash/ Is one option. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Integrate image content hashing 602585497 | |
615983393 | https://github.com/dogsheep/dogsheep-photos/issues/6#issuecomment-615983393 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/6 | MDEyOklzc3VlQ29tbWVudDYxNTk4MzM5Mw== | simonw 9599 | 2020-04-18T23:53:10Z | 2020-04-18T23:53:10Z | MEMBER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add progress bar to upload command 602575575 | |
615979923 | https://github.com/dogsheep/dogsheep-photos/issues/6#issuecomment-615979923 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/6 | MDEyOklzc3VlQ29tbWVudDYxNTk3OTkyMw== | simonw 9599 | 2020-04-18T23:36:02Z | 2020-04-18T23:36:02Z | MEMBER | I'll use a Click progress bar. To do this I need to first calculate the sum number of bytes in the photos that are going to be uploaded, then run the upload. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add progress bar to upload command 602575575 | |
615957385 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615957385 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk1NzM4NQ== | simonw 9599 | 2020-04-18T21:56:16Z | 2020-04-18T21:58:11Z | MEMBER | Got this working! I'll do EXIF in a separate ticket #3. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615949574 | https://github.com/dogsheep/dogsheep-photos/issues/5#issuecomment-615949574 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/5 | MDEyOklzc3VlQ29tbWVudDYxNTk0OTU3NA== | simonw 9599 | 2020-04-18T21:06:07Z | 2020-04-18T21:06:07Z | MEMBER | ``` $ photos-to-sqlite s3-auth Create S3 credentials and paste them here: Access key ID: xxx Secret access key: yyy $ cat auth.json { "access_key_id": "xxx", "secret_access_key": "yyy" } ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
photos-to-sqlite s3-auth command 602551638 | |
615948102 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615948102 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0ODEwMg== | simonw 9599 | 2020-04-18T20:56:59Z | 2020-04-18T20:56:59Z | MEMBER | I'm going to start with this:
This will scan the provided directory (and all sub-directories) for image files. It will then:
Stretch goal: grab the EXIF data and include that in the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615947370 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615947370 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0NzM3MA== | simonw 9599 | 2020-04-18T20:52:13Z | 2020-04-18T20:52:13Z | MEMBER | This is great! I now have a key that can upload photos, and a separate key that can download photos OR generate signed URLs to access those photos. Next step: a script that starts uploading my photos. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615947229 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615947229 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0NzIyOQ== | simonw 9599 | 2020-04-18T20:51:26Z | 2020-04-18T20:51:26Z | MEMBER | Running the upload again like this resulted in the correct content-type:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615946537 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615946537 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0NjUzNw== | simonw 9599 | 2020-04-18T20:48:13Z | 2020-04-18T20:48:13Z | MEMBER | How about generating a signed URL?
Which does this: ``` ~ $ curl -i 'https://dogsheep-photos-simon.s3.amazonaws.com/this_is_fine.jpg?AWSAccessKeyId=AKIAWXFXAIOZNZ3JFO7I&Signature=x1zrS4w4OTGAACd7yHp9mYqXvN8%3D&Expires=1587243398' HTTP/1.1 307 Temporary Redirect x-amz-bucket-region: us-west-1 x-amz-request-id: E78CD859AEE21D33 x-amz-id-2: 648mx+1+YSGga7NDOU7Q6isfsKnEPWOLC+DI4+x2o9FCc6pSCdIaoHJUbFMI8Vsuh1ADtx46ymU= Location: https://dogsheep-photos-simon.s3-us-west-1.amazonaws.com/this_is_fine.jpg?AWSAccessKeyId=AKIAWXFXAIOZNZ3JFO7I&Signature=x1zrS4w4OTGAACd7yHp9mYqXvN8%3D&Expires=1587243398 Content-Type: application/xml Transfer-Encoding: chunked Date: Sat, 18 Apr 2020 20:47:21 GMT Server: AmazonS3 <Error> ????JFIF??C
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615945056 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615945056 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0NTA1Ng== | simonw 9599 | 2020-04-18T20:42:41Z | 2020-04-18T20:42:41Z | MEMBER | But... |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615944806 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615944806 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0NDgwNg== | simonw 9599 | 2020-04-18T20:41:39Z | 2020-04-18T20:41:39Z | MEMBER | This worked! And this worked: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615942116 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615942116 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0MjExNg== | simonw 9599 | 2020-04-18T20:30:56Z | 2020-04-18T20:30:56Z | MEMBER | Next step: attempt a programmatic upload using the Also attempt a programmatic bucket listing and read using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615941746 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615941746 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTk0MTc0Ng== | simonw 9599 | 2020-04-18T20:29:36Z | 2020-04-18T20:29:36Z | MEMBER | I'm going to create another user just for Transmit, with full S3 access. name: Rather than creating a group for that user, I'm trying the "Attach existing policies directly" option: That user DID work with Transmit. I uploaded a test HEIC image. I used Transmit to copy a signed URL for it.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615936880 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615936880 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTkzNjg4MA== | simonw 9599 | 2020-04-18T20:04:31Z | 2020-04-18T20:04:31Z | MEMBER | Next step: create two IAM users, one for each of those groups. https://console.aws.amazon.com/iam/home#/users$new?step=details I copied the keys into a secure note in 1password. Couldn't get into Transmit with them though! https://library.panic.com/transmit/transmit5/iam-roles/ may help. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615935577 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615935577 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTkzNTU3Nw== | simonw 9599 | 2020-04-18T19:54:59Z | 2020-04-18T19:55:30Z | MEMBER | Creating IAM groups called Now I can attach an "inline policy" to each one. For the read-write group I go here: https://console.aws.amazon.com/iam/home#/groups/dogsheep-photos-simon-read-write Example policies are here: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html For the read-write one I went with:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615933273 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615933273 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTkzMzI3Mw== | simonw 9599 | 2020-04-18T19:37:33Z | 2020-04-18T19:37:33Z | MEMBER | https://console.aws.amazon.com/s3/bucket/create?region=us-west-1 I created it with no public read-write access. I plan to use signed URLs via a transforming proxy to access images for display on the web. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615932204 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615932204 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTkzMjIwNA== | simonw 9599 | 2020-04-18T19:29:22Z | 2020-04-18T19:34:44Z | MEMBER | I'm going to call my bucket |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 | |
615932007 | https://github.com/dogsheep/dogsheep-photos/issues/4#issuecomment-615932007 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/4 | MDEyOklzc3VlQ29tbWVudDYxNTkzMjAwNw== | simonw 9599 | 2020-04-18T19:27:55Z | 2020-04-18T19:27:55Z | MEMBER | Research thread: https://twitter.com/simonw/status/1249049694984011776
https://testdriven.io/blog/storing-django-static-and-media-files-on-amazon-s3/ looks useful |
{ "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upload all my photos to a secure S3 bucket 602533539 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
user >30