issue_comments
22 rows where issue = 1421544654
This data as json, CSV (advanced)
Suggested facets: user, author_association, created_at (date), updated_at (date)
id ▼ | html_url | issue_url | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1289712350 | https://github.com/simonw/datasette/issues/1851#issuecomment-1289712350 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M33Le | simonw 9599 | 2022-10-24T22:28:39Z | 2022-10-27T23:18:48Z | OWNER | API design: (**UPDATE: this was [later changed to POST /db/table/-/insert](https://github.com/simonw/datasette/issues/1851#issuecomment-1294224185)) ``` POST /db/table Authorization: Bearer xxx Content-Type: application/json { "row": { "id": 1, "name": "New record" } } ``` Returns: ``` 201 Created { "row": { "id": 1, "name": "New record" } } ``` You can omit optional fields in the input, including the ID field. The returned object will always include all fields - and will even include `rowid` if your object doesn't have a primary key of its own. I decided to use `"row"` as the key in both request and response, to preserve space for other future keys - one that tells you that the table has been created, for example. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1289713513 | https://github.com/simonw/datasette/issues/1851#issuecomment-1289713513 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M33dp | simonw 9599 | 2022-10-24T22:29:58Z | 2022-10-24T22:30:15Z | OWNER | Interesting open question: how should validation errors (if any) be returned? The two forms of validation I can think of at first are: - Missing keys which are marked as `not null` in the schema - Keys that do not match to existing columns (if you didn't pass `"alter": true`, an option I am considering) | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1289752130 | https://github.com/simonw/datasette/issues/1851#issuecomment-1289752130 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M4A5C | ocdtrekkie 4399499 | 2022-10-24T23:07:30Z | 2022-10-24T23:07:30Z | NONE | How are you tying the bearer token to identity? I'm excited to see this feature, and since Sandstorm controls API access using the same header, it also will transparently support the API documentation here, but we strip the bearer before the request reaches the app (replacing it with our existing auth headers, of course). | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1289865317 | https://github.com/simonw/datasette/issues/1851#issuecomment-1289865317 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M4chl | simonw 9599 | 2022-10-25T01:42:47Z | 2022-10-25T01:42:47Z | OWNER | This is going to tie into Datasette's existing permissions mechanism, so plugins will be able to define their own custom mechanisms for tokens to be attached to a specific identity: https://docs.datasette.io/en/stable/authentication.html There's only one plugin for API tokens at the moment, which is this one: https://datasette.io/plugins/datasette-auth-tokens I'm actually planning on adding another, default token mechanism to Datasette itself as part of this work: - #1852 It may well be that `datasette-sandstorm-support` needs to add something custom here too. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1290615599 | https://github.com/simonw/datasette/issues/1851#issuecomment-1290615599 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M7Tsv | eyeseast 25778 | 2022-10-25T14:05:12Z | 2022-10-25T14:05:12Z | CONTRIBUTOR | This could use a new plugin hook, too. I don't want to complicate your life too much, but for things like GIS, I'd want a way to turn regular JSON into SpatiaLite geometries or combine X/Y coordinates into point geometries and such. Happy to help however I can. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1291226367 | https://github.com/simonw/datasette/issues/1851#issuecomment-1291226367 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M9oz_ | simonw 9599 | 2022-10-25T22:58:30Z | 2022-10-25T22:58:30Z | OWNER | The `datasette insert` concept included plugin support, with the idea of being able to support things like SpatiaLite files: - #1160 I think this API mechanism is going to be a bit less exciting than that - it will be low-level for inserting rows, and if you want to do something fancier you can use a canned query that feeds incoming GeoJSON to a SpatiaLite function instead. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1291228502 | https://github.com/simonw/datasette/issues/1851#issuecomment-1291228502 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5M9pVW | eyeseast 25778 | 2022-10-25T23:02:10Z | 2022-10-25T23:02:10Z | CONTRIBUTOR | That's reasonable. Canned queries and custom endpoints are certainly going to give more room for specific needs. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292519956 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292519956 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NCkoU | asg017 15178711 | 2022-10-26T19:20:33Z | 2022-10-26T19:20:33Z | CONTRIBUTOR | > This could use a new plugin hook, too. I don't want to complicate your life too much, but for things like GIS, I'd want a way to turn regular JSON into SpatiaLite geometries or combine X/Y coordinates into point geometries and such. Happy to help however I can. @eyeseast Maybe you could do this with triggers? Like you can insert JSON-friendly data into a "raw" table, and create a trigger that transforms that inserted data into the proper table Here's an example: ```sql -- meant to be updated from a Datasette insert create table points_raw(longitude int, latitude int); -- the target table with proper spatliate geometries create table points(point geometry); CREATE TRIGGER insert_points_raw INSERT ON points_raw BEGIN insert into points(point) values (makepoint(new.longitude, new.latitude)) END; ``` You could then POST a new row to `points_raw` like this: ``` POST /db/points_raw Authorization: Bearer xxx Content-Type: application/json { "row": { "longitude": 27.64356, "latitude": -47.29384 } } ``` Then SQLite with run the trigger and insert a new row in `points` with the correct geometry point. Downside is you'd have duplicated data with `points_raw`, but maybe it could be a `TEMP` table (or have a cron that deletes all rows from that table every so often?) | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292544296 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292544296 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NCqko | simonw 9599 | 2022-10-26T19:33:34Z | 2022-10-26T19:33:34Z | OWNER | That trigger solution is pretty neat! | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292592210 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292592210 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NC2RS | eyeseast 25778 | 2022-10-26T20:03:46Z | 2022-10-26T20:03:46Z | CONTRIBUTOR | Yeah, every time I see something cool done with triggers, I remember that I need to start using triggers. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292939146 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292939146 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NEK-K | simonw 9599 | 2022-10-27T04:00:17Z | 2022-10-27T04:23:15Z | OWNER | Documentation for this first draft of the API: https://docs.datasette.io/en/1.0-dev/json_api.html#inserting-a-single-row It currently returns errors as HTML - it needs to return errors as JSON. Also the errors need comprehensive test coverage. I'm also worried about what happens if you use it on a table that doesn't use an integer primary key - need to check that. I think this code may break: https://github.com/simonw/datasette/blob/51c436fed29205721dcf17fa31d7e7090d34ebb8/datasette/views/table.py#L155-L171 Plus will `rowid` tables without an explicit primary key return the `rowid` column? They should. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292951833 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292951833 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NEOEZ | simonw 9599 | 2022-10-27T04:23:40Z | 2022-10-27T04:23:40Z | OWNER | Also need to think about transactions - it should use them! | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292952121 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292952121 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NEOI5 | simonw 9599 | 2022-10-27T04:24:09Z | 2022-10-27T04:24:20Z | OWNER | And come up with a whole bunch of tests for weird table shapes, surprising column names, different types etc. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292996181 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292996181 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NEY5V | simonw 9599 | 2022-10-27T04:51:47Z | 2022-10-27T04:51:47Z | OWNER | Also need a test for invalid JSON (currently triggers a 500 HTML error). | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292997608 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292997608 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NEZPo | simonw 9599 | 2022-10-27T04:54:53Z | 2022-10-27T19:05:50Z | OWNER | I'm going to change the design of this to: ``` { "insert": { "title" :"..." } } ``` Renaming `"row"` to `"insert"`. This will be consistent with adding `"drop": true` for dropping a table, and maybe other verbs like for modifying the schema. The API response will look like this: ```json { "inserted_row": { "id": 1, "title": "..." } } ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1292999579 | https://github.com/simonw/datasette/issues/1851#issuecomment-1292999579 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NEZub | simonw 9599 | 2022-10-27T04:59:06Z | 2022-10-27T04:59:12Z | OWNER | I should probably refactor this to use `sqlite-utils`, since I'm going to want to use that later for the feature that automatically creates tables. Might make it easier to solve the rowid issues too. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1293996735 | https://github.com/simonw/datasette/issues/1851#issuecomment-1293996735 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NINK_ | simonw 9599 | 2022-10-27T19:54:53Z | 2022-10-27T19:54:53Z | OWNER | Updated docs: https://docs.datasette.io/en/1.0-dev/json_api.html#inserting-a-single-row <img width="867" alt="image" src="https://user-images.githubusercontent.com/9599/198385667-e4cf9930-0621-49d7-9fed-347aa96b7581.png"> | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1294009354 | https://github.com/simonw/datasette/issues/1851#issuecomment-1294009354 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NIQQK | simonw 9599 | 2022-10-27T20:07:42Z | 2022-10-27T20:07:42Z | OWNER | Need to implement the new URL design from: - #1868 This is now going to be `/db/table/-/insert` - and it will eventually handle bulk inserts as well as single inserts. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1294012084 | https://github.com/simonw/datasette/issues/1851#issuecomment-1294012084 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NIQ60 | simonw 9599 | 2022-10-27T20:10:47Z | 2022-10-27T20:10:47Z | OWNER | I'm going to change the incoming JSON back to `{"row": {...}}` - no need to POST `{"insert": ...}` to something with `/-/insert` in the URL already. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1294012583 | https://github.com/simonw/datasette/issues/1851#issuecomment-1294012583 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NIRCn | simonw 9599 | 2022-10-27T20:11:22Z | 2022-10-27T20:11:22Z | OWNER | And the response to `"inserted": [{...}]` - it will be the same for bulk inserts. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1294224185 | https://github.com/simonw/datasette/issues/1851#issuecomment-1294224185 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NJEs5 | simonw 9599 | 2022-10-27T23:18:24Z | 2022-11-03T23:26:05Z | OWNER | So new API design is: ``` POST /db/table/-/insert Authorization: Bearer xxx Content-Type: application/json { "row": { "id": 1, "name": "New record" } } ``` Returns: ``` 201 Created { "row": [{ "id": 1, "name": "New record" }] } ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 | |
1294281451 | https://github.com/simonw/datasette/issues/1851#issuecomment-1294281451 | https://api.github.com/repos/simonw/datasette/issues/1851 | IC_kwDOBm6k_c5NJSrr | simonw 9599 | 2022-10-28T00:59:25Z | 2022-10-28T00:59:25Z | OWNER | I'm going to use this endpoint for bulk inserts too, so I'm closing this issue and continuing the work here: - #1866 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API to insert a single record into an existing table 1421544654 |
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]);