html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app
https://github.com/simonw/datasette/issues/1863#issuecomment-1320563197,https://api.github.com/repos/simonw/datasette/issues/1863,1320563197,IC_kwDOBm6k_c5OtjH9,9599,2022-11-18T21:47:35Z,2022-11-18T21:48:07Z,OWNER,"Incomplete implementation of this view:
```python
class RowUpdateView(BaseView):
    name = ""row-update""

    def __init__(self, datasette):
        self.ds = datasette

    async def post(self, request):
        database_route = tilde_decode(request.url_vars[""database""])
        table = tilde_decode(request.url_vars[""table""])
        try:
            db = self.ds.get_database(route=database_route)
        except KeyError:
            return _error([""Database not found: {}"".format(database_route)], 404)

        database_name = db.name
        if not await db.table_exists(table):
            return _error([""Table not found: {}"".format(table)], 404)

        pk_values = urlsafe_components(request.url_vars[""pks""])

        sql, params, pks = await row_sql_params_pks(db, table, pk_values)
        results = await db.execute(sql, params, truncate=True)
        rows = list(results.rows)
        if not rows:
            return _error([f""Record not found: {pk_values}""], 404)

        # Ensure user has permission to update this row
        if not await self.ds.permission_allowed(
            request.actor, ""update-row"", resource=(database_name, table)
        ):
            return _error([""Permission denied""], 403)

        body = await request.post_body()
        try:
            data = json.loads(body)
        except json.JSONDecodeError as e:
            return _error([""Invalid JSON: {}"".format(e)])
        if not isinstance(data, dict):
            return _error([""JSON must be a dictionary""])

        def update_row(conn):
            sqlite_utils.Database(conn)[table].update(pk_values, updates)

        await db.execute_write_fn(update_row)
        result = {""ok"": True}
        if data.get(""return""):
            result[""row""] = {""row-here"": ""TODO""}
        return Response.json(result, status=200)
```
This is before the refactor in:
- #1896","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1425029242,