d1-kyt 0.7.2 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -222
- package/dist/cli.js +0 -0
- package/dist/executor.d.ts +5 -4
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +60 -11
- package/dist/executor.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/schema-diff.d.ts.map +1 -1
- package/dist/schema-diff.js +14 -1
- package/dist/schema-diff.js.map +1 -1
- package/dist/schema.d.ts +2 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +16 -8
- package/dist/schema.js.map +1 -1
- package/dist/validators.d.ts +10 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +22 -0
- package/dist/validators.js.map +1 -0
- package/package.json +11 -19
- package/skills/use-d1-kyt/SKILL.md +185 -0
package/README.md
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
# d1-kyt
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Type-safe [Cloudflare D1](https://developers.cloudflare.com/d1/) toolkit built on [Kysely](https://kysely.dev/) and [Valibot](https://valibot.dev/). Define your schema once in Valibot — get SQL migrations and fully-typed queries with no code generation.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```typescript
|
|
6
|
+
import { defineTable, InferDB, createQueryBuilder } from 'd1-kyt';
|
|
7
|
+
import { queryAll, queryFirst, queryRun } from 'd1-kyt';
|
|
8
|
+
import * as v from 'valibot';
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
export const posts = defineTable('posts', {
|
|
11
|
+
title: v.string(),
|
|
12
|
+
published: v.boolean(),
|
|
13
|
+
views: v.pipe(v.number(), v.integer()),
|
|
14
|
+
categoryId: v.optional(v.pipe(v.number(), v.integer())),
|
|
15
|
+
meta: v.object({ og: v.string() }), // stored as JSON
|
|
16
|
+
}, {
|
|
17
|
+
foreignKeys: [{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' }],
|
|
18
|
+
indexes: [{ columns: ['title'], unique: true }],
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export type DB = InferDB<{ posts: typeof posts }>;
|
|
22
|
+
export const db = createQueryBuilder<DB>();
|
|
23
|
+
|
|
24
|
+
// Type-safe queries — JSON and boolean columns deserialize automatically
|
|
25
|
+
const all = await queryAll(env.DB, db.selectFrom('posts').selectAll().compile());
|
|
26
|
+
const one = await queryFirst(env.DB, db.selectFrom('posts').where('id', '=', 1).selectAll().compile());
|
|
27
|
+
const done = await queryRun(env.DB, db.deleteFrom('posts').where('id', '=', 1).compile());
|
|
28
|
+
```
|
|
8
29
|
|
|
9
30
|
## Install
|
|
10
31
|
|
|
@@ -15,81 +36,44 @@ npm install d1-kyt kysely valibot
|
|
|
15
36
|
## Workflow
|
|
16
37
|
|
|
17
38
|
```
|
|
18
|
-
schema.ts → schema:diff → .sql migration → wrangler apply →
|
|
39
|
+
schema.ts → schema:diff → .sql migration → wrangler apply → typed queries
|
|
19
40
|
```
|
|
20
41
|
|
|
21
|
-
1. Define
|
|
42
|
+
1. Define tables with Valibot types in `schema.ts`
|
|
22
43
|
2. Run `d1-kyt schema:diff <name>` — diffs against a snapshot, writes a `.sql` migration
|
|
23
44
|
3. Apply with `wrangler d1 migrations apply <db> --local`
|
|
24
|
-
4. Use `$inferSelect` / `$inferInsert` from your schema for
|
|
25
|
-
|
|
26
|
-
No code generation step required — types come directly from the schema file.
|
|
45
|
+
4. Use `$inferSelect` / `$inferInsert` from your schema for typed queries
|
|
27
46
|
|
|
28
47
|
---
|
|
29
48
|
|
|
30
49
|
## Quick start
|
|
31
50
|
|
|
32
51
|
```bash
|
|
33
|
-
#
|
|
34
|
-
d1-kyt
|
|
35
|
-
|
|
36
|
-
# Edit the generated schema file, then:
|
|
37
|
-
d1-kyt schema:diff create_users
|
|
38
|
-
|
|
39
|
-
# Apply to local D1:
|
|
40
|
-
wrangler d1 migrations apply <db-name> --local
|
|
52
|
+
d1-kyt init # scaffold config + schema in db/
|
|
53
|
+
d1-kyt schema:diff create_posts # generates db/migrations/0001_create_posts.sql
|
|
54
|
+
wrangler d1 migrations apply <db> --local
|
|
41
55
|
```
|
|
42
56
|
|
|
43
|
-
`init` auto-detects the right directory. Defaults to `db/`. If your wrangler config has a `migrations_dir` with a parent folder (e.g. `src/migrations/`), it uses that parent instead.
|
|
44
|
-
|
|
45
57
|
---
|
|
46
58
|
|
|
47
59
|
## Schema
|
|
48
60
|
|
|
49
|
-
```typescript
|
|
50
|
-
// db/schema.ts
|
|
51
|
-
import { defineTable, defineIndex, defineTrigger, type InferDB } from 'd1-kyt/schema';
|
|
52
|
-
import { createQueryBuilder } from 'd1-kyt';
|
|
53
|
-
import * as v from 'valibot';
|
|
54
|
-
|
|
55
|
-
export const users = defineTable('users', {
|
|
56
|
-
email: v.string(), // TEXT NOT NULL
|
|
57
|
-
name: v.optional(v.string()), // TEXT (nullable)
|
|
58
|
-
age: v.optional(v.pipe(v.number(), v.integer())), // INTEGER (nullable)
|
|
59
|
-
prefs: v.optional(v.object({ theme: v.string() })), // TEXT JSON (nullable)
|
|
60
|
-
role: v.optional(v.string(), 'user'), // TEXT DEFAULT 'user'
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
export const usersEmailIdx = defineIndex(users, ['email'], { unique: true });
|
|
64
|
-
|
|
65
|
-
export const auditTrigger = defineTrigger('users_audit_trg', {
|
|
66
|
-
timing: 'AFTER', event: 'INSERT', on: users,
|
|
67
|
-
body: `INSERT INTO audit (action, at) VALUES ('insert', datetime('now'));`,
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
export type DB = InferDB<{ users: typeof users }>;
|
|
71
|
-
|
|
72
|
-
// Compile-only Kysely query builder — stateless, no connection held.
|
|
73
|
-
// Use with queryAll/queryFirst/queryRun to execute against D1.
|
|
74
|
-
export const db = createQueryBuilder<DB>();
|
|
75
|
-
```
|
|
76
|
-
|
|
77
61
|
### Valibot → SQL type mapping
|
|
78
62
|
|
|
79
|
-
| Valibot
|
|
80
|
-
|
|
81
|
-
| `v.string()` | TEXT
|
|
82
|
-
| `v.number()` | REAL
|
|
83
|
-
| `v.pipe(v.number(), v.integer()
|
|
84
|
-
| `v.boolean()` | INTEGER
|
|
85
|
-
| `v.object({...})`
|
|
86
|
-
| `v.optional(X)` |
|
|
87
|
-
| `v.nullable(X)` |
|
|
88
|
-
| `v.optional(X,
|
|
63
|
+
| Valibot | SQL | Notes |
|
|
64
|
+
|---------|-----|-------|
|
|
65
|
+
| `v.string()` | TEXT NOT NULL | |
|
|
66
|
+
| `v.number()` | REAL NOT NULL | |
|
|
67
|
+
| `v.pipe(v.number(), v.integer())` | INTEGER NOT NULL | |
|
|
68
|
+
| `v.boolean()` | INTEGER NOT NULL | stored as 0/1, returned as `boolean` |
|
|
69
|
+
| `v.object({...})` / `v.array(...)` | TEXT NOT NULL | JSON serialized |
|
|
70
|
+
| `v.optional(X)` | nullable | |
|
|
71
|
+
| `v.nullable(X)` | nullable | |
|
|
72
|
+
| `v.optional(X, default)` | DEFAULT val | |
|
|
89
73
|
|
|
90
74
|
### Auto columns
|
|
91
75
|
|
|
92
|
-
Every table gets `id
|
|
76
|
+
Every table gets `id` (INTEGER PRIMARY KEY AUTOINCREMENT), `createdAt` (TEXT), and `updatedAt` (TEXT) with an `AFTER UPDATE` trigger. All configurable:
|
|
93
77
|
|
|
94
78
|
```typescript
|
|
95
79
|
// Disable everything
|
|
@@ -97,7 +81,7 @@ defineTable('events', { uuid: v.string() }, {
|
|
|
97
81
|
primaryKey: false, createdAt: false, updatedAt: false,
|
|
98
82
|
})
|
|
99
83
|
|
|
100
|
-
// Custom names
|
|
84
|
+
// Custom names
|
|
101
85
|
defineTable('users', { email: v.string() }, {
|
|
102
86
|
primaryKeyColumn: 'user_id',
|
|
103
87
|
createdAtColumn: 'created_at',
|
|
@@ -107,220 +91,119 @@ defineTable('users', { email: v.string() }, {
|
|
|
107
91
|
|
|
108
92
|
---
|
|
109
93
|
|
|
110
|
-
## CLI
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
d1-kyt init [--dir <dir>] # scaffold config + schema template
|
|
114
|
-
d1-kyt schema:diff <name> [--dir <dir>] # diff schema → write .sql migration
|
|
115
|
-
d1-kyt schema:diff <name> --schema <path> # use a custom schema file path
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### `init`
|
|
119
|
-
|
|
120
|
-
Creates (skips if already exists):
|
|
121
|
-
- `<dir>/config.ts` — migrationsDir + namingStrategy
|
|
122
|
-
- `<dir>/schema.ts` — schema template to fill in
|
|
123
|
-
- `<dir>/schema.snapshot.jsonc` — diff baseline (**commit this to git**)
|
|
124
|
-
|
|
125
|
-
Directory resolution:
|
|
126
|
-
1. `--dir <path>` if provided
|
|
127
|
-
2. `db/` if it contains a `config.ts` (default)
|
|
128
|
-
3. `d1-kyt/` if it contains a `config.ts` (legacy)
|
|
129
|
-
4. Parent of wrangler `migrations_dir` if not the project root
|
|
130
|
-
|
|
131
|
-
### `schema:diff <name>`
|
|
132
|
-
|
|
133
|
-
Reads your `schema.ts`, diffs against `schema.snapshot.jsonc`, writes a numbered `.sql` file to your `migrationsDir`, and updates the snapshot. **Commit the `.sql` and the snapshot together** — they are the source of truth for migration history.
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
d1-kyt schema:diff create_users # generates 0001_create_users.sql
|
|
137
|
-
d1-kyt schema:diff add_email_index # generates 0002_add_email_index.sql
|
|
138
|
-
d1-kyt schema:diff --dir db add_posts # use db/config.ts, db/schema.ts
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Config
|
|
142
|
-
|
|
143
|
-
```typescript
|
|
144
|
-
// db/config.ts (or d1-kyt/config.ts)
|
|
145
|
-
import { defineConfig } from 'd1-kyt/config';
|
|
146
|
-
|
|
147
|
-
export default defineConfig({
|
|
148
|
-
migrationsDir: 'db/migrations',
|
|
149
|
-
namingStrategy: 'sequential', // or 'timestamp'
|
|
150
|
-
});
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
94
|
## Type inference
|
|
156
95
|
|
|
157
|
-
Types come directly from your schema — no code generation step required:
|
|
158
|
-
|
|
159
96
|
```typescript
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
// Full row returned by SELECT
|
|
163
|
-
type UserRow = typeof users.$inferSelect;
|
|
164
|
-
// { id: number; email: string; name: string | undefined; age: number | undefined;
|
|
165
|
-
// prefs: { theme: string } | undefined; role: string | undefined;
|
|
166
|
-
// createdAt: string; updatedAt: string }
|
|
167
|
-
|
|
168
|
-
// Input for INSERT
|
|
169
|
-
type NewUser = typeof users.$inferInsert;
|
|
170
|
-
// { email: string; name?: string | undefined; age?: number | undefined; ... id?: number }
|
|
97
|
+
type PostRow = typeof posts.$inferSelect;
|
|
98
|
+
// { id: number; title: string; published: boolean; views: number; ... }
|
|
171
99
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
export type DB = InferDB<{ users: typeof users }>;
|
|
100
|
+
type NewPost = typeof posts.$inferInsert;
|
|
101
|
+
// { title: string; published: boolean; views: number; id?: number; ... }
|
|
175
102
|
```
|
|
176
103
|
|
|
177
104
|
---
|
|
178
105
|
|
|
179
|
-
##
|
|
180
|
-
|
|
181
|
-
`db` is a compile-only Kysely instance exported from your schema file. It holds no connection — it just builds typed SQL that you pass to `queryAll`/`queryFirst`/`queryRun` for execution.
|
|
106
|
+
## Foreign keys
|
|
182
107
|
|
|
183
108
|
```typescript
|
|
184
|
-
|
|
185
|
-
import { db } from './db/schema';
|
|
186
|
-
|
|
187
|
-
export const listUsers = () =>
|
|
188
|
-
db.selectFrom('users').selectAll().compile();
|
|
189
|
-
|
|
190
|
-
export const getUserByEmail = (email: string) =>
|
|
191
|
-
db.selectFrom('users').selectAll().where('email', '=', email).compile();
|
|
109
|
+
export const categories = defineTable('categories', { name: v.string() });
|
|
192
110
|
|
|
193
|
-
export const
|
|
194
|
-
|
|
111
|
+
export const posts = defineTable('posts', {
|
|
112
|
+
title: v.string(),
|
|
113
|
+
categoryId: v.pipe(v.number(), v.integer()),
|
|
114
|
+
}, {
|
|
115
|
+
foreignKeys: [{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' }],
|
|
116
|
+
});
|
|
195
117
|
```
|
|
196
118
|
|
|
197
|
-
|
|
119
|
+
`PRAGMA foreign_keys = ON` is automatically prepended to any migration that includes FK constraints.
|
|
198
120
|
|
|
199
|
-
|
|
200
|
-
// src/app.ts
|
|
201
|
-
import { Hono } from 'hono';
|
|
202
|
-
import { queryAll, queryFirst, queryRun } from 'd1-kyt';
|
|
203
|
-
import * as q from './queries';
|
|
204
|
-
|
|
205
|
-
const app = new Hono();
|
|
206
|
-
|
|
207
|
-
app.get('/users', async (c) => {
|
|
208
|
-
const users = await queryAll(c.env.DB, q.listUsers());
|
|
209
|
-
return c.json(users);
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
app.get('/users/:email', async (c) => {
|
|
213
|
-
const user = await queryFirst(c.env.DB, q.getUserByEmail(c.req.param('email')));
|
|
214
|
-
return user ? c.json(user) : c.notFound();
|
|
215
|
-
});
|
|
121
|
+
Adding a FK column to an existing table requires a nullable column (SQLite limitation):
|
|
216
122
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
const [user] = await queryAll(c.env.DB, q.insertUser(email, name));
|
|
220
|
-
return c.json(user, 201);
|
|
221
|
-
});
|
|
123
|
+
```typescript
|
|
124
|
+
deptId: v.optional(v.pipe(v.number(), v.integer())) // ✓ nullable allows inline REFERENCES
|
|
222
125
|
```
|
|
223
126
|
|
|
224
127
|
---
|
|
225
128
|
|
|
226
|
-
##
|
|
227
|
-
|
|
228
|
-
Declare foreign keys in the table options. `PRAGMA foreign_keys = ON` is automatically prepended to any migration that includes FK constraints.
|
|
229
|
-
|
|
230
|
-
```typescript
|
|
231
|
-
export const categories = defineTable('categories', { name: v.string() });
|
|
232
|
-
|
|
233
|
-
export const posts = defineTable('posts', {
|
|
234
|
-
title: v.string(),
|
|
235
|
-
categoryId: v.pipe(v.number(), v.integer()),
|
|
236
|
-
}, {
|
|
237
|
-
foreignKeys: [
|
|
238
|
-
{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' },
|
|
239
|
-
],
|
|
240
|
-
});
|
|
241
|
-
```
|
|
129
|
+
## CLI
|
|
242
130
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
131
|
+
```bash
|
|
132
|
+
d1-kyt init [--dir <dir>]
|
|
133
|
+
d1-kyt schema:diff <name> [--dir <dir>] [--schema <path>]
|
|
246
134
|
```
|
|
247
135
|
|
|
248
|
-
|
|
136
|
+
**Always commit `schema.json` alongside each `.sql` migration** — it is the diff baseline.
|
|
249
137
|
|
|
250
|
-
|
|
138
|
+
### Config
|
|
251
139
|
|
|
252
140
|
```typescript
|
|
253
|
-
//
|
|
254
|
-
|
|
255
|
-
name: v.string(),
|
|
256
|
-
deptId: v.optional(v.pipe(v.number(), v.integer())), // nullable ✓
|
|
257
|
-
}, {
|
|
258
|
-
foreignKeys: [{ columns: ['deptId'], references: departments }],
|
|
259
|
-
});
|
|
260
|
-
```
|
|
141
|
+
// db/config.ts
|
|
142
|
+
import { defineConfig } from 'd1-kyt';
|
|
261
143
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
144
|
+
export default defineConfig({
|
|
145
|
+
migrationsDir: 'db/migrations',
|
|
146
|
+
namingStrategy: 'sequential', // or 'timestamp'
|
|
147
|
+
});
|
|
265
148
|
```
|
|
266
149
|
|
|
267
|
-
|
|
150
|
+
---
|
|
268
151
|
|
|
269
|
-
|
|
152
|
+
## D1 limits
|
|
270
153
|
|
|
271
|
-
|
|
154
|
+
d1-kyt enforces D1's hard limits at runtime and emits warnings in generated migrations:
|
|
272
155
|
|
|
273
|
-
|
|
156
|
+
| Limit | Value |
|
|
157
|
+
|-------|-------|
|
|
158
|
+
| Bound parameters per query | 100 |
|
|
159
|
+
| SQL statement length | 100,000 chars |
|
|
160
|
+
| Columns per table | 100 (warning in migration) |
|
|
274
161
|
|
|
275
|
-
|
|
162
|
+
Custom validators:
|
|
276
163
|
|
|
277
164
|
```typescript
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
where: '"active" = 1', // raw SQL string
|
|
281
|
-
})
|
|
282
|
-
```
|
|
165
|
+
import { D1_VALIDATORS, runValidators } from 'd1-kyt';
|
|
166
|
+
import type { QueryValidator } from 'd1-kyt';
|
|
283
167
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
168
|
+
const noDrops: QueryValidator = (q) => {
|
|
169
|
+
if (q.sql.includes('DROP')) throw new Error('DROP not allowed');
|
|
170
|
+
};
|
|
287
171
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
- Trigger naming: `{table}_{col}_trg`
|
|
292
|
-
- `schema.snapshot.jsonc` is the diff source of truth — always commit it alongside migration SQL files
|
|
172
|
+
await queryAll(env.DB, query, undefined, [...D1_VALIDATORS, noDrops]);
|
|
173
|
+
await queryAll(env.DB, query, undefined, []); // disable all checks
|
|
174
|
+
```
|
|
293
175
|
|
|
294
176
|
---
|
|
295
177
|
|
|
296
178
|
## API reference
|
|
297
179
|
|
|
298
|
-
###
|
|
180
|
+
### Schema
|
|
299
181
|
|
|
300
182
|
| Export | Description |
|
|
301
|
-
|
|
183
|
+
|--------|-------------|
|
|
302
184
|
| `defineTable(name, columns, opts?)` | Define a table; returns `SchemaTable` with `$inferSelect` / `$inferInsert` |
|
|
303
|
-
| `defineIndex(table, columns, opts?)` | Define an index (columns are type-checked
|
|
304
|
-
| `defineTrigger(name, opts)` | Define a custom trigger
|
|
305
|
-
| `
|
|
306
|
-
| `TableOptions` | Options type for auto columns (re-exported) |
|
|
307
|
-
| `InferDB<Tables>` | Infer a Kysely-compatible `DB` type from a record of `SchemaTable` definitions |
|
|
185
|
+
| `defineIndex(table, columns, opts?)` | Define an index (columns are type-checked) |
|
|
186
|
+
| `defineTrigger(name, opts)` | Define a custom trigger |
|
|
187
|
+
| `InferDB<Tables>` | Infer a Kysely-compatible `DB` type |
|
|
308
188
|
|
|
309
|
-
###
|
|
189
|
+
### Execution
|
|
310
190
|
|
|
311
191
|
| Export | Description |
|
|
312
|
-
|
|
313
|
-
| `createQueryBuilder<DB>()` |
|
|
314
|
-
| `queryAll(db, query)` |
|
|
315
|
-
| `queryFirst(db, query)` |
|
|
316
|
-
| `queryRun(db, query)` |
|
|
317
|
-
| `queryBatch(db, queries)` |
|
|
192
|
+
|--------|-------------|
|
|
193
|
+
| `createQueryBuilder<DB>()` | Compile-only Kysely instance |
|
|
194
|
+
| `queryAll(db, query, table?, validators?)` | All rows; JSON + boolean columns auto-deserialized |
|
|
195
|
+
| `queryFirst(db, query, table?, validators?)` | First row or null; auto-deserialized |
|
|
196
|
+
| `queryRun(db, query, validators?)` | INSERT / UPDATE / DELETE |
|
|
197
|
+
| `queryBatch(db, queries, validators?)` | Atomic batch |
|
|
318
198
|
|
|
319
|
-
###
|
|
199
|
+
### Validators
|
|
320
200
|
|
|
321
201
|
| Export | Description |
|
|
322
|
-
|
|
323
|
-
| `
|
|
202
|
+
|--------|-------------|
|
|
203
|
+
| `D1_VALIDATORS` | Default validator array |
|
|
204
|
+
| `d1MaxParams` | Enforces ≤ 100 bound parameters |
|
|
205
|
+
| `d1MaxSqlLength` | Enforces ≤ 100,000 char SQL |
|
|
206
|
+
| `runValidators(query, validators?)` | Run validators manually |
|
|
324
207
|
|
|
325
208
|
---
|
|
326
209
|
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/executor.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CompiledQuery } from 'kysely';
|
|
2
2
|
import type { SchemaTable } from './schema.js';
|
|
3
|
+
import type { QueryValidator } from './validators.js';
|
|
3
4
|
/**
|
|
4
5
|
* D1 query result with metadata
|
|
5
6
|
*/
|
|
@@ -48,7 +49,7 @@ interface D1Result<T = unknown> {
|
|
|
48
49
|
* const users = await queryAll(env.DB, queries.listUsers());
|
|
49
50
|
* ```
|
|
50
51
|
*/
|
|
51
|
-
export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any
|
|
52
|
+
export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>, validators?: QueryValidator[]): Promise<T[]>;
|
|
52
53
|
/**
|
|
53
54
|
* Execute query and return first row or null
|
|
54
55
|
*
|
|
@@ -57,7 +58,7 @@ export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, tab
|
|
|
57
58
|
* const user = await queryFirst(env.DB, queries.getUserById({ id: 1 }));
|
|
58
59
|
* ```
|
|
59
60
|
*/
|
|
60
|
-
export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any
|
|
61
|
+
export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>, validators?: QueryValidator[]): Promise<T | null>;
|
|
61
62
|
/**
|
|
62
63
|
* Execute query without returning rows (INSERT/UPDATE/DELETE)
|
|
63
64
|
*
|
|
@@ -67,7 +68,7 @@ export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, t
|
|
|
67
68
|
* console.log(result.meta.changes);
|
|
68
69
|
* ```
|
|
69
70
|
*/
|
|
70
|
-
export declare function queryRun(db: D1Database, query: CompiledQuery<unknown
|
|
71
|
+
export declare function queryRun(db: D1Database, query: CompiledQuery<unknown>, validators?: QueryValidator[]): Promise<D1RunResult>;
|
|
71
72
|
/**
|
|
72
73
|
* Execute multiple queries in a batch (transaction-like)
|
|
73
74
|
*
|
|
@@ -79,6 +80,6 @@ export declare function queryRun(db: D1Database, query: CompiledQuery<unknown>):
|
|
|
79
80
|
* ]);
|
|
80
81
|
* ```
|
|
81
82
|
*/
|
|
82
|
-
export declare function queryBatch(db: D1Database, queries: readonly CompiledQuery<unknown>[]): Promise<D1RunResult[]>;
|
|
83
|
+
export declare function queryBatch(db: D1Database, queries: readonly CompiledQuery<unknown>[], validators?: QueryValidator[]): Promise<D1RunResult[]>;
|
|
83
84
|
export {};
|
|
84
85
|
//# sourceMappingURL=executor.d.ts.map
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoC,MAAM,QAAQ,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA8DtD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAWd;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAWnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,WAAW,CAAC,CAUtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,EAC1C,UAAU,CAAC,EAAE,cAAc,EAAE,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAUxB"}
|
package/dist/executor.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SelectQueryNode, TableNode, AliasNode } from 'kysely';
|
|
2
|
+
import { sqlTypeFromSchema, getTableRegistry } from './schema.js';
|
|
3
|
+
import { runValidators } from './validators.js';
|
|
2
4
|
/**
|
|
3
5
|
* Serialize a query parameter for D1 binding.
|
|
4
6
|
* D1 accepts: null | string | number | boolean | ArrayBuffer | ArrayBufferView.
|
|
@@ -13,17 +15,53 @@ function serializeParam(p) {
|
|
|
13
15
|
return p;
|
|
14
16
|
return JSON.stringify(p);
|
|
15
17
|
}
|
|
16
|
-
function
|
|
18
|
+
function extractTableNames(node) {
|
|
19
|
+
const names = new Set();
|
|
20
|
+
if (!SelectQueryNode.is(node))
|
|
21
|
+
return [];
|
|
22
|
+
const collectFrom = (n) => {
|
|
23
|
+
if (TableNode.is(n)) {
|
|
24
|
+
names.add(n.table.identifier.name);
|
|
25
|
+
}
|
|
26
|
+
else if (AliasNode.is(n) && TableNode.is(n.node)) {
|
|
27
|
+
names.add(n.node.table.identifier.name);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
if (node.from) {
|
|
31
|
+
for (const f of node.from.froms)
|
|
32
|
+
collectFrom(f);
|
|
33
|
+
}
|
|
34
|
+
if (node.joins) {
|
|
35
|
+
for (const j of node.joins)
|
|
36
|
+
collectFrom(j.table);
|
|
37
|
+
}
|
|
38
|
+
return Array.from(names);
|
|
39
|
+
}
|
|
40
|
+
function deserializeRow(row, tables) {
|
|
17
41
|
const result = { ...row };
|
|
18
|
-
for (const
|
|
19
|
-
|
|
20
|
-
if (
|
|
42
|
+
for (const table of tables) {
|
|
43
|
+
for (const col of Object.keys(table._columns)) {
|
|
44
|
+
if (!(col in result))
|
|
45
|
+
continue;
|
|
46
|
+
const info = sqlTypeFromSchema(table._columns[col]);
|
|
47
|
+
if (info.isJson && typeof result[col] === 'string') {
|
|
21
48
|
result[col] = JSON.parse(result[col]);
|
|
22
49
|
}
|
|
50
|
+
else if (info.isBoolean && (result[col] === 0 || result[col] === 1)) {
|
|
51
|
+
result[col] = result[col] === 1;
|
|
52
|
+
}
|
|
23
53
|
}
|
|
24
54
|
}
|
|
25
55
|
return result;
|
|
26
56
|
}
|
|
57
|
+
function resolveTables(node, explicit) {
|
|
58
|
+
if (explicit)
|
|
59
|
+
return [explicit];
|
|
60
|
+
const registry = getTableRegistry();
|
|
61
|
+
return extractTableNames(node)
|
|
62
|
+
.map((n) => registry.get(n))
|
|
63
|
+
.filter((t) => t !== undefined);
|
|
64
|
+
}
|
|
27
65
|
/**
|
|
28
66
|
* Execute query and return all rows
|
|
29
67
|
*
|
|
@@ -32,13 +70,17 @@ function deserializeRow(row, table) {
|
|
|
32
70
|
* const users = await queryAll(env.DB, queries.listUsers());
|
|
33
71
|
* ```
|
|
34
72
|
*/
|
|
35
|
-
export async function queryAll(db, query, table) {
|
|
73
|
+
export async function queryAll(db, query, table, validators) {
|
|
74
|
+
runValidators(query, validators);
|
|
75
|
+
const tables = resolveTables(query.query, table);
|
|
36
76
|
const result = await db
|
|
37
77
|
.prepare(query.sql)
|
|
38
78
|
.bind(...query.parameters.map(serializeParam))
|
|
39
79
|
.all();
|
|
40
80
|
const rows = result.results ?? [];
|
|
41
|
-
return
|
|
81
|
+
return tables.length > 0
|
|
82
|
+
? rows.map((r) => deserializeRow(r, tables))
|
|
83
|
+
: rows;
|
|
42
84
|
}
|
|
43
85
|
/**
|
|
44
86
|
* Execute query and return first row or null
|
|
@@ -48,14 +90,18 @@ export async function queryAll(db, query, table) {
|
|
|
48
90
|
* const user = await queryFirst(env.DB, queries.getUserById({ id: 1 }));
|
|
49
91
|
* ```
|
|
50
92
|
*/
|
|
51
|
-
export async function queryFirst(db, query, table) {
|
|
93
|
+
export async function queryFirst(db, query, table, validators) {
|
|
94
|
+
runValidators(query, validators);
|
|
95
|
+
const tables = resolveTables(query.query, table);
|
|
52
96
|
const result = await db
|
|
53
97
|
.prepare(query.sql)
|
|
54
98
|
.bind(...query.parameters.map(serializeParam))
|
|
55
99
|
.first();
|
|
56
100
|
if (result == null)
|
|
57
101
|
return null;
|
|
58
|
-
return
|
|
102
|
+
return tables.length > 0
|
|
103
|
+
? deserializeRow(result, tables)
|
|
104
|
+
: result;
|
|
59
105
|
}
|
|
60
106
|
/**
|
|
61
107
|
* Execute query without returning rows (INSERT/UPDATE/DELETE)
|
|
@@ -66,7 +112,8 @@ export async function queryFirst(db, query, table) {
|
|
|
66
112
|
* console.log(result.meta.changes);
|
|
67
113
|
* ```
|
|
68
114
|
*/
|
|
69
|
-
export async function queryRun(db, query) {
|
|
115
|
+
export async function queryRun(db, query, validators) {
|
|
116
|
+
runValidators(query, validators);
|
|
70
117
|
const result = await db
|
|
71
118
|
.prepare(query.sql)
|
|
72
119
|
.bind(...query.parameters.map(serializeParam))
|
|
@@ -87,7 +134,9 @@ export async function queryRun(db, query) {
|
|
|
87
134
|
* ]);
|
|
88
135
|
* ```
|
|
89
136
|
*/
|
|
90
|
-
export async function queryBatch(db, queries) {
|
|
137
|
+
export async function queryBatch(db, queries, validators) {
|
|
138
|
+
for (const q of queries)
|
|
139
|
+
runValidators(q, validators);
|
|
91
140
|
const statements = queries.map((q) => db.prepare(q.sql).bind(...q.parameters.map(serializeParam)));
|
|
92
141
|
const results = await db.batch(statements);
|
|
93
142
|
return results.map((r) => ({
|
package/dist/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
export { createQueryBuilder } from './query-builder.js';
|
|
2
2
|
export { queryAll, queryFirst, queryRun, queryBatch } from './executor.js';
|
|
3
3
|
export type { D1Database, D1RunResult } from './executor.js';
|
|
4
|
+
export { defineTable, defineIndex, defineTrigger, sqlTypeFromSchema, getTableRegistry, } from './schema.js';
|
|
5
|
+
export type { InferDB, SchemaTable, SchemaIndex, SchemaTrigger, SchemaForeignKey, ColumnTypeInfo, SqliteType, TableOptions, } from './schema.js';
|
|
6
|
+
export { defineConfig } from './config.js';
|
|
7
|
+
export type { D1KytConfig, NamingStrategy } from './config.js';
|
|
8
|
+
export { d1MaxParams, d1MaxSqlLength, D1_VALIDATORS, runValidators } from './validators.js';
|
|
9
|
+
export { D1_MAX_BOUND_PARAMETERS, D1_MAX_SQL_LENGTH, D1_MAX_COLUMNS } from './validators.js';
|
|
10
|
+
export type { QueryValidator } from './validators.js';
|
|
4
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
export { createQueryBuilder } from './query-builder.js';
|
|
2
2
|
export { queryAll, queryFirst, queryRun, queryBatch } from './executor.js';
|
|
3
|
+
// schema
|
|
4
|
+
export { defineTable, defineIndex, defineTrigger, sqlTypeFromSchema, getTableRegistry, } from './schema.js';
|
|
5
|
+
// config
|
|
6
|
+
export { defineConfig } from './config.js';
|
|
7
|
+
// validators
|
|
8
|
+
export { d1MaxParams, d1MaxSqlLength, D1_VALIDATORS, runValidators } from './validators.js';
|
|
9
|
+
export { D1_MAX_BOUND_PARAMETERS, D1_MAX_SQL_LENGTH, D1_MAX_COLUMNS } from './validators.js';
|
|
3
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3E,SAAS;AACT,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAYrB,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-diff.d.ts","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"schema-diff.d.ts","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
|
package/dist/schema-diff.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* the declarative schema workflow (schema:diff command).
|
|
4
4
|
*/
|
|
5
5
|
import { sqlTypeFromSchema } from './schema.js';
|
|
6
|
+
import { D1_MAX_COLUMNS, D1_MAX_SQL_LENGTH } from './validators.js';
|
|
6
7
|
// ----------------------------------------------------------------------------
|
|
7
8
|
// Internal Helpers
|
|
8
9
|
// ----------------------------------------------------------------------------
|
|
@@ -344,6 +345,10 @@ export function diffToSQL(diff, chunkSize = 5000) {
|
|
|
344
345
|
for (const table of diff.addedTables) {
|
|
345
346
|
if (Object.keys(table.foreignKeys ?? {}).length > 0)
|
|
346
347
|
hasForeignKeys = true;
|
|
348
|
+
const colCount = Object.keys(table.columns).length;
|
|
349
|
+
if (colCount > D1_MAX_COLUMNS) {
|
|
350
|
+
statements.push(`-- WARNING: table "${table.name}" has ${colCount} columns (D1 limit: ${D1_MAX_COLUMNS})`);
|
|
351
|
+
}
|
|
347
352
|
statements.push(...tableToCreateSQL(table));
|
|
348
353
|
}
|
|
349
354
|
// Dropped tables
|
|
@@ -488,6 +493,14 @@ export function diffToSQL(diff, chunkSize = 5000) {
|
|
|
488
493
|
if (hasForeignKeys) {
|
|
489
494
|
statements.unshift('PRAGMA foreign_keys = ON;');
|
|
490
495
|
}
|
|
491
|
-
|
|
496
|
+
// Warn about any statement that exceeds the D1 SQL length limit
|
|
497
|
+
const result = [];
|
|
498
|
+
for (const stmt of statements) {
|
|
499
|
+
if (!stmt.startsWith('--') && stmt.length > D1_MAX_SQL_LENGTH) {
|
|
500
|
+
result.push(`-- WARNING: statement below is ${stmt.length} characters (D1 limit: ${D1_MAX_SQL_LENGTH}); apply manually or split further`);
|
|
501
|
+
}
|
|
502
|
+
result.push(stmt);
|
|
503
|
+
}
|
|
504
|
+
return result;
|
|
492
505
|
}
|
|
493
506
|
//# sourceMappingURL=schema-diff.js.map
|
package/dist/schema-diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-diff.js","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-diff.js","sourceRoot":"","sources":["../src/schema-diff.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -104,6 +104,7 @@ export interface ColumnTypeInfo {
|
|
|
104
104
|
notNull: boolean;
|
|
105
105
|
default?: string;
|
|
106
106
|
isJson: boolean;
|
|
107
|
+
isBoolean: boolean;
|
|
107
108
|
}
|
|
108
109
|
/**
|
|
109
110
|
* Inspect a Valibot schema object and derive the SQLite type, nullability,
|
|
@@ -119,6 +120,7 @@ export interface ColumnTypeInfo {
|
|
|
119
120
|
* v.optional(X, defaultVal) → type of X + DEFAULT, nullable
|
|
120
121
|
*/
|
|
121
122
|
export declare function sqlTypeFromSchema(schema: v.BaseSchema<any, any, any>): ColumnTypeInfo;
|
|
123
|
+
export declare function getTableRegistry(): ReadonlyMap<string, SchemaTable<any, any>>;
|
|
122
124
|
/**
|
|
123
125
|
* Define a table using Valibot schemas as column types.
|
|
124
126
|
*
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.js
CHANGED
|
@@ -43,26 +43,32 @@ export function sqlTypeFromSchema(schema) {
|
|
|
43
43
|
if (inner?.type === 'number' && Array.isArray(inner.pipe)) {
|
|
44
44
|
const hasInteger = inner.pipe.some((item) => item.type === 'integer' && item.kind === 'validation');
|
|
45
45
|
if (hasInteger) {
|
|
46
|
-
return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false };
|
|
46
|
+
return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
const baseType = inner?.type ?? 'unknown';
|
|
50
50
|
switch (baseType) {
|
|
51
51
|
case 'string':
|
|
52
|
-
return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false };
|
|
52
|
+
return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
|
|
53
53
|
case 'number':
|
|
54
|
-
return { type: 'REAL', notNull: !nullable, default: defaultSql, isJson: false };
|
|
54
|
+
return { type: 'REAL', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
|
|
55
55
|
case 'boolean':
|
|
56
|
-
return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false };
|
|
56
|
+
return { type: 'INTEGER', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: true };
|
|
57
57
|
case 'object':
|
|
58
58
|
case 'array':
|
|
59
|
-
return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: true };
|
|
59
|
+
return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: true, isBoolean: false };
|
|
60
60
|
default:
|
|
61
|
-
|
|
62
|
-
return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false };
|
|
61
|
+
return { type: 'TEXT', notNull: !nullable, default: defaultSql, isJson: false, isBoolean: false };
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
64
|
// ----------------------------------------------------------------------------
|
|
65
|
+
// Table Registry
|
|
66
|
+
// ----------------------------------------------------------------------------
|
|
67
|
+
const tableRegistry = new Map();
|
|
68
|
+
export function getTableRegistry() {
|
|
69
|
+
return tableRegistry;
|
|
70
|
+
}
|
|
71
|
+
// ----------------------------------------------------------------------------
|
|
66
72
|
// defineTable
|
|
67
73
|
// ----------------------------------------------------------------------------
|
|
68
74
|
/**
|
|
@@ -83,7 +89,7 @@ export function sqlTypeFromSchema(schema) {
|
|
|
83
89
|
* ```
|
|
84
90
|
*/
|
|
85
91
|
export function defineTable(name, columns, options) {
|
|
86
|
-
|
|
92
|
+
const table = {
|
|
87
93
|
_name: name,
|
|
88
94
|
_columns: columns,
|
|
89
95
|
_options: (options ?? {}),
|
|
@@ -92,6 +98,8 @@ export function defineTable(name, columns, options) {
|
|
|
92
98
|
_foreignKeys: [...(options?.foreignKeys ?? [])],
|
|
93
99
|
_schemaTable: true,
|
|
94
100
|
};
|
|
101
|
+
tableRegistry.set(name, table);
|
|
102
|
+
return table;
|
|
95
103
|
}
|
|
96
104
|
// ----------------------------------------------------------------------------
|
|
97
105
|
// defineIndex
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CompiledQuery } from 'kysely';
|
|
2
|
+
export type QueryValidator = (query: CompiledQuery<unknown>) => void;
|
|
3
|
+
export declare const D1_MAX_BOUND_PARAMETERS = 100;
|
|
4
|
+
export declare const D1_MAX_SQL_LENGTH = 100000;
|
|
5
|
+
export declare const D1_MAX_COLUMNS = 100;
|
|
6
|
+
export declare const d1MaxParams: QueryValidator;
|
|
7
|
+
export declare const d1MaxSqlLength: QueryValidator;
|
|
8
|
+
export declare const D1_VALIDATORS: QueryValidator[];
|
|
9
|
+
export declare function runValidators(query: CompiledQuery<unknown>, validators?: QueryValidator[]): void;
|
|
10
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AAErE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,WAAW,EAAE,cAOzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAO5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,cAAc,EAAkC,CAAC;AAE7E,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,cAAc,EAAkB,GAC3C,IAAI,CAIN"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const D1_MAX_BOUND_PARAMETERS = 100;
|
|
2
|
+
export const D1_MAX_SQL_LENGTH = 100_000;
|
|
3
|
+
export const D1_MAX_COLUMNS = 100;
|
|
4
|
+
export const d1MaxParams = (query) => {
|
|
5
|
+
if (query.parameters.length > D1_MAX_BOUND_PARAMETERS) {
|
|
6
|
+
throw new Error(`D1 limit: query has ${query.parameters.length} bound parameters (max ${D1_MAX_BOUND_PARAMETERS}). ` +
|
|
7
|
+
`Split into multiple queries or reduce the number of columns.`);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export const d1MaxSqlLength = (query) => {
|
|
11
|
+
if (query.sql.length > D1_MAX_SQL_LENGTH) {
|
|
12
|
+
throw new Error(`D1 limit: SQL statement is ${query.sql.length} characters (max ${D1_MAX_SQL_LENGTH}). ` +
|
|
13
|
+
`Simplify the query or split it into smaller statements.`);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const D1_VALIDATORS = [d1MaxParams, d1MaxSqlLength];
|
|
17
|
+
export function runValidators(query, validators = D1_VALIDATORS) {
|
|
18
|
+
for (const validate of validators) {
|
|
19
|
+
validate(query);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAmB,CAAC,KAAK,EAAE,EAAE;IACnD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,CAAC,UAAU,CAAC,MAAM,0BAA0B,uBAAuB,KAAK;YAClG,8DAA8D,CACjE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,KAAK,EAAE,EAAE;IACtD,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,CAAC,GAAG,CAAC,MAAM,oBAAoB,iBAAiB,KAAK;YACtF,yDAAyD,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAqB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAE7E,MAAM,UAAU,aAAa,CAC3B,KAA6B,EAC7B,aAA+B,aAAa;IAE5C,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "d1-kyt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Opinionated Cloudflare D1 + Kysely toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,30 +13,15 @@
|
|
|
13
13
|
"types": "./dist/index.d.ts",
|
|
14
14
|
"import": "./dist/index.js"
|
|
15
15
|
},
|
|
16
|
-
"./schema": {
|
|
17
|
-
"types": "./dist/schema.d.ts",
|
|
18
|
-
"import": "./dist/schema.js"
|
|
19
|
-
},
|
|
20
16
|
"./migrate": {
|
|
21
17
|
"types": "./dist/migrate.d.ts",
|
|
22
18
|
"import": "./dist/migrate.js"
|
|
23
|
-
},
|
|
24
|
-
"./config": {
|
|
25
|
-
"types": "./dist/config.d.ts",
|
|
26
|
-
"import": "./dist/config.js"
|
|
27
19
|
}
|
|
28
20
|
},
|
|
29
21
|
"files": [
|
|
30
|
-
"dist"
|
|
22
|
+
"dist",
|
|
23
|
+
"skills"
|
|
31
24
|
],
|
|
32
|
-
"scripts": {
|
|
33
|
-
"build": "tsc",
|
|
34
|
-
"dev": "tsc --watch",
|
|
35
|
-
"test": "vitest",
|
|
36
|
-
"lint": "echo noop",
|
|
37
|
-
"typecheck": "tsc --noEmit",
|
|
38
|
-
"prepublishOnly": "pnpm build"
|
|
39
|
-
},
|
|
40
25
|
"keywords": [
|
|
41
26
|
"cloudflare",
|
|
42
27
|
"d1",
|
|
@@ -57,5 +42,12 @@
|
|
|
57
42
|
"typescript": "5.9.3",
|
|
58
43
|
"valibot": "1.2.0",
|
|
59
44
|
"vitest": "4.0.18"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsc",
|
|
48
|
+
"dev": "tsc --watch",
|
|
49
|
+
"test": "vitest",
|
|
50
|
+
"lint": "echo noop",
|
|
51
|
+
"typecheck": "tsc --noEmit"
|
|
60
52
|
}
|
|
61
|
-
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: use-d1-kyt
|
|
3
|
+
description: Use when building with d1-kyt — the Cloudflare D1 + Kysely + Valibot toolkit. Covers schema definition, migration generation, type inference, query execution, JSON column deserialization, D1 limits, and migration gotchas like NOT NULL FK constraints and table recreation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Using d1-kyt
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
d1-kyt connects three layers: **Valibot** (schema/validation) → **Kysely** (type-safe query builder) → **Cloudflare D1/SQLite** (executor). No code generation, no ORM runtime.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
schema.ts → schema:diff → .sql migration → wrangler apply → typed queries
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 1. Define Schema
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { defineTable } from 'd1-kyt';
|
|
20
|
+
import * as v from 'valibot';
|
|
21
|
+
|
|
22
|
+
export const posts = defineTable(
|
|
23
|
+
'posts',
|
|
24
|
+
{
|
|
25
|
+
title: v.string(), // TEXT NOT NULL
|
|
26
|
+
views: v.pipe(v.number(), v.integer()), // INTEGER NOT NULL
|
|
27
|
+
rating: v.number(), // REAL NOT NULL
|
|
28
|
+
published: v.boolean(), // INTEGER NOT NULL (0/1)
|
|
29
|
+
slug: v.optional(v.string()), // TEXT nullable
|
|
30
|
+
summary: v.optional(v.string(), 'TBD'), // TEXT DEFAULT 'TBD'
|
|
31
|
+
meta: v.object({ og: v.string() }), // TEXT (JSON) NOT NULL
|
|
32
|
+
tags: v.array(v.string()), // TEXT (JSON) NOT NULL
|
|
33
|
+
categoryId: v.pipe(v.number(), v.integer()),
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
foreignKeys: [{ columns: ['categoryId'], references: categories, onDelete: 'CASCADE' }],
|
|
37
|
+
indexes: [{ columns: ['slug'], unique: true }],
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Column type mapping:**
|
|
43
|
+
|
|
44
|
+
| Valibot | SQL | Notes |
|
|
45
|
+
|---------|-----|-------|
|
|
46
|
+
| `v.string()` | TEXT NOT NULL | |
|
|
47
|
+
| `v.pipe(v.number(), v.integer())` | INTEGER NOT NULL | |
|
|
48
|
+
| `v.number()` | REAL NOT NULL | |
|
|
49
|
+
| `v.boolean()` | INTEGER NOT NULL | stored as 0/1 |
|
|
50
|
+
| `v.object({...})` / `v.array(...)` | TEXT NOT NULL | JSON serialized |
|
|
51
|
+
| `v.optional(schema)` | nullable | no default |
|
|
52
|
+
| `v.optional(schema, val)` | DEFAULT val | |
|
|
53
|
+
| `v.nullable(schema)` | nullable | |
|
|
54
|
+
|
|
55
|
+
Auto columns added to every table: `id` (INTEGER PRIMARY KEY AUTOINCREMENT), `createdAt` (TEXT), `updatedAt` (TEXT).
|
|
56
|
+
|
|
57
|
+
## 2. Infer Types & Create Query Builder
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import { InferDB, createQueryBuilder } from 'd1-kyt';
|
|
61
|
+
|
|
62
|
+
export type DB = InferDB<{
|
|
63
|
+
posts: typeof posts;
|
|
64
|
+
categories: typeof categories;
|
|
65
|
+
}>;
|
|
66
|
+
|
|
67
|
+
// Stateless, compile-only Kysely instance — no connection held
|
|
68
|
+
export const db = createQueryBuilder<DB>();
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 3. Generate Migrations
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
d1-kyt schema:diff # auto-name from diff
|
|
75
|
+
d1-kyt schema:diff add_tags_column # custom name
|
|
76
|
+
d1-kyt schema:diff --schema src/schema.ts # custom schema path
|
|
77
|
+
d1-kyt schema:diff --dir db # custom directory
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Reads: `schema.ts`, `schema.json` (snapshot). Writes: numbered `.sql` migration, updated `schema.json`, and `schema.sql` (full DDL from scratch).
|
|
81
|
+
|
|
82
|
+
**Always commit `schema.json` alongside the `.sql` file** — it is the baseline for the next diff.
|
|
83
|
+
|
|
84
|
+
## 4. Execute Queries
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import { queryAll, queryFirst, queryRun, queryBatch } from 'd1-kyt';
|
|
88
|
+
|
|
89
|
+
// All rows — JSON and boolean columns deserialize automatically
|
|
90
|
+
const allPosts = await queryAll(env.DB, db.selectFrom('posts').selectAll().compile());
|
|
91
|
+
|
|
92
|
+
// First row or null
|
|
93
|
+
const post = await queryFirst(
|
|
94
|
+
env.DB,
|
|
95
|
+
db.selectFrom('posts').selectAll().where('id', '=', id).compile(),
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
// INSERT / UPDATE / DELETE
|
|
99
|
+
const result = await queryRun(
|
|
100
|
+
env.DB,
|
|
101
|
+
db.insertInto('posts').values({ title: 'Hello', views: 0, ... }).compile(),
|
|
102
|
+
);
|
|
103
|
+
console.log(result.meta.changes); // rows affected
|
|
104
|
+
|
|
105
|
+
// Atomic batch
|
|
106
|
+
await queryBatch(env.DB, [
|
|
107
|
+
db.insertInto('posts').values({ ... }).compile(),
|
|
108
|
+
db.updateTable('posts').set({ views: 1 }).where('id', '=', 1).compile(),
|
|
109
|
+
]);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
JSON columns (`v.object`, `v.array`) and boolean columns (`v.boolean`) are deserialized automatically — no need to pass the table explicitly.
|
|
113
|
+
|
|
114
|
+
## 5. D1 Limits
|
|
115
|
+
|
|
116
|
+
d1-kyt enforces these at runtime — violations throw before hitting D1:
|
|
117
|
+
|
|
118
|
+
| Limit | Value | Where enforced |
|
|
119
|
+
|-------|-------|----------------|
|
|
120
|
+
| Bound parameters per query | 100 | `queryAll/First/Run/Batch` |
|
|
121
|
+
| SQL statement length | 100,000 chars | `queryAll/First/Run/Batch` |
|
|
122
|
+
| Columns per table | 100 | warning comment in generated SQL |
|
|
123
|
+
| SQL length in migrations | 100,000 chars | warning comment in generated SQL |
|
|
124
|
+
|
|
125
|
+
To use a custom validator set (e.g. disable checks in tests, or add your own rules):
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
import { D1_VALIDATORS, runValidators } from 'd1-kyt';
|
|
129
|
+
import type { QueryValidator } from 'd1-kyt';
|
|
130
|
+
|
|
131
|
+
const noDrops: QueryValidator = (q) => {
|
|
132
|
+
if (q.sql.includes('DROP')) throw new Error('DROP not allowed');
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// extend
|
|
136
|
+
await queryAll(env.DB, query, posts, [...D1_VALIDATORS, noDrops]);
|
|
137
|
+
|
|
138
|
+
// disable all checks
|
|
139
|
+
await queryAll(env.DB, query, posts, []);
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Wide tables and batch inserts are the most common ways to hit the 100-parameter limit. An INSERT into a 98-column table already uses 98 parameters.
|
|
143
|
+
|
|
144
|
+
## 6. Migration Gotchas
|
|
145
|
+
|
|
146
|
+
### NOT NULL column with foreign key on existing table
|
|
147
|
+
|
|
148
|
+
SQLite's `ALTER TABLE ADD COLUMN` cannot include `REFERENCES` for NOT NULL columns. d1-kyt emits a warning and omits the FK:
|
|
149
|
+
|
|
150
|
+
```sql
|
|
151
|
+
-- WARNING: cannot add NOT NULL column "categoryId" with FK to existing table "posts"; make it nullable or rebuild
|
|
152
|
+
ALTER TABLE "posts" ADD COLUMN "categoryId" INTEGER NOT NULL;
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Fix — make the column nullable so the FK can be inlined:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
categoryId: v.optional(v.pipe(v.number(), v.integer()))
|
|
159
|
+
// generates: ALTER TABLE "posts" ADD COLUMN "categoryId" INTEGER REFERENCES "categories"("id")
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Table recreation for constrained column drops
|
|
163
|
+
|
|
164
|
+
Dropping a column that is part of a PRIMARY KEY or UNIQUE index requires full table recreation. d1-kyt generates 10 chunked `INSERT` statements (default 5,000 rows each = 50,000 rows total):
|
|
165
|
+
|
|
166
|
+
```sql
|
|
167
|
+
-- WARNING: table "posts" must be recreated (constrained column drop). Data is copied in chunks of 5000 rows.
|
|
168
|
+
INSERT INTO "posts_new" SELECT ... FROM "posts" WHERE rowid BETWEEN 1 AND 5000;
|
|
169
|
+
-- ... 9 more chunks
|
|
170
|
+
-- If "posts" has more than 50000 rows, add more INSERT statements following the same pattern
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
If your table exceeds 50,000 rows, extend the pattern manually in the generated SQL before applying.
|
|
174
|
+
|
|
175
|
+
### Foreign keys and PRAGMA
|
|
176
|
+
|
|
177
|
+
When any FK is present, d1-kyt automatically prepends `PRAGMA foreign_keys = ON;` to the migration.
|
|
178
|
+
|
|
179
|
+
### Modified columns
|
|
180
|
+
|
|
181
|
+
SQLite cannot `ALTER COLUMN`. d1-kyt emits a warning comment — you must handle the change manually or rebuild the table:
|
|
182
|
+
|
|
183
|
+
```sql
|
|
184
|
+
-- WARNING: column "posts"."title" changed; SQLite cannot ALTER COLUMN — handle manually
|
|
185
|
+
```
|