@kattebak/typespec-drizzle-orm-generator 3.8.3 → 4.0.0

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 CHANGED
@@ -15,7 +15,7 @@ npm install @kattebak/typespec-drizzle-orm-generator
15
15
  ```typespec
16
16
  import "@kattebak/typespec-drizzle-orm-generator";
17
17
 
18
- using DrizzleEmitter;
18
+ using Drizzle;
19
19
 
20
20
  @entity("Author", "bookstore")
21
21
  @primaryKey("authors")
@@ -202,6 +202,24 @@ export const describeAuthor = (
202
202
 
203
203
  ## Decorators
204
204
 
205
+ Decorators live in the `Drizzle` namespace. Reference them qualified
206
+ (`@Drizzle.table`) or bring them into scope for a file with `using Drizzle;`.
207
+
208
+ `@minValue`, `@maxValue`, `@createdAt` and `@updatedAt` are names the TypeSpec
209
+ standard library and other emitters also declare. In a project that loads one of
210
+ those alongside this library, `using Drizzle;` leaves those four references
211
+ ambiguous — qualify them:
212
+
213
+ ```typespec
214
+ using Drizzle;
215
+
216
+ model Order {
217
+ @Drizzle.minValue(1)
218
+ @Drizzle.maxValue(5)
219
+ rating?: int32;
220
+ }
221
+ ```
222
+
205
223
  ### Defining entities
206
224
 
207
225
  ```typespec
@@ -320,10 +338,37 @@ Set `frontend` in your `tspconfig.yaml` to choose which TypeSpec vocabulary the
320
338
  The `remit` front-end maps an ElectroDB model to a table:
321
339
 
322
340
  - **Primary key** is the entity's own identity field, `<entity>Id`, as a single column. The ElectroDB primary index is a DynamoDB access pattern, not the entity's identity, so it becomes an ordinary secondary index. An entity with no `<entity>Id` field keeps the ElectroDB primary composite as its key.
323
- - Every `@index` becomes a named secondary index.
341
+ - Every `@index` becomes a named secondary index, and every `@indexDef` adds an index that exists in SQL only (see below).
324
342
  - **Enums** are text columns narrowed by a `$type` union, not pgEnums — a store that mirrors a DynamoDB port keeps enum values as strings and avoids an `ALTER TYPE` per new value.
325
343
  - A `collection` shared by two or more entities becomes an `ON DELETE CASCADE` foreign key from each member to the entity that owns the shared partition key (unless `foreign-keys: false`).
326
344
 
345
+ ### SQL-only indexes
346
+
347
+ `@indexDef` declares an index this generator emits and no one else reads. It is
348
+ the tool for an index the SQL schema needs but the DynamoDB table must not get:
349
+ `@index` is the ElectroDB vocabulary, so an `@index` added for a SQL predicate
350
+ also mints a DynamoDB secondary index — write amplification on every write, and
351
+ against a hard limit of five local secondary indexes per table.
352
+
353
+ ```typespec
354
+ @entity("threadMessage", "remit")
355
+ @index("ThreadMessage", { pk: [ThreadMessage.accountConfigId], sk: [ThreadMessage.threadMessageId] })
356
+ @Drizzle.indexDef(
357
+ "tm_by_mailbox_category_date",
358
+ [
359
+ ThreadMessage.accountConfigId,
360
+ ThreadMessage.mailboxId,
361
+ ThreadMessage.category,
362
+ ThreadMessage.sentDate
363
+ ]
364
+ )
365
+ model ThreadMessage { ... }
366
+ ```
367
+
368
+ Both front-ends emit it, and the name is used verbatim, so it is the name your
369
+ migration history is keyed on. An `@indexDef` on a model the selected front-end
370
+ generates no table for is a compile error, not a dropped index.
371
+
327
372
  ```yaml
328
373
  options:
329
374
  "@kattebak/typespec-drizzle-orm-generator":
@@ -16,7 +16,7 @@ function stringifyValue(value) {
16
16
  case "undefined":
17
17
  return "undefined";
18
18
  case "string":
19
- return `"${value}"`;
19
+ return JSON.stringify(value);
20
20
  case "number":
21
21
  case "boolean":
22
22
  return String(value);
@@ -1 +1 @@
1
- {"version":3,"file":"stringify.js","sourceRoot":"","sources":["../../src/codegen/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,OAAO,OAAO;IACT,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CAClB;CACF;AAED,SAAS,kBAAkB,CAAC,IAAa,EAA4B;IACnE,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACZ,IAA0B,CAAC,IAAI,KAAK,kBAAkB,CACxD,CAAC;AAAA,CACH;AAED,SAAS,cAAc,CAAC,KAAc,EAAU;IAC9C,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,GAAG,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,QAAQ,EAAE,CAAC;YACd,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YAClC,IAAI,KAAK,YAAY,OAAO;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;YAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO,eAAe,CAAC,KAAgC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,KAAK,EAAE,CAAC,CAAC;AAAA,CAC5D;AAED,SAAS,cAAc,CAAC,KAAgB,EAAU;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,KAAK,GAAG,CAAC;AAAA,CACrB;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAc,EAAoB;IACxE,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;QAClE,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,UAAW,GAAwB,CAAC,IAAI,EAAE,CACpF,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC;AAAA,CACZ;AAED,MAAM,UAAU,eAAe,CAAC,MAA+B,EAAU;IACvE,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,CAC3B"}
1
+ {"version":3,"file":"stringify.js","sourceRoot":"","sources":["../../src/codegen/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,OAAO,OAAO;IACT,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CAClB;CACF;AAED,SAAS,kBAAkB,CAAC,IAAa,EAA4B;IACnE,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACZ,IAA0B,CAAC,IAAI,KAAK,kBAAkB,CACxD,CAAC;AAAA,CACH;AAED,SAAS,cAAc,CAAC,KAAc,EAAU;IAC9C,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,KAAK,QAAQ,EAAE,CAAC;YACd,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YAClC,IAAI,KAAK,YAAY,OAAO;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;YAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO,eAAe,CAAC,KAAgC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,KAAK,EAAE,CAAC,CAAC;AAAA,CAC5D;AAED,SAAS,cAAc,CAAC,KAAgB,EAAU;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,KAAK,GAAG,CAAC;AAAA,CACrB;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,KAAc,EAAoB;IACxE,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;QAClE,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,UAAW,GAAwB,CAAC,IAAI,EAAE,CACpF,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC;AAAA,CACZ;AAED,MAAM,UAAU,eAAe,CAAC,MAA+B,EAAU;IACvE,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAAA,CAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,aAAa,EACtB,eAAe,UAAO,GACrB,MAAM,CAyCR"}
1
+ {"version":3,"file":"column-mapper.d.ts","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,aAAa,EACtB,eAAe,UAAO,GACrB,MAAM,CAyCR"}
@@ -39,6 +39,12 @@ function mapDefault(value) {
39
39
  if (typeof value === "string") {
40
40
  return quoted(value);
41
41
  }
42
+ // Drizzle takes a JSON column's default as the JS value it serializes, so an
43
+ // array default has to survive as a literal. `String([])` renders the empty
44
+ // string, which is not valid JS in that position.
45
+ if (Array.isArray(value)) {
46
+ return JSON.stringify(value);
47
+ }
42
48
  return String(value);
43
49
  }
44
50
  //# sourceMappingURL=column-mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column-mapper.js","sourceRoot":"","sources":["../../src/generators/column-mapper.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  import type { EmitContext } from "@typespec/compiler";
2
2
  import type { Dialect } from "./generators/dialect.js";
3
+ /**
4
+ * Binds every decorator exported from this module into the `Drizzle` TypeSpec
5
+ * namespace, matching `namespace Drizzle;` in `tsp/main.tsp`. Without it the
6
+ * compiler binds them globally, where `@createdAt`, `@updatedAt`, `@minValue`
7
+ * and `@maxValue` collide with the same names declared by the TypeSpec standard
8
+ * library and by sibling emitters.
9
+ */
10
+ export declare const namespace = "Drizzle";
3
11
  export { $check, $columnVisibility, $compositeUnique, $createdAt, $foreignKeyDef, $indexDef, $junction, $maxValue, $minValue, $pk, $primaryKey, $references, $table, $unique, $updatedAt, $uuid, } from "./decorators.js";
4
12
  export { $lib } from "./lib.js";
5
13
  export interface EmitterOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIvD,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjF"}
package/dist/index.js CHANGED
@@ -2,6 +2,14 @@ import { emitFile, resolvePath } from "@typespec/compiler";
2
2
  import { assemblePackage } from "./assembler.js";
3
3
  import { buildIR } from "./ir/builder.js";
4
4
  import { buildRemitIR } from "./ir/remit-builder.js";
5
+ /**
6
+ * Binds every decorator exported from this module into the `Drizzle` TypeSpec
7
+ * namespace, matching `namespace Drizzle;` in `tsp/main.tsp`. Without it the
8
+ * compiler binds them globally, where `@createdAt`, `@updatedAt`, `@minValue`
9
+ * and `@maxValue` collide with the same names declared by the TypeSpec standard
10
+ * library and by sibling emitters.
11
+ */
12
+ export const namespace = "Drizzle";
5
13
  export { $check, $columnVisibility, $compositeUnique, $createdAt, $foreignKeyDef, $indexDef, $junction, $maxValue, $minValue, $pk, $primaryKey, $references, $table, $unique, $updatedAt, $uuid, } from "./decorators.js";
6
14
  export { $lib } from "./lib.js";
7
15
  export async function $onEmit(context) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AA2ChC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoC,EAAiB;IACjF,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM;QAAE,OAAO;IAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GACrB,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;QAClC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB;QAChE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;QACxC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK;KACpD,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAErD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC;YACrD,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AAAA,CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC;AAEnC,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,GAAG,EACH,WAAW,EACX,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AA2ChC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoC,EAAiB;IACjF,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM;QAAE,OAAO;IAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GACrB,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;QAClC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC3D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB;QAChE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;QACxC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI;QAC5C,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK;KACpD,CAAC;IAEF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAErD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC;YACrD,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AAAA,CACF"}
@@ -1,12 +1,5 @@
1
- import type { EnumDef, TableDef } from "./types.js";
2
- /**
3
- * Minimal Program-like interface for state access.
4
- * Allows testing without importing the full @typespec/compiler Program.
5
- */
6
- export interface ProgramStateAccess {
7
- stateMap(key: symbol): Map<unknown, unknown>;
8
- stateSet(key: symbol): Set<unknown>;
9
- }
1
+ import type { EnumDef, ProgramStateAccess, TableDef } from "./types.js";
2
+ export type { ProgramStateAccess } from "./types.js";
10
3
  /**
11
4
  * Builds IR from TypeSpec program state populated by decorators.
12
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EAKP,QAAQ,EAGT,MAAM,YAAY,CAAC;AAiCpB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG;IACpD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CA2KA"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,OAAO,EAKP,kBAAkB,EAClB,QAAQ,EAGT,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2BrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG;IACpD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CAqKA"}
@@ -1,6 +1,8 @@
1
1
  import { getMaxLength } from "@typespec/compiler";
2
2
  import { toSnakeCase } from "../generators/naming.js";
3
3
  import { StateKeys } from "../lib.js";
4
+ import { readDefaultValue } from "./default-value.js";
5
+ import { readIndexDefs, reportUnclaimedIndexDefs, toModelProperties } from "./index-def.js";
4
6
  /**
5
7
  * Builds IR from TypeSpec program state populated by decorators.
6
8
  *
@@ -24,6 +26,7 @@ export function buildIR(program) {
24
26
  const tables = [];
25
27
  const enums = [];
26
28
  const seenEnums = new Set();
29
+ const claimed = new Set();
27
30
  const tableState = program.stateMap(StateKeys.table);
28
31
  const pkTableState = program.stateMap(StateKeys.primaryKey);
29
32
  const pkFieldState = program.stateSet(StateKeys.pk);
@@ -35,7 +38,6 @@ export function buildIR(program) {
35
38
  const uniqueState = program.stateSet(StateKeys.unique);
36
39
  const compositeUniqueState = program.stateMap(StateKeys.compositeUnique);
37
40
  const checkState = program.stateMap(StateKeys.check);
38
- const indexDefState = program.stateMap(StateKeys.indexDef);
39
41
  const foreignKeyDefState = program.stateMap(StateKeys.foreignKeyDef);
40
42
  const minValueState = program.stateMap(StateKeys.minValue);
41
43
  const maxValueState = program.stateMap(StateKeys.maxValue);
@@ -44,6 +46,7 @@ export function buildIR(program) {
44
46
  const model = target;
45
47
  if (model.kind !== "Model")
46
48
  continue;
49
+ claimed.add(model);
47
50
  const tableMeta = meta;
48
51
  const pkMeta = pkTableState.get(model);
49
52
  const tableName = pkMeta?.tableName ?? tableMeta.name;
@@ -121,12 +124,9 @@ export function buildIR(program) {
121
124
  if (vis) {
122
125
  field.visibility = vis;
123
126
  }
124
- // Default value from TypeSpec (prop.default)
125
- if ("default" in modelProp && modelProp.default !== undefined) {
126
- const defaultVal = extractDefaultValue(modelProp.default);
127
- if (defaultVal !== undefined) {
128
- field.defaultValue = defaultVal;
129
- }
127
+ const defaultVal = readDefaultValue(modelProp);
128
+ if (defaultVal !== undefined) {
129
+ field.defaultValue = defaultVal;
130
130
  }
131
131
  fields.push(field);
132
132
  }
@@ -137,13 +137,7 @@ export function buildIR(program) {
137
137
  name: cu.name,
138
138
  columns: toModelProperties(cu.columns).map((c) => c.name),
139
139
  }));
140
- // Indexes
141
- const indexDefs = indexDefState.get(model);
142
- const indexes = (indexDefs ?? []).map((idx) => ({
143
- name: idx.name,
144
- columns: toModelProperties(idx.columns).map((c) => c.name),
145
- unique: idx.unique,
146
- }));
140
+ const indexes = readIndexDefs(program, model);
147
141
  // Composite foreign keys
148
142
  const fkDefs = foreignKeyDefState.get(model);
149
143
  const foreignKeys = (fkDefs ?? []).map((fk) => {
@@ -172,23 +166,9 @@ export function buildIR(program) {
172
166
  uniqueConstraints,
173
167
  });
174
168
  }
169
+ reportUnclaimedIndexDefs(program, claimed);
175
170
  return { tables, enums };
176
171
  }
177
- /**
178
- * Normalizes a `ModelProperty[]` decorator argument.
179
- *
180
- * Passed as a plain array when a decorator is invoked directly (unit tests), and
181
- * as a marshalled tuple value (`{ values: ModelProperty[] }`) when the emitter
182
- * runs against compiled TypeSpec.
183
- */
184
- function toModelProperties(columns) {
185
- if (Array.isArray(columns))
186
- return columns;
187
- if (columns && typeof columns === "object" && "values" in columns) {
188
- return columns.values;
189
- }
190
- throw new Error("Expected a ModelProperty[] or tuple value for decorator columns");
191
- }
192
172
  function resolveFieldType(prop, uuidMeta, program) {
193
173
  if (uuidMeta) {
194
174
  return { kind: "uuid", encoding: uuidMeta.encoding };
@@ -236,23 +216,4 @@ function resolveScalarType(scalar, program) {
236
216
  }
237
217
  return { kind: "text" };
238
218
  }
239
- function extractDefaultValue(value) {
240
- if (value === null || value === undefined)
241
- return undefined;
242
- // TypeSpec numeric/string/boolean literal values
243
- if (typeof value === "object" && value !== null && "value" in value) {
244
- return value.value;
245
- }
246
- // Enum member default — extract the value or name
247
- if (typeof value === "object" && value !== null && "kind" in value) {
248
- const typed = value;
249
- if (typed.kind === "EnumMember") {
250
- return typed.value !== undefined ? typed.value : typed.name;
251
- }
252
- }
253
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
254
- return value;
255
- }
256
- return undefined;
257
- }
258
219
  //# sourceMappingURL=builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ir/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ModelProperty } from "@typespec/compiler";
2
+ import type { DefaultValue } from "./types.js";
3
+ /**
4
+ * Reads a model property's TypeSpec default into the literal the column default
5
+ * is emitted from.
6
+ *
7
+ * Three shapes reach here. Compiled TypeSpec sets `defaultValue` to a checked
8
+ * `Value` from the compiler's discriminated union. Older compilers set `default`
9
+ * instead. Direct decorator invocation (unit tests over mock models) supplies a
10
+ * bare JS primitive, a raw `EnumMember`, or a `{ value }` literal wrapper.
11
+ */
12
+ export declare function readDefaultValue(prop: ModelProperty): DefaultValue | undefined;
13
+ //# sourceMappingURL=default-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-value.d.ts","sourceRoot":"","sources":["../../src/ir/default-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAS,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAS9E"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Reads a model property's TypeSpec default into the literal the column default
3
+ * is emitted from.
4
+ *
5
+ * Three shapes reach here. Compiled TypeSpec sets `defaultValue` to a checked
6
+ * `Value` from the compiler's discriminated union. Older compilers set `default`
7
+ * instead. Direct decorator invocation (unit tests over mock models) supplies a
8
+ * bare JS primitive, a raw `EnumMember`, or a `{ value }` literal wrapper.
9
+ */
10
+ export function readDefaultValue(prop) {
11
+ const legacy = prop.default;
12
+ const raw = prop.defaultValue ?? legacy;
13
+ if (raw === undefined || raw === null)
14
+ return undefined;
15
+ if (isPrimitive(raw))
16
+ return raw;
17
+ if (isValue(raw))
18
+ return fromValue(raw);
19
+ if (isEnumMember(raw))
20
+ return fromEnumMember(raw);
21
+ if (isLiteralWrapper(raw))
22
+ return raw.value;
23
+ return undefined;
24
+ }
25
+ function fromValue(value) {
26
+ switch (value.valueKind) {
27
+ case "StringValue":
28
+ case "BooleanValue":
29
+ return value.value;
30
+ case "NumericValue":
31
+ return value.value.asNumber() ?? value.value.asBigInt() ?? undefined;
32
+ case "EnumValue":
33
+ return fromEnumMember(value.value);
34
+ // Only an empty array default is expressible as a column default. A JSON
35
+ // column declared `= #[]` otherwise emits notNull with no default, so a row
36
+ // written without the field fails at insert time instead of getting the
37
+ // default the schema promises.
38
+ case "ArrayValue":
39
+ return value.values.length === 0 ? [] : undefined;
40
+ default:
41
+ return undefined;
42
+ }
43
+ }
44
+ function fromEnumMember(member) {
45
+ return member.value ?? member.name;
46
+ }
47
+ function isPrimitive(value) {
48
+ const kind = typeof value;
49
+ return kind === "string" || kind === "number" || kind === "bigint" || kind === "boolean";
50
+ }
51
+ function isValue(value) {
52
+ return isRecord(value) && value.entityKind === "Value";
53
+ }
54
+ function isEnumMember(value) {
55
+ return isRecord(value) && value.kind === "EnumMember";
56
+ }
57
+ function isLiteralWrapper(value) {
58
+ return isRecord(value) && isPrimitive(value.value);
59
+ }
60
+ function isRecord(value) {
61
+ return typeof value === "object" && value !== null;
62
+ }
63
+ //# sourceMappingURL=default-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-value.js","sourceRoot":"","sources":["../../src/ir/default-value.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB,EAA4B;IAC9E,MAAM,MAAM,GAAI,IAA8C,CAAC,OAAO,CAAC;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;IACxC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AAAA,CAClB;AAED,SAAS,SAAS,CAAC,KAAY,EAA4B;IACzD,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,aAAa,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,KAAK,cAAc;YACjB,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC;QACvE,KAAK,WAAW;YACd,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,yEAAyE;QACzE,4EAA4E;QAC5E,wEAAwE;QACxE,+BAA+B;QAC/B,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AAAA,CACF;AAED,SAAS,cAAc,CAAC,MAAkB,EAAgB;IACxD,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC;AAAA,CACpC;AAED,SAAS,WAAW,CAAC,KAAc,EAA+C;IAChF,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC;AAAA,CAC1F;AAED,SAAS,OAAO,CAAC,KAAc,EAAkB;IAC/C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;AAAA,CACxD;AAED,SAAS,YAAY,CAAC,KAAc,EAAuB;IACzD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AAAA,CACvD;AAED,SAAS,gBAAgB,CAAC,KAAc,EAA0D;IAChG,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAAA,CACpD;AAED,SAAS,QAAQ,CAAC,KAAc,EAAoC;IAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,CACpD"}
@@ -0,0 +1,31 @@
1
+ import type { Model, ModelProperty } from "@typespec/compiler";
2
+ import type { IndexDef, ProgramStateAccess } from "./types.js";
3
+ /**
4
+ * Reads the `@indexDef` state for one model into IR indexes.
5
+ *
6
+ * `@indexDef` is the SQL-only index declaration: it lives in this library's own
7
+ * state key, so a sibling emitter reading `@index` (the ElectroDB vocabulary the
8
+ * remit front-end also consumes) never sees it and mints no secondary index of
9
+ * its own. Both front-ends must therefore read it from here — a front-end that
10
+ * derives indexes only from the vocabulary it shares with another emitter makes
11
+ * the decorator inert.
12
+ *
13
+ * Index names are taken verbatim: the author named the index, and the migration
14
+ * history is keyed on that name.
15
+ */
16
+ export declare function readIndexDefs(program: ProgramStateAccess, model: Model): IndexDef[];
17
+ /**
18
+ * Reports every `@indexDef` that no front-end claimed. An index silently
19
+ * dropped because its model produced no table is the failure mode `@indexDef`
20
+ * is most prone to, and it is invisible in the generated output.
21
+ */
22
+ export declare function reportUnclaimedIndexDefs(program: ProgramStateAccess, claimed: Set<Model>): void;
23
+ /**
24
+ * Normalizes a `ModelProperty[]` decorator argument.
25
+ *
26
+ * Passed as a plain array when a decorator is invoked directly (unit tests), and
27
+ * as a marshalled tuple value (`{ values: ModelProperty[] }`) when the emitter
28
+ * runs against compiled TypeSpec.
29
+ */
30
+ export declare function toModelProperties(columns: unknown): ModelProperty[];
31
+ //# sourceMappingURL=index-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-def.d.ts","sourceRoot":"","sources":["../../src/ir/index-def.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQ/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAWnF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAc/F;AAoBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAMnE"}
@@ -0,0 +1,69 @@
1
+ import { $lib, StateKeys } from "../lib.js";
2
+ /**
3
+ * Reads the `@indexDef` state for one model into IR indexes.
4
+ *
5
+ * `@indexDef` is the SQL-only index declaration: it lives in this library's own
6
+ * state key, so a sibling emitter reading `@index` (the ElectroDB vocabulary the
7
+ * remit front-end also consumes) never sees it and mints no secondary index of
8
+ * its own. Both front-ends must therefore read it from here — a front-end that
9
+ * derives indexes only from the vocabulary it shares with another emitter makes
10
+ * the decorator inert.
11
+ *
12
+ * Index names are taken verbatim: the author named the index, and the migration
13
+ * history is keyed on that name.
14
+ */
15
+ export function readIndexDefs(program, model) {
16
+ const defs = program.stateMap(StateKeys.indexDef).get(model);
17
+ if (!defs)
18
+ return [];
19
+ return defs.map((def) => ({
20
+ name: def.name,
21
+ columns: toModelProperties(def.columns).map((column) => resolveColumn(program, model, def.name, column)),
22
+ unique: def.unique ?? false,
23
+ }));
24
+ }
25
+ /**
26
+ * Reports every `@indexDef` that no front-end claimed. An index silently
27
+ * dropped because its model produced no table is the failure mode `@indexDef`
28
+ * is most prone to, and it is invisible in the generated output.
29
+ */
30
+ export function reportUnclaimedIndexDefs(program, claimed) {
31
+ for (const [target, defs] of program.stateMap(StateKeys.indexDef)) {
32
+ const model = target;
33
+ if (claimed.has(model))
34
+ continue;
35
+ for (const def of defs) {
36
+ program.reportDiagnostic($lib.createDiagnostic({
37
+ code: "index-def-dropped",
38
+ target: model,
39
+ format: { index: def.name, model: model.name },
40
+ }));
41
+ }
42
+ }
43
+ }
44
+ function resolveColumn(program, model, index, column) {
45
+ if (!model.properties.has(column.name)) {
46
+ program.reportDiagnostic($lib.createDiagnostic({
47
+ code: "index-def-unknown-column",
48
+ target: column,
49
+ format: { index, column: column.name, model: model.name },
50
+ }));
51
+ }
52
+ return column.name;
53
+ }
54
+ /**
55
+ * Normalizes a `ModelProperty[]` decorator argument.
56
+ *
57
+ * Passed as a plain array when a decorator is invoked directly (unit tests), and
58
+ * as a marshalled tuple value (`{ values: ModelProperty[] }`) when the emitter
59
+ * runs against compiled TypeSpec.
60
+ */
61
+ export function toModelProperties(columns) {
62
+ if (Array.isArray(columns))
63
+ return columns;
64
+ if (columns && typeof columns === "object" && "values" in columns) {
65
+ return columns.values;
66
+ }
67
+ throw new Error("Expected a ModelProperty[] or tuple value for decorator columns");
68
+ }
69
+ //# sourceMappingURL=index-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-def.js","sourceRoot":"","sources":["../../src/ir/index-def.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAS5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,OAA2B,EAAE,KAAY,EAAc;IACnF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAA4B,CAAC;IACxF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrD,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAChD;QACD,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;KAC5B,CAAC,CAAC,CAAC;AAAA,CACL;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAA2B,EAAE,OAAmB,EAAQ;IAC/F,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,MAAe,CAAC;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,MAAM,GAAG,IAAI,IAAmB,EAAE,CAAC;YACtC,OAAO,CAAC,gBAAgB,CACtB,IAAI,CAAC,gBAAgB,CAAC;gBACpB,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;aAC/C,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;AAAA,CACF;AAED,SAAS,aAAa,CACpB,OAA2B,EAC3B,KAAY,EACZ,KAAa,EACb,MAAqB,EACb;IACR,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,gBAAgB,CACtB,IAAI,CAAC,gBAAgB,CAAC;YACpB,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;SAC1D,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AAAA,CACpB;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAmB;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAA0B,CAAC;IAC9D,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QAClE,OAAQ,OAAuC,CAAC,MAAM,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AAAA,CACpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"remit-builder.d.ts","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EACV,OAAO,EAKP,QAAQ,EACT,MAAM,YAAY,CAAC;AAiCpB,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,iBAAsB,GAC9B;IACD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CAoGA"}
1
+ {"version":3,"file":"remit-builder.d.ts","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EACV,OAAO,EAKP,QAAQ,EACT,MAAM,YAAY,CAAC;AAoCpB,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,iBAAsB,GAC9B;IACD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,CA0GA"}
@@ -1,10 +1,13 @@
1
1
  import { navigateProgram } from "@typespec/compiler";
2
2
  import { toSnakeCase } from "../generators/naming.js";
3
+ import { readDefaultValue } from "./default-value.js";
4
+ import { readIndexDefs, reportUnclaimedIndexDefs } from "./index-def.js";
3
5
  export function buildRemitIR(program, options = {}) {
4
6
  const foreignKeys = options.foreignKeys ?? true;
5
7
  const idDefault = options.idDefault ?? false;
6
8
  const tables = [];
7
9
  const enums = [];
10
+ const claimed = new Set();
8
11
  const models = [];
9
12
  navigateProgram(program, {
10
13
  model(model) {
@@ -17,6 +20,7 @@ export function buildRemitIR(program, options = {}) {
17
20
  const entityDec = firstDecorator(model, "@entity");
18
21
  if (!entityDec)
19
22
  continue;
23
+ claimed.add(model);
20
24
  const entityName = stringArg(entityDec, 0) ?? lowerFirst(model.name);
21
25
  const service = stringArg(entityDec, 1) ?? "remit";
22
26
  const sqlTableName = toSnakeCase(entityName);
@@ -46,7 +50,7 @@ export function buildRemitIR(program, options = {}) {
46
50
  if (idDefault && propName === singlePkColumn && resolved.type.kind === "text") {
47
51
  field.autoGenerateId = true;
48
52
  }
49
- const defaultValue = extractDefaultValue(prop);
53
+ const defaultValue = readDefaultValue(prop);
50
54
  if (defaultValue !== undefined)
51
55
  field.defaultValue = defaultValue;
52
56
  fields.push(field);
@@ -60,6 +64,7 @@ export function buildRemitIR(program, options = {}) {
60
64
  unique: false,
61
65
  }))
62
66
  .filter((idx) => !sameColumns(idx.columns));
67
+ indexes.push(...readIndexDefs(program, model));
63
68
  for (const pattern of patterns) {
64
69
  if (!pattern.collection)
65
70
  continue;
@@ -88,6 +93,7 @@ export function buildRemitIR(program, options = {}) {
88
93
  }
89
94
  if (foreignKeys)
90
95
  applyCollectionForeignKeys(tables, collections);
96
+ reportUnclaimedIndexDefs(program, claimed);
91
97
  return { tables, enums };
92
98
  }
93
99
  /**
@@ -249,27 +255,6 @@ function resolveScalarType(scalar) {
249
255
  return resolveScalarType(scalar.baseScalar);
250
256
  return { kind: "text" };
251
257
  }
252
- function extractDefaultValue(prop) {
253
- const value = prop.defaultValue ?? prop.default;
254
- if (value === null || value === undefined)
255
- return undefined;
256
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
257
- return value;
258
- }
259
- if (typeof value === "object" && value !== null) {
260
- const typed = value;
261
- if ("value" in typed && typed.value !== undefined) {
262
- const inner = typed.value;
263
- if (typeof inner === "string" || typeof inner === "number" || typeof inner === "boolean") {
264
- return inner;
265
- }
266
- }
267
- if (typed.kind === "EnumMember") {
268
- return typed.value !== undefined ? typed.value : typed.name;
269
- }
270
- }
271
- return undefined;
272
- }
273
258
  function isModel(value) {
274
259
  return !!value && typeof value === "object" && value.kind === "Model";
275
260
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remit-builder.js","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remit-builder.js","sourceRoot":"","sources":["../../src/ir/remit-builder.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ import type { Diagnostic } from "@typespec/compiler";
2
+ /**
3
+ * Minimal Program surface the IR builders use: decorator state plus a place to
4
+ * raise diagnostics. Narrow enough that a mock program can drive them in tests.
5
+ */
6
+ export interface ProgramStateAccess {
7
+ stateMap(key: symbol): Map<unknown, unknown>;
8
+ stateSet(key: symbol): Set<unknown>;
9
+ reportDiagnostic(diagnostic: Diagnostic): void;
10
+ }
1
11
  /** UUID encoding options for @uuid decorator */
2
12
  export type UuidEncoding = "base36" | "canonical" | "raw";
3
13
  /** Resolved column type after applying all decorators */
@@ -31,6 +41,8 @@ export type FieldType = {
31
41
  kind: "textEnum";
32
42
  values: string[];
33
43
  };
44
+ /** Literal a column default is emitted from */
45
+ export type DefaultValue = string | number | bigint | boolean | readonly DefaultValue[];
34
46
  /** ON DELETE / ON UPDATE referential action for a foreign key */
35
47
  export type ReferentialAction = "cascade" | "restrict" | "no action" | "set null" | "set default";
36
48
  /** Column-level field definition extracted from a TypeSpec model property */
@@ -57,7 +69,7 @@ export interface FieldDef {
57
69
  createdAt: boolean;
58
70
  updatedAt: boolean;
59
71
  visibility?: "read";
60
- defaultValue?: unknown;
72
+ defaultValue?: DefaultValue;
61
73
  constraints?: {
62
74
  minValue?: number;
63
75
  maxValue?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
2
- [code: string]: import("@typespec/compiler").DiagnosticMessages;
2
+ "index-def-dropped": {
3
+ readonly default: import("@typespec/compiler").CallableMessage<["index", "model"]>;
4
+ };
5
+ "index-def-unknown-column": {
6
+ readonly default: import("@typespec/compiler").CallableMessage<["index", "column", "model"]>;
7
+ };
3
8
  }, Record<string, any>, "check" | "columnVisibility" | "compositeUnique" | "createdAt" | "foreignKeyDef" | "indexDef" | "junction" | "maxValue" | "minValue" | "pk" | "primaryKey" | "references" | "table" | "unique" | "updatedAt" | "uuid">;
4
9
  export declare const StateKeys: Record<"check" | "columnVisibility" | "compositeUnique" | "createdAt" | "foreignKeyDef" | "indexDef" | "junction" | "maxValue" | "minValue" | "pk" | "primaryKey" | "references" | "table" | "unique" | "updatedAt" | "uuid", symbol>;
5
10
  //# sourceMappingURL=lib.d.ts.map
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI;;8OAqBN,CAAC;AAEZ,eAAO,MAAM,SAAS,uOAAiB,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI;;;;;;;8OAkCN,CAAC;AAEZ,eAAO,MAAM,SAAS,uOAAiB,CAAC"}
package/dist/lib.js CHANGED
@@ -1,7 +1,20 @@
1
- import { createTypeSpecLibrary } from "@typespec/compiler";
1
+ import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler";
2
2
  export const $lib = createTypeSpecLibrary({
3
3
  name: "@kattebak/typespec-drizzle-orm-generator",
4
- diagnostics: {},
4
+ diagnostics: {
5
+ "index-def-dropped": {
6
+ severity: "error",
7
+ messages: {
8
+ default: paramMessage `@indexDef "${"index"}" is declared on model ${"model"}, which this front-end generates no table for. Mark the model with @table (drizzle front-end) or @entity (remit front-end), or remove the index.`,
9
+ },
10
+ },
11
+ "index-def-unknown-column": {
12
+ severity: "error",
13
+ messages: {
14
+ default: paramMessage `@indexDef "${"index"}" references column "${"column"}", which is not a property of model ${"model"}.`,
15
+ },
16
+ },
17
+ },
5
18
  state: {
6
19
  table: { description: "State for @table decorator" },
7
20
  primaryKey: { description: "State for @primaryKey decorator" },
@@ -14,8 +27,8 @@ export const $lib = createTypeSpecLibrary({
14
27
  unique: { description: "State for @unique decorator (single column)" },
15
28
  compositeUnique: { description: "State for @unique({ name, columns }) (model-level)" },
16
29
  check: { description: "State for @check decorator" },
17
- indexDef: { description: "State for @index decorator" },
18
- foreignKeyDef: { description: "State for @foreignKey decorator" },
30
+ indexDef: { description: "State for @indexDef decorator" },
31
+ foreignKeyDef: { description: "State for @foreignKeyDef decorator" },
19
32
  minValue: { description: "State for @minValue decorator" },
20
33
  maxValue: { description: "State for @maxValue decorator" },
21
34
  columnVisibility: { description: "State for @columnVisibility decorator" },
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACxC,IAAI,EAAE,0CAA0C;IAChD,WAAW,EAAE,EAAE;IACf,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACpD,UAAU,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAC9D,EAAE,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;QACjE,UAAU,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAC9D,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,IAAI,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE;QAClD,SAAS,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC5D,SAAS,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC5D,MAAM,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE;QACtE,eAAe,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE;QACtF,KAAK,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACpD,QAAQ,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACvD,aAAa,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QACjE,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,gBAAgB,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE;KAC3E;CACO,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEzE,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACxC,IAAI,EAAE,0CAA0C;IAChD,WAAW,EAAE;QACX,mBAAmB,EAAE;YACnB,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE;gBACR,OAAO,EAAE,YAAY,CAAA,cAAc,OAAO,0BAA0B,OAAO,kJAAkJ;aAC9N;SACF;QACD,0BAA0B,EAAE;YAC1B,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE;gBACR,OAAO,EAAE,YAAY,CAAA,cAAc,OAAO,wBAAwB,QAAQ,uCAAuC,OAAO,GAAG;aAC5H;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACpD,UAAU,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAC9D,EAAE,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE;QACjE,UAAU,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAC9D,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,IAAI,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE;QAClD,SAAS,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC5D,SAAS,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAC5D,MAAM,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE;QACtE,eAAe,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE;QACtF,KAAK,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE;QACpD,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,aAAa,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE;QACpE,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,QAAQ,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC1D,gBAAgB,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE;KAC3E;CACO,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kattebak/typespec-drizzle-orm-generator",
3
- "version": "3.8.3",
3
+ "version": "4.0.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -60,6 +60,10 @@
60
60
  "publishConfig": {
61
61
  "access": "public"
62
62
  },
63
+ "allowScripts": {
64
+ "better-sqlite3": true,
65
+ "esbuild": true
66
+ },
63
67
  "engines": {
64
68
  "node": ">=22.0.0"
65
69
  }
package/tsp/main.tsp CHANGED
@@ -2,6 +2,17 @@ import "../dist/index.js";
2
2
 
3
3
  using TypeSpec.Reflection;
4
4
 
5
+ /**
6
+ * Decorators of the Drizzle ORM generator.
7
+ *
8
+ * Namespaced, not global: `@createdAt`, `@updatedAt`, `@minValue` and `@maxValue`
9
+ * are names other libraries and the TypeSpec standard library also declare, and a
10
+ * global declaration makes every reference in a project that loads both ambiguous.
11
+ * Reference these as `@Drizzle.table`, or bring them into scope for a file with
12
+ * `using Drizzle;` when nothing else in that file declares the same names.
13
+ */
14
+ namespace Drizzle;
15
+
5
16
  extern dec table(target: Model, name: valueof string, service: valueof string);
6
17
  extern dec primaryKey(target: Model, tableName: valueof string);
7
18
  extern dec pk(target: ModelProperty);
@@ -17,6 +28,15 @@ extern dec updatedAt(target: ModelProperty);
17
28
  extern dec unique(target: ModelProperty);
18
29
  extern dec compositeUnique(target: Model, name: valueof string, columns: ModelProperty[]);
19
30
  extern dec check(target: ModelProperty, expression: valueof string);
31
+
32
+ /**
33
+ * Declares an index that exists in SQL only.
34
+ *
35
+ * Unlike a vocabulary shared with another emitter (`@index` in the ElectroDB
36
+ * vocabulary the remit front-end reads), `@indexDef` is read by this generator
37
+ * alone, so it never becomes a secondary index in another emitter's output. Both
38
+ * front-ends emit it. The name is used verbatim.
39
+ */
20
40
  extern dec indexDef(target: Model, name: valueof string, columns: ModelProperty[], unique?: valueof boolean);
21
41
  extern dec foreignKeyDef(target: Model, name: valueof string, columns: ModelProperty[], foreignColumns: ModelProperty[]);
22
42
  extern dec minValue(target: ModelProperty, value: valueof int32);