{"ok": true, "database": "docs", "table": "sections", "rows": [{"id": "changelog:write-wrapper-plugin-hook-for-intercepting-write-operations", "page": "changelog", "ref": "write-wrapper-plugin-hook-for-intercepting-write-operations", "title": null, "content": "A new  write_wrapper()  plugin hook allows plugins to intercept and wrap database write operations. ( #2636 ) \n                 Plugins implement the hook as a generator-based context manager: \n                 @hookimpl\ndef write_wrapper(datasette, database, request):\n    def wrapper(conn):\n        # Setup code runs before the write\n        yield\n        # Cleanup code runs after the write\n\n    return wrapper", "breadcrumbs": "[\"Changelog\", \"1.0a25 (2026-02-25)\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/pull/2636\", \"label\": \"#2636\"}]"}], "primary_keys": ["id"], "primary_key_values": ["changelog:write-wrapper-plugin-hook-for-intercepting-write-operations"], "query_ms": 2.6182199999311706, "truncated": false}