@contember/schema-utils 2.0.0 → 2.1.0-alpha.1

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.
Files changed (95) hide show
  1. package/dist/development/index.cjs +0 -1
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +1 -2
  4. package/dist/development/src/dataUtils.cjs +9 -9
  5. package/dist/development/src/dataUtils.cjs.map +1 -1
  6. package/dist/development/src/dataUtils.js +10 -10
  7. package/dist/development/src/dataUtils.js.map +1 -1
  8. package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs +1 -0
  9. package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -1
  10. package/dist/development/src/definition-generator/DefinitionCodeGenerator.js +1 -0
  11. package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +1 -1
  12. package/dist/development/src/model/modelUtils.cjs +1 -1
  13. package/dist/development/src/model/modelUtils.cjs.map +1 -1
  14. package/dist/development/src/model/modelUtils.js +1 -1
  15. package/dist/development/src/model/modelUtils.js.map +1 -1
  16. package/dist/development/src/model/resolveDefaultColumnType.cjs +2 -0
  17. package/dist/development/src/model/resolveDefaultColumnType.cjs.map +1 -1
  18. package/dist/development/src/model/resolveDefaultColumnType.js +2 -0
  19. package/dist/development/src/model/resolveDefaultColumnType.js.map +1 -1
  20. package/dist/development/src/type-schema/condition.cjs +1 -0
  21. package/dist/development/src/type-schema/condition.cjs.map +1 -1
  22. package/dist/development/src/type-schema/condition.js +1 -0
  23. package/dist/development/src/type-schema/condition.js.map +1 -1
  24. package/dist/development/src/type-schema/model.cjs +2 -1
  25. package/dist/development/src/type-schema/model.cjs.map +1 -1
  26. package/dist/development/src/type-schema/model.js +2 -1
  27. package/dist/development/src/type-schema/model.js.map +1 -1
  28. package/dist/development/src/type-schema/settings.cjs +2 -1
  29. package/dist/development/src/type-schema/settings.cjs.map +1 -1
  30. package/dist/development/src/type-schema/settings.js +2 -1
  31. package/dist/development/src/type-schema/settings.js.map +1 -1
  32. package/dist/development/src/validation/ModelValidator.cjs +7 -5
  33. package/dist/development/src/validation/ModelValidator.cjs.map +1 -1
  34. package/dist/development/src/validation/ModelValidator.js +8 -6
  35. package/dist/development/src/validation/ModelValidator.js.map +1 -1
  36. package/dist/development/src/validation/errors.cjs.map +1 -1
  37. package/dist/development/src/validation/errors.js.map +1 -1
  38. package/dist/production/index.cjs +0 -1
  39. package/dist/production/index.cjs.map +1 -1
  40. package/dist/production/index.js +1 -2
  41. package/dist/production/src/dataUtils.cjs +9 -9
  42. package/dist/production/src/dataUtils.cjs.map +1 -1
  43. package/dist/production/src/dataUtils.js +10 -10
  44. package/dist/production/src/dataUtils.js.map +1 -1
  45. package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs +1 -0
  46. package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -1
  47. package/dist/production/src/definition-generator/DefinitionCodeGenerator.js +1 -0
  48. package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +1 -1
  49. package/dist/production/src/model/modelUtils.cjs +1 -1
  50. package/dist/production/src/model/modelUtils.cjs.map +1 -1
  51. package/dist/production/src/model/modelUtils.js +1 -1
  52. package/dist/production/src/model/modelUtils.js.map +1 -1
  53. package/dist/production/src/model/resolveDefaultColumnType.cjs +2 -0
  54. package/dist/production/src/model/resolveDefaultColumnType.cjs.map +1 -1
  55. package/dist/production/src/model/resolveDefaultColumnType.js +2 -0
  56. package/dist/production/src/model/resolveDefaultColumnType.js.map +1 -1
  57. package/dist/production/src/type-schema/condition.cjs +1 -0
  58. package/dist/production/src/type-schema/condition.cjs.map +1 -1
  59. package/dist/production/src/type-schema/condition.js +1 -0
  60. package/dist/production/src/type-schema/condition.js.map +1 -1
  61. package/dist/production/src/type-schema/model.cjs +2 -1
  62. package/dist/production/src/type-schema/model.cjs.map +1 -1
  63. package/dist/production/src/type-schema/model.js +2 -1
  64. package/dist/production/src/type-schema/model.js.map +1 -1
  65. package/dist/production/src/type-schema/settings.cjs +2 -1
  66. package/dist/production/src/type-schema/settings.cjs.map +1 -1
  67. package/dist/production/src/type-schema/settings.js +2 -1
  68. package/dist/production/src/type-schema/settings.js.map +1 -1
  69. package/dist/production/src/validation/ModelValidator.cjs +7 -5
  70. package/dist/production/src/validation/ModelValidator.cjs.map +1 -1
  71. package/dist/production/src/validation/ModelValidator.js +8 -6
  72. package/dist/production/src/validation/ModelValidator.js.map +1 -1
  73. package/dist/production/src/validation/errors.cjs.map +1 -1
  74. package/dist/production/src/validation/errors.js.map +1 -1
  75. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  76. package/dist/types/dataUtils.d.ts +7 -4
  77. package/dist/types/dataUtils.d.ts.map +1 -1
  78. package/dist/types/model/resolveDefaultColumnType.d.ts.map +1 -1
  79. package/dist/types/tsconfig.tsbuildinfo +1 -1
  80. package/dist/types/type-schema/model.d.ts.map +1 -1
  81. package/dist/types/type-schema/settings.d.ts +3 -0
  82. package/dist/types/type-schema/settings.d.ts.map +1 -1
  83. package/dist/types/validation/ModelValidator.d.ts.map +1 -1
  84. package/dist/types/validation/errors.d.ts +1 -1
  85. package/dist/types/validation/errors.d.ts.map +1 -1
  86. package/package.json +4 -4
  87. package/src/dataUtils.ts +12 -9
  88. package/src/definition-generator/DefinitionCodeGenerator.ts +1 -0
  89. package/src/model/modelUtils.ts +1 -1
  90. package/src/model/resolveDefaultColumnType.ts +2 -0
  91. package/src/type-schema/condition.ts +1 -0
  92. package/src/type-schema/model.ts +2 -1
  93. package/src/type-schema/settings.ts +1 -0
  94. package/src/validation/ModelValidator.ts +8 -6
  95. package/src/validation/errors.ts +1 -0
@@ -67,6 +67,7 @@ const resolveColumnTypeSchema = (type: Model.ColumnType) => {
67
67
  // todo: validate format of string-like inputs uuid, date, enum
68
68
  case Model.ColumnType.Date:
69
69
  case Model.ColumnType.DateTime:
70
+ case Model.ColumnType.Time:
70
71
  case Model.ColumnType.Uuid:
71
72
  case Model.ColumnType.Enum:
72
73
  case Model.ColumnType.String:
@@ -130,7 +130,8 @@ const columnSchema = Typesafe.intersection(
130
130
  }),
131
131
  Typesafe.partial({
132
132
  typeAlias: Typesafe.string,
133
- default: Typesafe.union(Typesafe.string, Typesafe.number, Typesafe.boolean, Typesafe.null_),
133
+ list: Typesafe.boolean,
134
+ default: Typesafe.anyJson,
134
135
  sequence: intersectionSchema as Typesafe.Type<Model.AnyColumn['sequence']>,
135
136
  }),
136
137
  )
@@ -11,6 +11,7 @@ export const settingsSchema = Typesafe.partial({
11
11
  useExistsInHasManyFilter: Typesafe.boolean,
12
12
  fullDateTimeResponse: Typesafe.boolean,
13
13
  shortDateResponse: Typesafe.boolean,
14
+ uuidVersion: Typesafe.union(Typesafe.literal(4), Typesafe.literal(7)),
14
15
  }),
15
16
  })
16
17
 
@@ -1,6 +1,6 @@
1
1
  import { Model } from '@contember/schema'
2
2
  import { ErrorBuilder, ValidationError } from './errors'
3
- import { acceptEveryFieldVisitor, getTargetEntity, isInverseRelation, isOwningRelation } from '../model'
3
+ import { acceptEveryFieldVisitor, getTargetEntity, isColumn, isInverseRelation, isOwningRelation } from '../model'
4
4
 
5
5
  const IDENTIFIER_PATTERN = /^[_a-zA-Z][_a-zA-Z0-9]*$/
6
6
  const RESERVED_WORDS = ['and', 'or', 'not']
@@ -52,18 +52,20 @@ export class ModelValidator {
52
52
  }
53
53
  }
54
54
  this.validateUniqueConstraints(
55
- entity.unique,
56
- new Set(Object.keys(entity.fields)),
55
+ entity,
57
56
  errors.for('unique'),
58
57
  )
59
58
  this.validateColumnNamesCollision(entity, errors)
60
59
  }
61
60
 
62
- private validateUniqueConstraints(uniqueConstraints: Model.Entity['unique'], fields: Set<string>, errors: ErrorBuilder): void {
63
- for (const constraint of uniqueConstraints) {
61
+ private validateUniqueConstraints(entity: Model.Entity, errors: ErrorBuilder): void {
62
+ for (const constraint of entity.unique) {
64
63
  for (const field of constraint.fields) {
65
- if (!fields.has(field)) {
64
+ const fieldDef = entity.fields[field]
65
+ if (!fieldDef) {
66
66
  errors.add('MODEL_UNDEFINED_FIELD', `Referenced field ${field} in a constraint does not exists`)
67
+ } else if (isColumn(fieldDef) && fieldDef.list) {
68
+ errors.add('MODEL_INVALID_FIELD', `Field ${field} in a unique constraint cannot be an array`)
67
69
  }
68
70
  }
69
71
  }
@@ -1,6 +1,7 @@
1
1
  export type ValidationErrorCode =
2
2
  | 'MODEL_NAME_MISMATCH'
3
3
  | 'MODEL_UNDEFINED_FIELD'
4
+ | 'MODEL_INVALID_FIELD'
4
5
  | 'MODEL_UNDEFINED_ENTITY'
5
6
  | 'MODEL_RELATION_REQUIRED'
6
7
  | 'MODEL_INVALID_RELATION_DEFINITION'