Workers Database Management System for Durable Objects
This project aims to provide a standard interface for "traditional" frameworks that are currently not supported by cloudflare workers to be able to use Durable Objects with SQLite as the backend database!
The main differences from Cloudflare D1 are:
- Websocket support (this really makes a difference when executing dozens of queries sequentially)
- Experimental transactions support
- On demand SQLite databases (like neon.tech)
- https endpoints to manage and query databases
- Websocket endpoint to query databases
- Transactions support in websocket mode!
- Django using django-cf
npm install --save workers-dbms
npm install --save wrangler
Create a index.ts
file with this:
import { generateApp } from "workers-dbms";
export { DBMSDO } from "workers-dbms";
export default generateApp()
Create a wrangler.toml
file with this:
#:schema node_modules/wrangler/config-schema.json
name = "workers-dbms"
main = "index.ts"
compatibility_date = "2024-09-28"
# workers_dev = false # uncomment this for enhanced security !
[[durable_objects.bindings]]
name = "DBSM_DO"
class_name = "DBMSDO"
[[migrations]]
tag = "v1"
new_sqlite_classes = ["DBMSDO"]
Deploy your dbms with wrangler:
wrangler deploy
You can now access your dbms on the worker deployed url
There is also a swagger interface with all the endpoints documented at /api
path.
API Documentation with swagger
When using a custom domain for your worker, make sure to enable WebSockets on the domain Network configuration, otherwise you will not be able to use the websocket endpoint!