Skip to content

Commit 8d6ace0

Browse files
committed
Add D1 template
1 parent 3758346 commit 8d6ace0

File tree

23 files changed

+603
-10
lines changed

23 files changed

+603
-10
lines changed

django_cf/d1_binding/database.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@
88
from django.conf import settings
99
from django.utils import timezone
1010

11-
try:
12-
from workers import import_from_javascript
13-
from pyodide.ffi import run_sync
14-
except ImportError:
15-
raise Exception("Code not running inside a worker, please change to django_cf.d1_api database backend")
16-
1711
class D1Result:
1812
lastrowid = None
1913
rowcount = -1
@@ -48,6 +42,14 @@ class D1Database:
4842
def __init__(self, binding):
4943
self.binding = binding
5044

45+
try:
46+
from workers import import_from_javascript
47+
from pyodide.ffi import run_sync
48+
self.import_from_javascript = import_from_javascript
49+
self.run_sync = run_sync
50+
except ImportError:
51+
raise Exception("Code not running inside a worker, please change to django_cf.d1_api database backend")
52+
5153
DataError = DataError
5254

5355
OperationalError = OperationalError
@@ -122,7 +124,7 @@ def run_query(self, query, params=None):
122124
# print(query)
123125
# print(params)
124126

125-
cf_workers = import_from_javascript("cloudflare:workers")
127+
cf_workers = self.import_from_javascript("cloudflare:workers")
126128
# print(dir(cf_workers.env))
127129
db = getattr(cf_workers.env, self.binding)
128130

@@ -132,7 +134,7 @@ def run_query(self, query, params=None):
132134
stmt = db.prepare(proc_query);
133135

134136
try:
135-
resp = run_sync(stmt.all())
137+
resp = self.run_sync(stmt.all())
136138
except:
137139
from js import Error
138140
Error.stackTraceLimit = 1e10

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
},
1414
"license": "MIT",
1515
"scripts": {
16-
"setup-test": "pip install -e .[dev] && cd templates/durable-objects && npm run dependencies && cp -r ../../django_cf src/vendor/django_cf",
16+
"setup-durable-objects": "cd templates/durable-objects && npm run dependencies && cp -r ../../django_cf src/vendor/django_cf",
17+
"setup-d1": "cd templates/d1 && npm run dependencies && cp -r ../../django_cf src/vendor/django_cf",
18+
"setup-test": "pip install -e .[dev] && npm run setup-durable-objects && npm run setup-d1",
1719
"test": "pytest"
1820
},
1921
"devDependencies": {

pnpm-lock.yaml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/d1/.gitignore

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Logs
2+
3+
logs
4+
_.log
5+
npm-debug.log_
6+
yarn-debug.log*
7+
yarn-error.log*
8+
lerna-debug.log*
9+
.pnpm-debug.log*
10+
11+
# Diagnostic reports (https://nodejs.org/api/report.html)
12+
13+
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
14+
15+
# Runtime data
16+
17+
pids
18+
_.pid
19+
_.seed
20+
\*.pid.lock
21+
22+
# Dependency directories
23+
24+
node_modules/
25+
jspm_packages/
26+
27+
# TypeScript cache
28+
29+
\*.tsbuildinfo
30+
31+
# Optional npm cache directory
32+
33+
.npm
34+
35+
# Optional eslint cache
36+
37+
.eslintcache
38+
39+
# Optional stylelint cache
40+
41+
.stylelintcache
42+
43+
# Optional REPL history
44+
45+
.node_repl_history
46+
47+
# Output of 'npm pack'
48+
49+
\*.tgz
50+
51+
# dotenv environment variable files
52+
53+
.env
54+
.env.development.local
55+
.env.test.local
56+
.env.production.local
57+
.env.local
58+
59+
# public
60+
61+
# Stores VSCode versions used for testing VSCode extensions
62+
63+
.vscode-test
64+
65+
# wrangler project
66+
67+
.dev.vars
68+
.wrangler/
69+
.idea
70+
node_modules
71+
staticfiles
72+
src/vendor/

templates/d1/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Django + D1 Template for Cloudflare Workers

templates/d1/__init__.py

Whitespace-only changes.

templates/d1/package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "django-on-workers",
3+
"version": "0.0.0",
4+
"private": true,
5+
"scripts": {
6+
"dependencies": "pip3 install -t src/vendor -r vendor.txt && pip3 install -r requirements-dev.txt",
7+
"deploy": "npm run dependencies && wrangler deploy",
8+
"dev": "wrangler dev",
9+
"start": "wrangler dev"
10+
},
11+
"devDependencies": {
12+
"wrangler": "^4.22.0"
13+
}
14+
}

templates/d1/requirements-dev.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
django==5.1.2
2+
django-cf

templates/d1/src/__init__.py

Whitespace-only changes.

templates/d1/src/app/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)