{"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638257697", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638257697, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODI1NzY5Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T15:05:07Z", "updated_at": "2020-06-03T15:05:07Z", "author_association": "OWNER", "body": "I'm going to document this, land it and then continue to work on the other pieces - CSRF protection and .json mode - in separate tickets.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638249652", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638249652, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODI0OTY1Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T14:51:29Z", "updated_at": "2020-06-03T14:51:51Z", "author_association": "OWNER", "body": "Consider this one:\r\n```\r\n \"delete_name\": {\r\n \"sql\": \"delete from names where rowid = :rowid\",\r\n \"write\": True,\r\n \"on_success_message\": \"Name deleted\",\r\n },\r\n```\r\nIf the user enters an invalid `rowid` the query will still execute without errors and hence the success message will still be displayed. Can I address this?\r\n\r\nMaybe allow an optional `\"rowcount_expected\": 1` property? And if that count isn't matched treat the query as an error.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638241738", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638241738, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODI0MTczOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T14:38:45Z", "updated_at": "2020-06-03T14:38:45Z", "author_association": "OWNER", "body": "Violating a unique constraint will throw an error.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638241366", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638241366, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODI0MTM2Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T14:38:03Z", "updated_at": "2020-06-03T14:38:31Z", "author_association": "OWNER", "body": "Maybe I need some kind of optional validation mechanism? SQLite lets me insert text or floating point numbers into integer columns right now, which feels wrong.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638240919", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638240919, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODI0MDkxOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T14:37:22Z", "updated_at": "2020-06-03T14:37:22Z", "author_association": "OWNER", "body": "I'm having trouble coming up with a canned SQL query that will only error with certain parameters, which I need in order to test out the `on_error_redirect` and `on_error_message` properties.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638238144", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638238144, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODIzODE0NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T14:32:54Z", "updated_at": "2020-06-03T14:33:11Z", "author_association": "OWNER", "body": "I'm going to have `on_success_redirect` and `on_error_redirect` properties for specifying where the redirect should go too.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638188196", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638188196, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODE4ODE5Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T13:13:27Z", "updated_at": "2020-06-03T14:32:27Z", "author_association": "OWNER", "body": "\"Query executed\" is the default message, but it's pretty bland:\r\n\r\n\"data__insert_into_names__name__values___name_\"\r\n\r\nHow about letting queries define custom success messages in their metadata configuration?\r\n\r\n`\"on_success_message\"` and `\"on_error_message\"`\r\n\r\nHow can the system tell if an \"update\" query was actually successful? Maybe I should expose `.rowcount` somehow, so I can report back on how many rows were updated.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638206851", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638206851, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODIwNjg1MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T13:44:29Z", "updated_at": "2020-06-03T13:44:29Z", "author_association": "OWNER", "body": "Default message is now \"Query executed, 1 row affected\" as of https://github.com/simonw/datasette/pull/796/commits/f45c44ac8f3a9a2182d76c6bda44a06676499e4b", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/796#issuecomment-638205923", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/796", "id": 638205923, "node_id": "MDEyOklzc3VlQ29tbWVudDYzODIwNTkyMw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-06-03T13:43:12Z", "updated_at": "2020-06-03T13:43:12Z", "author_association": "OWNER", "body": "For `.json` mode (when the URL has a `.json` suffix) I'm going to handle both form-encoded and JSON encoded inputs and return a 200 status code with JSON that tells you if the query executed successfully and how many rows were affected.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 629595228, "label": "New WIP writable canned queries"}, "performed_via_github_app": null}