@contember/schema-utils 2.1.0-alpha.1 → 2.1.0-alpha.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/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -1
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +1 -1
- package/dist/development/src/schemaNormalizer.cjs +2 -0
- package/dist/development/src/schemaNormalizer.cjs.map +1 -1
- package/dist/development/src/schemaNormalizer.js +2 -0
- package/dist/development/src/schemaNormalizer.js.map +1 -1
- package/dist/development/src/type-schema/acl.cjs +3 -1
- package/dist/development/src/type-schema/acl.cjs.map +1 -1
- package/dist/development/src/type-schema/acl.js +3 -1
- package/dist/development/src/type-schema/acl.js.map +1 -1
- package/dist/development/src/type-schema/condition.cjs +1 -0
- package/dist/development/src/type-schema/condition.cjs.map +1 -1
- package/dist/development/src/type-schema/condition.js +1 -0
- package/dist/development/src/type-schema/condition.js.map +1 -1
- package/dist/development/src/type-schema/model.cjs +23 -7
- package/dist/development/src/type-schema/model.cjs.map +1 -1
- package/dist/development/src/type-schema/model.js +23 -7
- package/dist/development/src/type-schema/model.js.map +1 -1
- package/dist/development/src/validation/ModelValidator.cjs +3 -0
- package/dist/development/src/validation/ModelValidator.cjs.map +1 -1
- package/dist/development/src/validation/ModelValidator.js +3 -0
- package/dist/development/src/validation/ModelValidator.js.map +1 -1
- package/dist/development/src/validation/errors.cjs.map +1 -1
- package/dist/development/src/validation/errors.js.map +1 -1
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -1
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +1 -1
- package/dist/production/src/schemaNormalizer.cjs +2 -0
- package/dist/production/src/schemaNormalizer.cjs.map +1 -1
- package/dist/production/src/schemaNormalizer.js +2 -0
- package/dist/production/src/schemaNormalizer.js.map +1 -1
- package/dist/production/src/type-schema/acl.cjs +3 -1
- package/dist/production/src/type-schema/acl.cjs.map +1 -1
- package/dist/production/src/type-schema/acl.js +3 -1
- package/dist/production/src/type-schema/acl.js.map +1 -1
- package/dist/production/src/type-schema/condition.cjs +1 -0
- package/dist/production/src/type-schema/condition.cjs.map +1 -1
- package/dist/production/src/type-schema/condition.js +1 -0
- package/dist/production/src/type-schema/condition.js.map +1 -1
- package/dist/production/src/type-schema/model.cjs +23 -7
- package/dist/production/src/type-schema/model.cjs.map +1 -1
- package/dist/production/src/type-schema/model.js +23 -7
- package/dist/production/src/type-schema/model.js.map +1 -1
- package/dist/production/src/validation/ModelValidator.cjs +3 -0
- package/dist/production/src/validation/ModelValidator.cjs.map +1 -1
- package/dist/production/src/validation/ModelValidator.js +3 -0
- package/dist/production/src/validation/ModelValidator.js.map +1 -1
- package/dist/production/src/validation/errors.cjs.map +1 -1
- package/dist/production/src/validation/errors.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/acl/schemaUtils.d.ts.map +1 -1
- package/dist/types/dataUtils.d.ts.map +1 -1
- package/dist/types/model/modelUtils.d.ts.map +1 -1
- package/dist/types/model/resolveDefaultColumnType.d.ts.map +1 -1
- package/dist/types/schemaChecksum.d.ts.map +1 -1
- package/dist/types/schemaFilter.d.ts.map +1 -1
- package/dist/types/schemaNormalizer.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/type-schema/acl.d.ts.map +1 -1
- package/dist/types/type-schema/condition.d.ts.map +1 -1
- package/dist/types/type-schema/model.d.ts +1 -1
- package/dist/types/type-schema/model.d.ts.map +1 -1
- package/dist/types/type-schema/where.d.ts.map +1 -1
- package/dist/types/utils/deepCompare.d.ts.map +1 -1
- package/dist/types/utils/isIt.d.ts.map +1 -1
- package/dist/types/utils/printJsValue.d.ts.map +1 -1
- package/dist/types/validation/ModelValidator.d.ts.map +1 -1
- package/dist/types/validation/errors.d.ts +1 -1
- package/dist/types/validation/errors.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/definition-generator/DefinitionCodeGenerator.ts +1 -1
- package/src/schemaNormalizer.ts +2 -0
- package/src/type-schema/acl.ts +2 -0
- package/src/type-schema/model.ts +23 -5
- package/src/validation/ModelValidator.ts +3 -0
- package/src/validation/errors.ts +1 -0
package/src/type-schema/model.ts
CHANGED
|
@@ -133,6 +133,7 @@ const columnSchema = Typesafe.intersection(
|
|
|
133
133
|
list: Typesafe.boolean,
|
|
134
134
|
default: Typesafe.anyJson,
|
|
135
135
|
sequence: intersectionSchema as Typesafe.Type<Model.AnyColumn['sequence']>,
|
|
136
|
+
collation: Typesafe.string as Typesafe.Type<Model.AnyColumn['collation']>,
|
|
136
137
|
}),
|
|
137
138
|
)
|
|
138
139
|
const columnSchemaCheck: Typesafe.Equals<Model.AnyColumn, ReturnType<typeof columnSchema>> = true
|
|
@@ -154,13 +155,15 @@ const viewSchemaInner = Typesafe.intersection(
|
|
|
154
155
|
}),
|
|
155
156
|
Typesafe.partial({
|
|
156
157
|
dependencies: Typesafe.array(Typesafe.string),
|
|
158
|
+
idSource: Typesafe.array(Typesafe.string),
|
|
159
|
+
materialized: Typesafe.boolean,
|
|
157
160
|
}),
|
|
158
161
|
)
|
|
159
162
|
const viewSchemaCheck: Typesafe.Equals<Model.View, ReturnType<typeof viewSchemaInner>> = true
|
|
160
163
|
const viewSchema: Typesafe.Type<Model.View> = viewSchemaInner
|
|
161
164
|
|
|
162
165
|
|
|
163
|
-
const
|
|
166
|
+
const indexSchemaBase = Typesafe.intersection(
|
|
164
167
|
Typesafe.object({
|
|
165
168
|
fields: Typesafe.array(Typesafe.string),
|
|
166
169
|
}),
|
|
@@ -168,22 +171,37 @@ const indexLike: Typesafe.Type<{readonly fields: readonly string[]; readonly nam
|
|
|
168
171
|
name: Typesafe.string,
|
|
169
172
|
}),
|
|
170
173
|
)
|
|
174
|
+
const indexCheck: Typesafe.Equals<Model.Index, ReturnType<typeof indexSchemaBase>> = true
|
|
171
175
|
|
|
172
176
|
const indexesSchema = Typesafe.coalesce<Model.Indexes, Model.Indexes>(
|
|
173
177
|
Typesafe.preprocess(
|
|
174
|
-
Typesafe.array(
|
|
178
|
+
Typesafe.array(indexSchemaBase),
|
|
175
179
|
it => it?.constructor === Object ? Object.values(it) : it,
|
|
176
180
|
),
|
|
177
181
|
[],
|
|
178
182
|
)
|
|
179
183
|
|
|
180
184
|
const uniqueConstraint = Typesafe.intersection(
|
|
181
|
-
|
|
185
|
+
Typesafe.object({
|
|
186
|
+
fields: Typesafe.array(Typesafe.string),
|
|
187
|
+
}),
|
|
182
188
|
Typesafe.partial({
|
|
183
189
|
timing: Typesafe.enumeration('deferrable', 'deferred'),
|
|
190
|
+
name: Typesafe.string,
|
|
191
|
+
index: Typesafe.literal(false),
|
|
192
|
+
}),
|
|
193
|
+
)
|
|
194
|
+
const uniqueIndex = Typesafe.intersection(
|
|
195
|
+
Typesafe.object({
|
|
196
|
+
fields: Typesafe.array(Typesafe.string),
|
|
197
|
+
index: Typesafe.literal(true),
|
|
198
|
+
}),
|
|
199
|
+
Typesafe.partial({
|
|
200
|
+
nulls: Typesafe.enumeration('distinct', 'not distinct'),
|
|
184
201
|
}),
|
|
185
202
|
)
|
|
186
203
|
const uniqueConstraintCheck: Typesafe.Equals<Model.UniqueConstraint, ReturnType<typeof uniqueConstraint>> = true
|
|
204
|
+
const uniqueIndexCheck: Typesafe.Equals<Model.UniqueIndex, ReturnType<typeof uniqueIndex>> = true
|
|
187
205
|
|
|
188
206
|
const entitySchema = Typesafe.intersection(
|
|
189
207
|
Typesafe.object({
|
|
@@ -192,8 +210,8 @@ const entitySchema = Typesafe.intersection(
|
|
|
192
210
|
primaryColumn: Typesafe.string,
|
|
193
211
|
tableName: Typesafe.string,
|
|
194
212
|
fields: Typesafe.record(Typesafe.string, fieldSchema),
|
|
195
|
-
unique: Typesafe.preprocess<Model.
|
|
196
|
-
Typesafe.array(uniqueConstraint),
|
|
213
|
+
unique: Typesafe.preprocess<Model.Uniques>(
|
|
214
|
+
Typesafe.array(Typesafe.union(uniqueConstraint, uniqueIndex)),
|
|
197
215
|
it => it?.constructor === Object ? Object.values(it) : it,
|
|
198
216
|
),
|
|
199
217
|
indexes: indexesSchema,
|
|
@@ -60,6 +60,9 @@ export class ModelValidator {
|
|
|
60
60
|
|
|
61
61
|
private validateUniqueConstraints(entity: Model.Entity, errors: ErrorBuilder): void {
|
|
62
62
|
for (const constraint of entity.unique) {
|
|
63
|
+
if (entity.view && !constraint.index) {
|
|
64
|
+
errors.add('MODEL_INVALID_CONSTRAINT', 'Unique constraint on view entity must be an index. Please set index: true')
|
|
65
|
+
}
|
|
63
66
|
for (const field of constraint.fields) {
|
|
64
67
|
const fieldDef = entity.fields[field]
|
|
65
68
|
if (!fieldDef) {
|