d1-kyt 0.5.0 → 0.5.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 +18 -41
- package/dist/cli.js +11 -7
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,15 +40,16 @@ d1-kyt schema:diff create_users
|
|
|
40
40
|
wrangler d1 migrations apply <db-name> --local
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
`init` auto-detects the right directory. If your wrangler config has `migrations_dir
|
|
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
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
47
|
## Schema
|
|
48
48
|
|
|
49
49
|
```typescript
|
|
50
|
-
// db/schema.ts
|
|
50
|
+
// db/schema.ts
|
|
51
51
|
import { defineTable, defineIndex, defineTrigger } from 'd1-kyt/schema';
|
|
52
|
+
import { createQueryBuilder } from 'd1-kyt';
|
|
52
53
|
import * as v from 'valibot';
|
|
53
54
|
|
|
54
55
|
export const users = defineTable('users', {
|
|
@@ -65,6 +66,15 @@ export const auditTrigger = defineTrigger('users_audit_trg', {
|
|
|
65
66
|
timing: 'AFTER', event: 'INSERT', on: users,
|
|
66
67
|
body: `INSERT INTO audit (action, at) VALUES ('insert', datetime('now'));`,
|
|
67
68
|
});
|
|
69
|
+
|
|
70
|
+
// Add each table here as you define it.
|
|
71
|
+
export type DB = {
|
|
72
|
+
users: typeof users.$inferSelect;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// Compile-only Kysely query builder — stateless, no connection held.
|
|
76
|
+
// Use with queryAll/queryFirst/queryRun to execute against D1.
|
|
77
|
+
export const db = createQueryBuilder<DB>();
|
|
68
78
|
```
|
|
69
79
|
|
|
70
80
|
### Valibot → SQL type mapping
|
|
@@ -117,8 +127,9 @@ Creates (skips if already exists):
|
|
|
117
127
|
|
|
118
128
|
Directory resolution:
|
|
119
129
|
1. `--dir <path>` if provided
|
|
120
|
-
2.
|
|
121
|
-
3. `d1-kyt/`
|
|
130
|
+
2. `db/` if it contains a `config.ts` (default)
|
|
131
|
+
3. `d1-kyt/` if it contains a `config.ts` (legacy)
|
|
132
|
+
4. Parent of wrangler `migrations_dir` if not the project root
|
|
122
133
|
|
|
123
134
|
### `schema:diff <name>`
|
|
124
135
|
|
|
@@ -162,28 +173,15 @@ type NewUser = typeof users.$inferInsert;
|
|
|
162
173
|
// { email: string; name?: string | undefined; age?: number | undefined; ... id?: number }
|
|
163
174
|
```
|
|
164
175
|
|
|
165
|
-
### Building a DB type for Kysely
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
// db/index.ts
|
|
169
|
-
import { users } from './schema';
|
|
170
|
-
|
|
171
|
-
export type DB = {
|
|
172
|
-
users: typeof users.$inferSelect;
|
|
173
|
-
// ... add other tables
|
|
174
|
-
};
|
|
175
|
-
```
|
|
176
|
-
|
|
177
176
|
---
|
|
178
177
|
|
|
179
178
|
## Query Builder
|
|
180
179
|
|
|
180
|
+
`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.
|
|
181
|
+
|
|
181
182
|
```typescript
|
|
182
183
|
// src/queries.ts
|
|
183
|
-
import {
|
|
184
|
-
import type { DB } from './db';
|
|
185
|
-
|
|
186
|
-
const db = createQueryBuilder<DB>();
|
|
184
|
+
import { db } from './db/schema';
|
|
187
185
|
|
|
188
186
|
export const listUsers = () =>
|
|
189
187
|
db.selectFrom('users').selectAll().compile();
|
|
@@ -275,27 +273,6 @@ defineIndex(users, ['email'], {
|
|
|
275
273
|
|
|
276
274
|
---
|
|
277
275
|
|
|
278
|
-
## Legacy migrate API
|
|
279
|
-
|
|
280
|
-
The imperative migration DSL (`d1-kyt/migrate`) is still available but superseded by the schema-first approach above. It will be removed in a future major version.
|
|
281
|
-
|
|
282
|
-
```typescript
|
|
283
|
-
// d1-kyt/migrations/0001_create_users.ts
|
|
284
|
-
import { defineTable, createIndex } from 'd1-kyt/migrate';
|
|
285
|
-
|
|
286
|
-
const users = defineTable('users', (col) => ({
|
|
287
|
-
email: col.text().notNull(),
|
|
288
|
-
name: col.text(),
|
|
289
|
-
}));
|
|
290
|
-
|
|
291
|
-
export const migration = () => [
|
|
292
|
-
...users.sql,
|
|
293
|
-
createIndex(users, ['email'], { unique: true }),
|
|
294
|
-
];
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
276
|
## License
|
|
300
277
|
|
|
301
278
|
MIT
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { dirname, join, resolve } from 'node:path';
|
|
4
|
-
const VERSION = '0.5.
|
|
4
|
+
const VERSION = '0.5.2';
|
|
5
5
|
const HELP = `
|
|
6
6
|
d1-kyt v${VERSION} - Opinionated Cloudflare D1 + Kysely toolkit
|
|
7
7
|
|
|
@@ -15,13 +15,13 @@ Commands:
|
|
|
15
15
|
|
|
16
16
|
Options:
|
|
17
17
|
--dir <path> Directory for config/schema/snapshot (default: auto-detected
|
|
18
|
-
from wrangler migrations_dir parent, or "
|
|
18
|
+
from wrangler migrations_dir parent, or "db/")
|
|
19
19
|
--schema <path> Override schema file path (default: <dir>/schema.ts)
|
|
20
20
|
--help, -h Show this help message
|
|
21
21
|
--version, -v Show version
|
|
22
22
|
|
|
23
23
|
Examples:
|
|
24
|
-
d1-kyt init # auto-detect dir (db/
|
|
24
|
+
d1-kyt init # auto-detect dir (db/ by default)
|
|
25
25
|
d1-kyt init --dir db # use db/config.ts, db/schema.ts, db/schema.snapshot.jsonc
|
|
26
26
|
d1-kyt schema:diff create_users
|
|
27
27
|
d1-kyt schema:diff add_idx --schema src/schema.ts
|
|
@@ -77,11 +77,15 @@ function findExistingDir(dirFlag) {
|
|
|
77
77
|
const abs = resolve(process.cwd(), dirFlag);
|
|
78
78
|
return existsSync(join(abs, CONFIG_FILE)) ? abs : null;
|
|
79
79
|
}
|
|
80
|
-
// 1.
|
|
80
|
+
// 1. db/config.ts (default)
|
|
81
|
+
const defaultDir = resolve(process.cwd(), 'db');
|
|
82
|
+
if (existsSync(join(defaultDir, CONFIG_FILE)))
|
|
83
|
+
return defaultDir;
|
|
84
|
+
// 2. Legacy d1-kyt/config.ts
|
|
81
85
|
const legacy = resolve(process.cwd(), 'd1-kyt');
|
|
82
86
|
if (existsSync(join(legacy, CONFIG_FILE)))
|
|
83
87
|
return legacy;
|
|
84
|
-
//
|
|
88
|
+
// 3. Parent of wrangler migrations dir (e.g. src/ for src/migrations/)
|
|
85
89
|
const wrangler = readWranglerConfig();
|
|
86
90
|
if (wrangler) {
|
|
87
91
|
const parent = dirname(wrangler.migrationsDir);
|
|
@@ -103,7 +107,7 @@ function defaultInitDir(dirFlag) {
|
|
|
103
107
|
if (parent !== '.')
|
|
104
108
|
return resolve(process.cwd(), parent);
|
|
105
109
|
}
|
|
106
|
-
return resolve(process.cwd(), '
|
|
110
|
+
return resolve(process.cwd(), 'db');
|
|
107
111
|
}
|
|
108
112
|
async function readD1KytConfig(dir) {
|
|
109
113
|
const configPath = join(dir, CONFIG_FILE);
|
|
@@ -144,7 +148,7 @@ function cmdInit(dirFlag) {
|
|
|
144
148
|
// schema.ts
|
|
145
149
|
const schemaPath = join(dir, SCHEMA_FILE);
|
|
146
150
|
if (!existsSync(schemaPath)) {
|
|
147
|
-
writeFileSync(schemaPath, `import { defineTable, defineIndex } from 'd1-kyt/schema';\nimport * as v from 'valibot';\n\n// Define your tables here, then run: d1-kyt schema:diff <name>\n//\n// export const users = defineTable('users', {\n// email: v.string(), // TEXT NOT NULL\n// name: v.optional(v.string()), // TEXT (nullable)\n// age: v.optional(v.pipe(v.number(), v.integer())), // INTEGER (nullable)\n// prefs: v.optional(v.object({ theme: v.string() })), // TEXT JSON (nullable)\n// });\n//\n// export const usersEmailIdx = defineIndex(users, ['email'], { unique: true });\n`);
|
|
151
|
+
writeFileSync(schemaPath, `import { defineTable, defineIndex } from 'd1-kyt/schema';\nimport { createQueryBuilder } from 'd1-kyt';\nimport * as v from 'valibot';\n\n// Define your tables here, then run: d1-kyt schema:diff <name>\n//\n// export const users = defineTable('users', {\n// email: v.string(), // TEXT NOT NULL\n// name: v.optional(v.string()), // TEXT (nullable)\n// age: v.optional(v.pipe(v.number(), v.integer())), // INTEGER (nullable)\n// prefs: v.optional(v.object({ theme: v.string() })), // TEXT JSON (nullable)\n// });\n//\n// export const usersEmailIdx = defineIndex(users, ['email'], { unique: true });\n\n// Add each table to DB, then use \`db\` for type-safe query building.\nexport type DB = {\n // users: typeof users.$inferSelect;\n};\n\nexport const db = createQueryBuilder<DB>();\n`);
|
|
148
152
|
console.log(`Created: ${relDir}/${SCHEMA_FILE}`);
|
|
149
153
|
}
|
|
150
154
|
else {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,IAAI,GAAG;UACH,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBhB,CAAC;AAGF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAW7E,SAAS,kBAAkB;IACzB,MAAM,aAAa,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAE3E,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC9D,IAAI,KAAK;gBAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;iBAC5C,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;iBACxB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,EAAE,EAAE,cAAc;oBAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC;YACtE,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,EAAE;AACF,sEAAsE;AACtE,4CAA4C;AAC5C,oCAAoC;AACpC,qEAAqE;AACrE,8DAA8D;AAC9D,4EAA4E;AAC5E,qDAAqD;AACrD,+EAA+E;AAE/E,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C,+EAA+E;AAC/E,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzD,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|