@vibeorm/dsl 2.2.3 → 2.3.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 +8 -0
- package/dist/generator/prisma.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -17
- package/dist/index.js.map +7 -7
- package/dist/model.d.ts.map +1 -1
- package/dist/relation-plan.d.ts +3 -1
- package/dist/relation-plan.d.ts.map +1 -1
- package/dist/to-ir.d.ts.map +1 -1
- package/dist/types.d.ts +7 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -89,6 +89,14 @@ Physical index names use `map`, separately from a compound unique's client-selec
|
|
|
89
89
|
indexes: (i) => [i.on(["arrival"], { map: "arrival_lookup" })],
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
+
On PostgreSQL and PGlite a non-unique index can set an operator class per field with `ops`, keyed by field name, each value a qualified name:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
indexes: (i) => [i.on(["email"], { ops: { email: { namespace: "pg_catalog", name: "text_pattern_ops" } } })],
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`ops` on `i.unique(...)` is refused (`VIBE_UNSUPPORTED_CAPABILITY`), as are operator classes on SQLite and MySQL. `dsl.generate.prisma` refuses a schema that uses them, because Prisma's `ops:` syntax cannot carry the qualified name.
|
|
99
|
+
|
|
92
100
|
## Relations
|
|
93
101
|
|
|
94
102
|
Relations are declared separately from columns, in `dsl.defineRelations(models, (r) => ...)`, which keeps column references typed on both ends.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAIV,qBAAqB,EACrB,SAAS,EAEV,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/generator/prisma.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAIV,qBAAqB,EACrB,SAAS,EAEV,MAAM,aAAa,CAAC;AAqTrB;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,qBAA0B,GAAG,MAAM,CAiD5F"}
|
package/dist/index.d.ts
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* const prisma = dsl.generate.prisma(schema); // .prisma text
|
|
34
34
|
*/
|
|
35
35
|
import type { ExtensionRegistry, Provider, SchemaIR } from "@vibeorm/schema";
|
|
36
|
-
import type { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableStringColumn } from "./column.ts";
|
|
36
|
+
import type { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableJsonColumn, ChainableStringColumn } from "./column.ts";
|
|
37
37
|
import type { StandaloneEnumConfig } from "./enum.ts";
|
|
38
38
|
import { defineRelations, defineRelationsPart, mergeRelations } from "./relations.ts";
|
|
39
39
|
import { defineRls } from "./schema.ts";
|
|
@@ -41,7 +41,7 @@ import type { SchemaOptions } from "./schema.ts";
|
|
|
41
41
|
import type { TemplatesApi } from "./templates.ts";
|
|
42
42
|
import type { ValidationError } from "./validate.ts";
|
|
43
43
|
import type { BigIntColumnConfig, BooleanColumnConfig, BytesColumnConfig, CreateModelConfig, DatetimeColumnConfig, DecimalColumnConfig, EnumDef, ExtensionTypeConfig, FloatColumnConfig, GeneratorOutput, IdColumnConfig, InlineEnumConfig, IntColumnConfig, JsonColumnConfig, ModelDef, PrismaGeneratorConfig, SchemaDef, SchemaDefinition, SchemaInput, StringColumnConfig } from "./types.ts";
|
|
44
|
-
export { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableStringColumn, cloneColumnDef, } from "./column.ts";
|
|
44
|
+
export { ChainableColumn, ChainableDatetimeColumn, ChainableDecimalColumn, ChainableEnumColumn, ChainableIdColumn, ChainableIntegerColumn, ChainableJsonColumn, ChainableStringColumn, cloneColumnDef, } from "./column.ts";
|
|
45
45
|
export { createEnum } from "./enum.ts";
|
|
46
46
|
export { generatePrisma } from "./generator/prisma.ts";
|
|
47
47
|
export { create, createIndexBuilder, evaluateIndexes, getColumnNames } from "./model.ts";
|
|
@@ -88,7 +88,7 @@ export type DslApi = {
|
|
|
88
88
|
readonly decimal: (config?: DecimalColumnConfig) => ChainableDecimalColumn;
|
|
89
89
|
readonly boolean: (config?: BooleanColumnConfig) => ChainableColumn<"boolean">;
|
|
90
90
|
readonly datetime: (config?: DatetimeColumnConfig) => ChainableDatetimeColumn;
|
|
91
|
-
readonly json: (config?: JsonColumnConfig) =>
|
|
91
|
+
readonly json: (config?: JsonColumnConfig) => ChainableJsonColumn;
|
|
92
92
|
readonly id: (config?: IdColumnConfig) => ChainableIdColumn;
|
|
93
93
|
readonly bytes: (config?: BytesColumnConfig) => ChainableColumn<"bytes">;
|
|
94
94
|
readonly unsupported: (dbType: string) => ChainableColumn<"unsupported">;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -398,7 +398,8 @@ import {
|
|
|
398
398
|
providerToDialect,
|
|
399
399
|
scalarListDefault,
|
|
400
400
|
serializeJsonDefault,
|
|
401
|
-
mergeExtensionDeclarations
|
|
401
|
+
mergeExtensionDeclarations,
|
|
402
|
+
unsupportedCapability
|
|
402
403
|
} from "@vibeorm/schema";
|
|
403
404
|
import { getSqlDialect } from "@vibeorm/sql";
|
|
404
405
|
|
|
@@ -438,7 +439,7 @@ function fieldTypeKey(params) {
|
|
|
438
439
|
}
|
|
439
440
|
|
|
440
441
|
// packages/dsl/src/relation-plan.ts
|
|
441
|
-
import { VibeError as VibeError3, predicateKey } from "@vibeorm/schema";
|
|
442
|
+
import { VibeError as VibeError3, isSqlObjectIdentity, predicateKey } from "@vibeorm/schema";
|
|
442
443
|
|
|
443
444
|
// packages/dsl/src/model.ts
|
|
444
445
|
import { VibeError as VibeError2 } from "@vibeorm/schema";
|
|
@@ -498,27 +499,31 @@ function createIndexBuilder() {
|
|
|
498
499
|
configurable: true
|
|
499
500
|
});
|
|
500
501
|
};
|
|
501
|
-
const createIndex = (
|
|
502
|
+
const createIndex = (params) => ({
|
|
502
503
|
__type: "index",
|
|
503
|
-
__columns: [...columns],
|
|
504
|
-
__indexType: type,
|
|
505
|
-
...map === undefined ? {} : { __map: map },
|
|
506
|
-
...where === undefined ? {} : { __where: where }
|
|
504
|
+
__columns: [...params.columns],
|
|
505
|
+
__indexType: params.type,
|
|
506
|
+
...params.map === undefined ? {} : { __map: params.map },
|
|
507
|
+
...params.where === undefined ? {} : { __where: params.where },
|
|
508
|
+
...params.ops === undefined ? {} : { __ops: params.ops }
|
|
507
509
|
});
|
|
508
510
|
return {
|
|
509
511
|
on(...args) {
|
|
510
512
|
const [first, second] = args;
|
|
511
513
|
if (args.length === 2 && Array.isArray(first) && typeof second === "object" && !Array.isArray(second)) {
|
|
512
|
-
return partial(createIndex(first, second.type, second.where, second.map));
|
|
514
|
+
return partial(createIndex({ columns: first, type: second.type, where: second.where, map: second.map, ops: second.ops }));
|
|
513
515
|
}
|
|
514
|
-
return partial(createIndex(args));
|
|
516
|
+
return partial(createIndex({ columns: args }));
|
|
515
517
|
},
|
|
516
518
|
index(...columns) {
|
|
517
|
-
return partial(createIndex(columns));
|
|
519
|
+
return partial(createIndex({ columns }));
|
|
518
520
|
},
|
|
519
521
|
unique(...args) {
|
|
520
522
|
const [first, second] = args;
|
|
521
523
|
if (args.length === 2 && Array.isArray(first) && typeof second === "object" && !Array.isArray(second)) {
|
|
524
|
+
if ("ops" in second && second.ops !== undefined) {
|
|
525
|
+
throw new VibeError2({ code: "VIBE_UNSUPPORTED_CAPABILITY", message: "Custom unique operator classes can change client selector equality", meta: { feature: "uniqueIndexOperatorClasses" } });
|
|
526
|
+
}
|
|
522
527
|
return partial({
|
|
523
528
|
__type: "unique",
|
|
524
529
|
__columns: [...first],
|
|
@@ -531,16 +536,16 @@ function createIndexBuilder() {
|
|
|
531
536
|
return partial({ __type: "unique", __columns: [...args] });
|
|
532
537
|
},
|
|
533
538
|
gin(...columns) {
|
|
534
|
-
return partial(createIndex(columns, "Gin"));
|
|
539
|
+
return partial(createIndex({ columns, type: "Gin" }));
|
|
535
540
|
},
|
|
536
541
|
gist(...columns) {
|
|
537
|
-
return partial(createIndex(columns, "Gist"));
|
|
542
|
+
return partial(createIndex({ columns, type: "Gist" }));
|
|
538
543
|
},
|
|
539
544
|
hash(...columns) {
|
|
540
|
-
return partial(createIndex(columns, "Hash"));
|
|
545
|
+
return partial(createIndex({ columns, type: "Hash" }));
|
|
541
546
|
},
|
|
542
547
|
brin(...columns) {
|
|
543
|
-
return partial(createIndex(columns, "Brin"));
|
|
548
|
+
return partial(createIndex({ columns, type: "Brin" }));
|
|
544
549
|
}
|
|
545
550
|
};
|
|
546
551
|
}
|
|
@@ -846,8 +851,22 @@ function planIndexes(params) {
|
|
|
846
851
|
}
|
|
847
852
|
}
|
|
848
853
|
for (const index of evaluateIndexes({ model })) {
|
|
854
|
+
if (index.__ops !== undefined) {
|
|
855
|
+
if (index.__ops === null || typeof index.__ops !== "object" || Array.isArray(index.__ops))
|
|
856
|
+
throw new VibeError3({ code: "VIBE_SCHEMA_INVALID", message: "Index ops must be a field-keyed qualified-name map", meta: { rule: "index-operator-class-map", model: model.__name } });
|
|
857
|
+
if (index.__type === "unique")
|
|
858
|
+
throw new VibeError3({ code: "VIBE_UNSUPPORTED_CAPABILITY", message: "Custom unique operator classes can change client selector equality", meta: { feature: "uniqueIndexOperatorClasses", model: model.__name } });
|
|
859
|
+
for (const [field, operatorClass] of Object.entries(index.__ops)) {
|
|
860
|
+
if (!index.__columns.includes(field))
|
|
861
|
+
throw new VibeError3({ code: "VIBE_SCHEMA_INVALID", message: "Operator class names a field outside the index", meta: { rule: "index-operator-class-field", model: model.__name, field } });
|
|
862
|
+
if (operatorClass !== undefined && !isSqlObjectIdentity({ kind: "table", name: operatorClass }))
|
|
863
|
+
throw new VibeError3({ code: "VIBE_SCHEMA_INVALID", message: "Index operator class must be a qualified SQL name { namespace, name }", meta: { rule: "index-operator-class-identity", model: model.__name, field } });
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
const operatorClasses = index.__columns.map((field) => index.__ops?.[field]);
|
|
867
|
+
const operatorSuffix = operatorClasses.some((operatorClass) => operatorClass !== undefined) ? `|ops:${JSON.stringify([index.__indexType ?? "BTree", operatorClasses.map((operatorClass) => operatorClass === undefined ? null : [operatorClass.namespace, operatorClass.name])])}` : "";
|
|
849
868
|
const predicateSuffix = index.__where !== undefined ? `|where:${index.__where}` : index.__wherePredicate === undefined ? "" : `|where:${predicateKey({ predicate: index.__wherePredicate })}`;
|
|
850
|
-
const key = index.__columns.join(",") + predicateSuffix;
|
|
869
|
+
const key = index.__columns.join(",") + predicateSuffix + operatorSuffix;
|
|
851
870
|
const existing = byKey.get(key);
|
|
852
871
|
const isUnique = index.__type === "unique";
|
|
853
872
|
if (existing === undefined || isUnique) {
|
|
@@ -855,6 +874,7 @@ function planIndexes(params) {
|
|
|
855
874
|
isUnique,
|
|
856
875
|
columns: [...index.__columns],
|
|
857
876
|
indexType: index.__indexType,
|
|
877
|
+
...index.__ops === undefined ? {} : { ops: index.__ops },
|
|
858
878
|
...index.__map === undefined ? {} : { map: index.__map },
|
|
859
879
|
...index.__where === undefined ? {} : { where: index.__where },
|
|
860
880
|
...index.__wherePredicate === undefined ? {} : { wherePredicate: index.__wherePredicate },
|
|
@@ -1146,6 +1166,8 @@ var INDEX_KINDS = {
|
|
|
1146
1166
|
};
|
|
1147
1167
|
function buildIndex(params) {
|
|
1148
1168
|
const { index, model, dialect, enums } = params;
|
|
1169
|
+
if (index.ops !== undefined && Object.values(index.ops).some((operatorClass) => operatorClass !== undefined) && !dialect.capabilities.indexOperatorClasses)
|
|
1170
|
+
throw unsupportedCapability({ dialect: dialect.name, feature: "indexOperatorClasses" });
|
|
1149
1171
|
const kind = index.isUnique ? "unique" : index.indexType === undefined ? "btree" : INDEX_KINDS[index.indexType];
|
|
1150
1172
|
const predicate = compileIndexPredicate({
|
|
1151
1173
|
where: index.where,
|
|
@@ -1157,7 +1179,7 @@ function buildIndex(params) {
|
|
|
1157
1179
|
});
|
|
1158
1180
|
return {
|
|
1159
1181
|
kind,
|
|
1160
|
-
fields: index.columns.map((name) => ({ name })),
|
|
1182
|
+
fields: index.columns.map((name) => ({ name, ...index.ops?.[name] === undefined ? {} : { operatorClass: index.ops[name] } })),
|
|
1161
1183
|
...index.map === undefined ? {} : { name: index.map },
|
|
1162
1184
|
...predicate === undefined ? {} : { where: predicate.where },
|
|
1163
1185
|
...predicate?.wherePredicate === undefined ? {} : { wherePredicate: predicate.wherePredicate },
|
|
@@ -1474,6 +1496,8 @@ function formatRelation(params) {
|
|
|
1474
1496
|
}
|
|
1475
1497
|
function formatIndex(params) {
|
|
1476
1498
|
const { index } = params;
|
|
1499
|
+
if (index.ops !== undefined && Object.values(index.ops).some((operatorClass) => operatorClass !== undefined))
|
|
1500
|
+
throw new VibeError5({ code: "VIBE_UNSUPPORTED_CAPABILITY", message: "Prisma output cannot preserve qualified index operator classes; keep the DSL source", meta: { feature: "prismaIndexOperatorClasses", target: "prisma" } });
|
|
1477
1501
|
const columns = index.columns.join(", ");
|
|
1478
1502
|
const predicate = compileIndexPredicate({
|
|
1479
1503
|
where: index.where,
|
|
@@ -2205,6 +2229,7 @@ export {
|
|
|
2205
2229
|
ChainableEnumColumn,
|
|
2206
2230
|
ChainableIdColumn,
|
|
2207
2231
|
ChainableIntegerColumn,
|
|
2232
|
+
ChainableJsonColumn,
|
|
2208
2233
|
ChainableStringColumn,
|
|
2209
2234
|
base,
|
|
2210
2235
|
baseWithWorkspace,
|
|
@@ -2242,4 +2267,4 @@ export {
|
|
|
2242
2267
|
withNameDescription
|
|
2243
2268
|
};
|
|
2244
2269
|
|
|
2245
|
-
//# debugId=
|
|
2270
|
+
//# debugId=9B3711B7350090C264756E2164756E21
|