@contember/schema-definition 2.0.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.
Files changed (160) hide show
  1. package/dist/development/index.cjs +1 -0
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +2 -1
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/acl/definition/aclExtensions.cjs +16 -0
  6. package/dist/development/src/acl/definition/aclExtensions.cjs.map +1 -0
  7. package/dist/development/src/acl/definition/aclExtensions.js +16 -0
  8. package/dist/development/src/acl/definition/aclExtensions.js.map +1 -0
  9. package/dist/development/src/acl/definition/customPrimary.cjs +6 -7
  10. package/dist/development/src/acl/definition/customPrimary.cjs.map +1 -1
  11. package/dist/development/src/acl/definition/customPrimary.js +6 -7
  12. package/dist/development/src/acl/definition/customPrimary.js.map +1 -1
  13. package/dist/development/src/acl/definition/internal/AclFactory.cjs +39 -39
  14. package/dist/development/src/acl/definition/internal/AclFactory.cjs.map +1 -1
  15. package/dist/development/src/acl/definition/internal/AclFactory.js +40 -40
  16. package/dist/development/src/acl/definition/internal/AclFactory.js.map +1 -1
  17. package/dist/development/src/acl/definition/internal/stores.cjs +0 -4
  18. package/dist/development/src/acl/definition/internal/stores.cjs.map +1 -1
  19. package/dist/development/src/acl/definition/internal/stores.js +0 -4
  20. package/dist/development/src/acl/definition/internal/stores.js.map +1 -1
  21. package/dist/development/src/createSchema.cjs +4 -1
  22. package/dist/development/src/createSchema.cjs.map +1 -1
  23. package/dist/development/src/createSchema.js +4 -1
  24. package/dist/development/src/createSchema.js.map +1 -1
  25. package/dist/development/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
  26. package/dist/development/src/model/builder/SchemaBuilderInternal.js.map +1 -1
  27. package/dist/development/src/model/definition/UniqueDefinition.cjs.map +1 -1
  28. package/dist/development/src/model/definition/UniqueDefinition.js.map +1 -1
  29. package/dist/development/src/model/definition/ViewDefinition.cjs +4 -2
  30. package/dist/development/src/model/definition/ViewDefinition.cjs.map +1 -1
  31. package/dist/development/src/model/definition/ViewDefinition.js +4 -2
  32. package/dist/development/src/model/definition/ViewDefinition.js.map +1 -1
  33. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +18 -3
  34. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
  35. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +18 -3
  36. package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  37. package/dist/development/src/model/definition/index.cjs +3 -1
  38. package/dist/development/src/model/definition/index.cjs.map +1 -1
  39. package/dist/development/src/model/definition/index.js +4 -2
  40. package/dist/development/src/model/definition/index.js.map +1 -1
  41. package/dist/development/src/model/definition/internal/SchemaBuilder.cjs +6 -3
  42. package/dist/development/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
  43. package/dist/development/src/model/definition/internal/SchemaBuilder.js +6 -3
  44. package/dist/development/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  45. package/dist/development/src/presets.cjs +10 -1
  46. package/dist/development/src/presets.cjs.map +1 -1
  47. package/dist/development/src/presets.js +10 -1
  48. package/dist/development/src/presets.js.map +1 -1
  49. package/dist/production/index.cjs +1 -0
  50. package/dist/production/index.cjs.map +1 -1
  51. package/dist/production/index.js +2 -1
  52. package/dist/production/index.js.map +1 -1
  53. package/dist/production/src/acl/definition/aclExtensions.cjs +16 -0
  54. package/dist/production/src/acl/definition/aclExtensions.cjs.map +1 -0
  55. package/dist/production/src/acl/definition/aclExtensions.js +16 -0
  56. package/dist/production/src/acl/definition/aclExtensions.js.map +1 -0
  57. package/dist/production/src/acl/definition/customPrimary.cjs +6 -7
  58. package/dist/production/src/acl/definition/customPrimary.cjs.map +1 -1
  59. package/dist/production/src/acl/definition/customPrimary.js +6 -7
  60. package/dist/production/src/acl/definition/customPrimary.js.map +1 -1
  61. package/dist/production/src/acl/definition/internal/AclFactory.cjs +39 -39
  62. package/dist/production/src/acl/definition/internal/AclFactory.cjs.map +1 -1
  63. package/dist/production/src/acl/definition/internal/AclFactory.js +40 -40
  64. package/dist/production/src/acl/definition/internal/AclFactory.js.map +1 -1
  65. package/dist/production/src/acl/definition/internal/stores.cjs +0 -4
  66. package/dist/production/src/acl/definition/internal/stores.cjs.map +1 -1
  67. package/dist/production/src/acl/definition/internal/stores.js +0 -4
  68. package/dist/production/src/acl/definition/internal/stores.js.map +1 -1
  69. package/dist/production/src/createSchema.cjs +4 -1
  70. package/dist/production/src/createSchema.cjs.map +1 -1
  71. package/dist/production/src/createSchema.js +4 -1
  72. package/dist/production/src/createSchema.js.map +1 -1
  73. package/dist/production/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
  74. package/dist/production/src/model/builder/SchemaBuilderInternal.js.map +1 -1
  75. package/dist/production/src/model/definition/UniqueDefinition.cjs.map +1 -1
  76. package/dist/production/src/model/definition/UniqueDefinition.js.map +1 -1
  77. package/dist/production/src/model/definition/ViewDefinition.cjs +4 -2
  78. package/dist/production/src/model/definition/ViewDefinition.cjs.map +1 -1
  79. package/dist/production/src/model/definition/ViewDefinition.js +4 -2
  80. package/dist/production/src/model/definition/ViewDefinition.js.map +1 -1
  81. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +18 -3
  82. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
  83. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +18 -3
  84. package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  85. package/dist/production/src/model/definition/index.cjs +3 -1
  86. package/dist/production/src/model/definition/index.cjs.map +1 -1
  87. package/dist/production/src/model/definition/index.js +4 -2
  88. package/dist/production/src/model/definition/index.js.map +1 -1
  89. package/dist/production/src/model/definition/internal/SchemaBuilder.cjs +6 -3
  90. package/dist/production/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
  91. package/dist/production/src/model/definition/internal/SchemaBuilder.js +6 -3
  92. package/dist/production/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  93. package/dist/production/src/presets.cjs +10 -1
  94. package/dist/production/src/presets.cjs.map +1 -1
  95. package/dist/production/src/presets.js +10 -1
  96. package/dist/production/src/presets.js.map +1 -1
  97. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  98. package/dist/types/acl/builder/PermissionsBuilder.d.ts.map +1 -1
  99. package/dist/types/acl/builder/PredicateReference.d.ts.map +1 -1
  100. package/dist/types/acl/definition/aclExtensions.d.ts +12 -0
  101. package/dist/types/acl/definition/aclExtensions.d.ts.map +1 -0
  102. package/dist/types/acl/definition/customPrimary.d.ts.map +1 -1
  103. package/dist/types/acl/definition/index.d.ts.map +1 -1
  104. package/dist/types/acl/definition/internal/AclFactory.d.ts +1 -1
  105. package/dist/types/acl/definition/internal/AclFactory.d.ts.map +1 -1
  106. package/dist/types/acl/definition/internal/createPredicateName.d.ts.map +1 -1
  107. package/dist/types/acl/definition/internal/stores.d.ts +0 -2
  108. package/dist/types/acl/definition/internal/stores.d.ts.map +1 -1
  109. package/dist/types/acl/definition/permissions.d.ts.map +1 -1
  110. package/dist/types/acl/definition/references.d.ts.map +1 -1
  111. package/dist/types/acl/definition/roles.d.ts.map +1 -1
  112. package/dist/types/acl/definition/variables.d.ts.map +1 -1
  113. package/dist/types/actions/definition/index.d.ts.map +1 -1
  114. package/dist/types/actions/definition/targets.d.ts.map +1 -1
  115. package/dist/types/actions/definition/triggers.d.ts.map +1 -1
  116. package/dist/types/createSchema.d.ts +2 -1
  117. package/dist/types/createSchema.d.ts.map +1 -1
  118. package/dist/types/index.d.ts +2 -3
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/dist/types/model/definition/UniqueDefinition.d.ts +6 -1
  121. package/dist/types/model/definition/UniqueDefinition.d.ts.map +1 -1
  122. package/dist/types/model/definition/ViewDefinition.d.ts +6 -2
  123. package/dist/types/model/definition/ViewDefinition.d.ts.map +1 -1
  124. package/dist/types/model/definition/context.d.ts +3 -0
  125. package/dist/types/model/definition/context.d.ts.map +1 -1
  126. package/dist/types/model/definition/extensions.d.ts.map +1 -1
  127. package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts +9 -1
  128. package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
  129. package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
  130. package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
  131. package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
  132. package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
  133. package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
  134. package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
  135. package/dist/types/model/definition/index.d.ts +1 -0
  136. package/dist/types/model/definition/index.d.ts.map +1 -1
  137. package/dist/types/model/definition/internal/SchemaBuilder.d.ts +4 -1
  138. package/dist/types/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
  139. package/dist/types/presets.d.ts +2 -0
  140. package/dist/types/presets.d.ts.map +1 -1
  141. package/dist/types/tsconfig.tsbuildinfo +1 -1
  142. package/dist/types/utils/MetadataStore.d.ts.map +1 -1
  143. package/dist/types/utils/filterEntityDefinition.d.ts.map +1 -1
  144. package/dist/types/utils/tuple.d.ts.map +1 -1
  145. package/dist/types/validation/index.d.ts.map +1 -1
  146. package/package.json +3 -3
  147. package/src/acl/definition/aclExtensions.ts +28 -0
  148. package/src/acl/definition/customPrimary.ts +7 -8
  149. package/src/acl/definition/internal/AclFactory.ts +41 -45
  150. package/src/acl/definition/internal/stores.ts +0 -3
  151. package/src/createSchema.ts +6 -2
  152. package/src/index.ts +1 -0
  153. package/src/model/builder/SchemaBuilderInternal.ts +1 -1
  154. package/src/model/definition/UniqueDefinition.ts +11 -2
  155. package/src/model/definition/ViewDefinition.ts +10 -1
  156. package/src/model/definition/context.ts +3 -0
  157. package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +22 -2
  158. package/src/model/definition/index.ts +2 -0
  159. package/src/model/definition/internal/SchemaBuilder.ts +6 -1
  160. package/src/presets.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataStore.d.ts","sourceRoot":"","sources":["../../../src/utils/MetadataStore.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,gBAAgB,CAAC,KAAG,aAAa,CAAC,CAAC,CAevE,CAAA"}
1
+ {"version":3,"file":"MetadataStore.d.ts","sourceRoot":"","sources":["../../../src/utils/MetadataStore.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,cAAc,CAAC,KAAG,aAAa,CAAC,CAAC,CAevE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterEntityDefinition.d.ts","sourceRoot":"","sources":["../../../src/utils/filterEntityDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC1B,CAAA;AAE/E,eAAO,MAAM,mBAAmB,OAAQ,OAAO,KAAG,EAAE,IAAI,iBAEvD,CAAA"}
1
+ {"version":3,"file":"filterEntityDefinition.d.ts","sourceRoot":"","sources":["../../../src/utils/filterEntityDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC1B,CAAA;AAE/E,eAAO,MAAM,mBAAmB,GAAI,IAAI,OAAO,KAAG,EAAE,IAAI,iBAEvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../src/utils/tuple.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,OAAO,EAAE,WAAW,CAAC,MAAS,CAAA"}
1
+ {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../src/utils/tuple.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,MAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/schema-definition",
3
- "version": "2.0.1",
3
+ "version": "2.1.0-alpha.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/production/index.js",
6
6
  "typings": "./dist/types/index.d.ts",
@@ -23,8 +23,8 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@contember/schema": "2.0.1",
27
- "@contember/schema-utils": "2.0.1",
26
+ "@contember/schema": "2.1.0-alpha.2",
27
+ "@contember/schema-utils": "2.1.0-alpha.2",
28
28
  "reflect-metadata": "^0.2.2",
29
29
  "fast-deep-equal": "^3.1.3"
30
30
  },
@@ -0,0 +1,28 @@
1
+ import { Acl, Model } from '@contember/schema'
2
+ import { createMetadataStore, DecoratorFunction, EntityConstructor } from '../../utils'
3
+ import { Role } from './roles'
4
+
5
+ export type EntityAclExtensionArgs =
6
+ & {
7
+ entity: Model.Entity
8
+ role: Role
9
+ permissions: Acl.EntityPermissions
10
+ }
11
+
12
+ const entityAclExtensionsStore = createMetadataStore<EntityAclExtension[]>([])
13
+
14
+ export type EntityAclExtension = (args: EntityAclExtensionArgs) => Acl.EntityPermissions
15
+ export const extendEntityAcl = <T>(extension: EntityAclExtension): DecoratorFunction<T> => {
16
+ return function (cls: EntityConstructor) {
17
+ entityAclExtensionsStore.update(cls, current => [...current, extension])
18
+ }
19
+ }
20
+
21
+ export const applyEntityAclExtensions = (
22
+ cls: EntityConstructor,
23
+ args: EntityAclExtensionArgs,
24
+ ): Acl.EntityPermissions =>
25
+ entityAclExtensionsStore.get(cls).reduce(
26
+ (permissions, ext) => ext({ ...args, permissions }),
27
+ args.permissions,
28
+ )
@@ -1,13 +1,12 @@
1
1
  import { Role } from './roles'
2
- import { allowCustomPrimaryAllRolesStore, allowCustomPrimaryStore } from './internal/stores'
3
- import { DecoratorFunction, EntityConstructor } from '../../utils'
2
+ import { DecoratorFunction } from '../../utils'
3
+ import { extendEntityAcl } from './aclExtensions'
4
4
 
5
5
  export const allowCustomPrimary = (role?: Role | Role[]): DecoratorFunction<any> => {
6
- return (entity: EntityConstructor) => {
7
- if (!role) {
8
- allowCustomPrimaryAllRolesStore.update(entity, () => true)
9
- } else {
10
- allowCustomPrimaryStore.update(entity, val => [...val, ...(Array.isArray(role) ? role : [role])])
6
+ return extendEntityAcl(({ permissions, role: currentRole }) => {
7
+ if (!role || role === currentRole || (Array.isArray(role) && role.includes(currentRole))) {
8
+ return { ...permissions, operations: { customPrimary: true } }
11
9
  }
12
- }
10
+ return permissions
11
+ })
13
12
  }
@@ -4,14 +4,13 @@ import { getEntity } from '@contember/schema-utils'
4
4
  import { EntityPredicatesResolver } from './EntityPredicateResolver'
5
5
  import { AllowDefinition } from '../permissions'
6
6
  import {
7
- allowCustomPrimaryAllRolesStore,
8
- allowCustomPrimaryStore,
9
7
  allowDefinitionsStore,
10
8
  EntityPermissionsDefinition,
11
9
  } from './stores'
12
10
  import { Role } from '../roles'
13
11
  import { VariableDefinition } from '../variables'
14
12
  import { filterEntityDefinition } from '../../../utils'
13
+ import { applyEntityAclExtensions } from '../aclExtensions'
15
14
 
16
15
  export class AclFactory {
17
16
  constructor(
@@ -36,7 +35,7 @@ export class AclFactory {
36
35
  {
37
36
  ...role.options,
38
37
  stages: role.options.stages ?? '*',
39
- entities: this.createPermissions(rolePermissions),
38
+ entities: this.createPermissions(rolePermissions, Object.fromEntries(entityLikeDefinition), role),
40
39
  variables: this.createVariables(role, variables),
41
40
  },
42
41
  ]
@@ -44,46 +43,49 @@ export class AclFactory {
44
43
  }
45
44
  }
46
45
 
47
- private createPermissions(rolePermissions: PermissionsByEntity | undefined): Acl.Permissions {
48
- if (!rolePermissions) {
49
- return {}
50
- }
51
- return Object.fromEntries(Array.from(rolePermissions.keys()).map((entityName): [string, Acl.EntityPermissions] => {
52
- const entity = getEntity(this.model, entityName)
46
+ private createPermissions(rolePermissions: PermissionsByEntity | undefined, entityLikeDefinition: Record<string, { new(): any }>, role: Role): Acl.Permissions {
47
+ return Object.fromEntries(Object.values(this.model.entities).map((entity): [string, Acl.EntityPermissions] | undefined => {
48
+ const permissions = rolePermissions ? this.createPermissionsFromAllow(rolePermissions, entity) : { predicates: {}, operations: {} }
49
+ const isEmpty = rolePermissions === undefined
50
+ const withExtensions = applyEntityAclExtensions(entityLikeDefinition[entity.name], { entity, permissions, role })
51
+ if (isEmpty && withExtensions === permissions) {
52
+ return undefined
53
+ }
54
+ return [
55
+ entity.name,
56
+ withExtensions,
57
+ ]
58
+ }).filter(<T>(it: T | undefined): it is T => it !== undefined))
59
+ }
53
60
 
54
- const predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)
61
+ private createPermissionsFromAllow(rolePermissions: PermissionsByEntity, entity: Model.Entity): Acl.EntityPermissions {
62
+ const predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)
55
63
 
56
- const entityOperations: Writable<Acl.EntityOperations> = {
57
- }
58
- const noRootOptions = this.getNoRootOptions(entity, rolePermissions.get(entityName))
59
- if (noRootOptions?.length) {
60
- entityOperations.noRoot = noRootOptions
61
- }
62
- for (const op of ['create', 'update', 'read'] as const) {
63
- const fieldPermissions: Writable<Acl.FieldPermissions> = {}
64
- for (const field of Object.keys(entity.fields)) {
65
- const predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)
66
- if (predicate !== undefined) {
67
- fieldPermissions[field] = predicate
68
- }
69
- }
70
- if (Object.keys(fieldPermissions).length > 0) {
71
- entityOperations[op] = fieldPermissions
64
+ const entityOperations: Writable<Acl.EntityOperations> = {}
65
+ const noRootOptions = this.getNoRootOptions(entity, rolePermissions.get(entity.name))
66
+ if (noRootOptions?.length) {
67
+ entityOperations.noRoot = noRootOptions
68
+ }
69
+ for (const op of ['create', 'update', 'read'] as const) {
70
+ const fieldPermissions: Writable<Acl.FieldPermissions> = {}
71
+ for (const field of Object.keys(entity.fields)) {
72
+ const predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)
73
+ if (predicate !== undefined) {
74
+ fieldPermissions[field] = predicate
72
75
  }
73
76
  }
74
- const delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)
75
- if (delPredicate !== undefined) {
76
- entityOperations.delete = delPredicate
77
- }
78
- if (rolePermissions.get(entityName)?.allowCustomPrimary) {
79
- entityOperations.customPrimary = true
77
+ if (Object.keys(fieldPermissions).length > 0) {
78
+ entityOperations[op] = fieldPermissions
80
79
  }
81
- return [entityName, {
82
- predicates: predicatesResolver.getUsedPredicates(),
83
- operations: entityOperations,
84
-
85
- }]
86
- }))
80
+ }
81
+ const delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)
82
+ if (delPredicate !== undefined) {
83
+ entityOperations.delete = delPredicate
84
+ }
85
+ return {
86
+ predicates: predicatesResolver.getUsedPredicates(),
87
+ operations: entityOperations,
88
+ }
87
89
  }
88
90
 
89
91
 
@@ -123,7 +125,6 @@ export class AclFactory {
123
125
  const rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()
124
126
  groupedPermissions.set(role, rolePermissions)
125
127
  const entityPermissions = rolePermissions.get(name) ?? {
126
- allowCustomPrimary: false,
127
128
  definitions: [],
128
129
  }
129
130
  rolePermissions.set(name, entityPermissions)
@@ -137,11 +138,6 @@ export class AclFactory {
137
138
  const entityPermissions = initEntityPermissions(role)
138
139
  entityPermissions.definitions.push(definition)
139
140
  }
140
-
141
- const rolesWithCustomPrimary = allowCustomPrimaryAllRolesStore.get(entity) ? roles : allowCustomPrimaryStore.get(entity)
142
- for (const role of rolesWithCustomPrimary) {
143
- initEntityPermissions(role).allowCustomPrimary = true
144
- }
145
141
  }
146
142
 
147
143
  return groupedPermissions
@@ -149,6 +145,6 @@ export class AclFactory {
149
145
  }
150
146
 
151
147
 
152
- export type EntityPermissions = { definitions: AllowDefinition<any>[]; allowCustomPrimary: boolean }
148
+ export type EntityPermissions = { definitions: AllowDefinition<any>[] }
153
149
  export type PermissionsByEntity = Map<string, EntityPermissions>
154
150
  export type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>
@@ -2,9 +2,6 @@ import { createMetadataStore } from '../../../utils/MetadataStore'
2
2
  import { Role } from '../roles'
3
3
  import { AllowDefinition } from '../permissions'
4
4
 
5
- export const allowCustomPrimaryStore = createMetadataStore<Role[]>([])
6
- export const allowCustomPrimaryAllRolesStore = createMetadataStore<boolean>(false)
7
-
8
5
  export type EntityPermissionsDefinition =
9
6
  & AllowDefinition<any>
10
7
  & {
@@ -2,17 +2,21 @@ import { SchemaDefinition } from './model'
2
2
  import * as InputValidation from './validation'
3
3
  import * as AclDefinition from './acl/definition'
4
4
  import * as ActionsDefinition from './actions/definition'
5
- import { Schema } from '@contember/schema'
5
+ import { Model, Schema } from '@contember/schema'
6
6
  import { emptySchema } from '@contember/schema-utils'
7
7
  import { allStrict, StrictOptions, StrictDefinitionValidator } from './strict'
8
8
 
9
9
  export const createSchema = (definitions: Record<string, any>, modifyCallback?: (schema: Schema) => Schema, options?: {
10
10
  strict?: boolean | StrictOptions
11
+ defaultCollation?: Model.Collation
11
12
  }): Schema => {
12
13
  const strictOptions = options?.strict === true ? allStrict : (options?.strict || {})
13
14
  const strictDefinitionValidator = new StrictDefinitionValidator(strictOptions)
14
15
 
15
- const model = SchemaDefinition.createModel(definitions, { strictDefinitionValidator: strictDefinitionValidator })
16
+ const model = SchemaDefinition.createModel(definitions, {
17
+ strictDefinitionValidator: strictDefinitionValidator,
18
+ defaultCollation: options?.defaultCollation,
19
+ })
16
20
  const validation = InputValidation.parseDefinition(definitions)
17
21
  const acl = AclDefinition.createAcl(definitions, model)
18
22
  const actions = ActionsDefinition.createActions(definitions)
package/src/index.ts CHANGED
@@ -66,6 +66,7 @@ export const c = {
66
66
  intColumn: SchemaDefinition.intColumn,
67
67
  doubleColumn: SchemaDefinition.doubleColumn,
68
68
  dateColumn: SchemaDefinition.dateColumn,
69
+ timeColumn: SchemaDefinition.timeColumn,
69
70
  dateTimeColumn: SchemaDefinition.dateTimeColumn,
70
71
  jsonColumn: SchemaDefinition.jsonColumn,
71
72
  stringColumn: SchemaDefinition.stringColumn,
@@ -158,7 +158,7 @@ export default class SchemaBuilderInternal {
158
158
  entityName: string,
159
159
  options: EntityBuilder.EntityOptions,
160
160
  fieldOptions: FieldBuilder.Map,
161
- ): Model.UniqueConstraints {
161
+ ): Model.Uniques {
162
162
  const unique: Model.UniqueConstraint[] = []
163
163
 
164
164
  for (const singleUnique of options.unique || []) {
@@ -4,8 +4,17 @@ import { Model } from '@contember/schema'
4
4
 
5
5
  export type UniqueOptions<T> = {
6
6
  fields: (keyof T & string)[]
7
- timing?: Model.ConstraintTiming
8
- }
7
+
8
+ } & (
9
+ | {
10
+ index?: false
11
+ timing?: Model.ConstraintTiming
12
+ }
13
+ | {
14
+ index: true
15
+ nulls?: Model.NullsDistinctBehaviour
16
+ }
17
+ )
9
18
  export function Unique<T>(options: UniqueOptions<T>): DecoratorFunction<T>
10
19
  export function Unique<T>(...fields: (keyof T & string)[]): DecoratorFunction<T>
11
20
  export function Unique<T>(options: UniqueOptions<T> | keyof T & string, ...args: (keyof T & string)[]): DecoratorFunction<T> {
@@ -1,7 +1,14 @@
1
1
  import { extendEntity } from './extensions'
2
2
  import { EntityConstructor } from './types'
3
+ import { DecoratorFunction } from '../../utils'
3
4
 
4
- export const View = (sql: string, { dependencies }: { dependencies?: (() => EntityConstructor[]) | EntityConstructor[] } = {}) =>
5
+ export type ViewOptions<T> = {
6
+ dependencies?: (() => EntityConstructor[]) | EntityConstructor[]
7
+ idSource?: readonly ((keyof T) & string)[]
8
+ materialized?: boolean
9
+ }
10
+
11
+ export const View = <T>(sql: string, { dependencies, idSource, materialized }: ViewOptions<T> = {}): DecoratorFunction<T> =>
5
12
  extendEntity(({ entity, entityRegistry }) => {
6
13
  const dependenciesResolved = typeof dependencies === 'function' ? dependencies() : dependencies
7
14
  if (dependenciesResolved?.some(it => it === undefined)) {
@@ -19,6 +26,8 @@ dependencies: () => [MyEntity]
19
26
  view: {
20
27
  sql,
21
28
  ...(dependenciesResolved ? { dependencies: dependenciesResolved.map(it => entityRegistry.getName(it)) } : {}),
29
+ ...(idSource ? { idSource } : {}),
30
+ ...(materialized ? { materialized: true } : {}),
22
31
  },
23
32
  })
24
33
  })
@@ -7,4 +7,7 @@ export type CommonContext = {
7
7
  enumRegistry: EnumRegistry
8
8
  entityRegistry: EntityRegistry
9
9
  strictDefinitionValidator: StrictDefinitionValidator
10
+ options: {
11
+ defaultCollation?: string
12
+ }
10
13
  }
@@ -26,6 +26,10 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
26
26
  return this.withOption('columnType', columnType)
27
27
  }
28
28
 
29
+ public list(): ColumnDefinition {
30
+ return this.withOption('list', true)
31
+ }
32
+
29
33
  public nullable(): ColumnDefinition {
30
34
  return this.withOption('nullable', true)
31
35
  }
@@ -50,14 +54,23 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
50
54
  return this.withOption('typeAlias', alias)
51
55
  }
52
56
 
53
- createField({ name, conventions, enumRegistry, entityName }: CreateFieldContext): Model.AnyField {
54
- const { type, nullable, columnName, enumDefinition, default: defaultValue, columnType, typeAlias, sequence } = this.options
57
+ /**
58
+ * Collation for string columns
59
+ */
60
+ public collation(collation: Model.Collation): ColumnDefinition {
61
+ return this.withOption('collation', collation)
62
+ }
63
+
64
+ createField({ name, conventions, enumRegistry, entityName, options }: CreateFieldContext): Model.AnyField {
65
+ const { type, nullable, columnName, enumDefinition, default: defaultValue, columnType, typeAlias, sequence, list, collation = options.defaultCollation } = this.options
55
66
  const common = {
56
67
  name: name,
57
68
  columnName: columnName || conventions.getColumnName(name),
58
69
  nullable: nullable === undefined ? true : nullable,
70
+ ...(list ? { list } : {}),
59
71
  ...(defaultValue !== undefined ? { default: defaultValue } : {}),
60
72
  ...(sequence !== undefined ? { sequence } : {}),
73
+ ...(type === Model.ColumnType.String && collation !== undefined ? { collation } : {}),
61
74
  }
62
75
  if (type === Model.ColumnType.Enum) {
63
76
  if (typeAlias) {
@@ -113,6 +126,10 @@ export function dateColumn(): ColumnDefinition {
113
126
  return column(Model.ColumnType.Date)
114
127
  }
115
128
 
129
+ export function timeColumn(): ColumnDefinition {
130
+ return column(Model.ColumnType.Time)
131
+ }
132
+
116
133
  export function dateTimeColumn(args?: { precision?: number }): ColumnDefinition {
117
134
  const col = column(Model.ColumnType.DateTime)
118
135
  if (!args?.precision) {
@@ -139,10 +156,13 @@ export type ColumnTypeOptions = {
139
156
  export type ColumnDefinitionOptions = {
140
157
  type: Model.ColumnType
141
158
  columnType?: string
159
+ list?: boolean
142
160
  typeAlias?: string
143
161
  columnName?: string
144
162
  unique?: { timing?: Model.ConstraintTiming }
145
163
  nullable?: boolean
146
164
  default?: Model.ColumnTypeDefinition['default']
147
165
  sequence?: Model.ColumnTypeDefinition['sequence']
166
+ collation?: Model.Collation
148
167
  } & ColumnTypeOptions
168
+
@@ -26,10 +26,12 @@ export type ModelDefinition<M> = {
26
26
 
27
27
  export function createModel<M extends ModelDefinition<M>>(definitions: M, options: {
28
28
  strictDefinitionValidator?: StrictDefinitionValidator
29
+ defaultCollation?: string
29
30
  } = {}): Model.Schema {
30
31
  const schemaBuilder = new SchemaBuilder(
31
32
  new DefaultNamingConventions(),
32
33
  options.strictDefinitionValidator,
34
+ { defaultCollation: options.defaultCollation },
33
35
  )
34
36
  for (const [name, definition] of Object.entries(definitions)) {
35
37
  if (definition instanceof EnumDefinition) {
@@ -18,6 +18,9 @@ export class SchemaBuilder {
18
18
  constructor(
19
19
  private readonly conventions: NamingConventions,
20
20
  private readonly strictDefinitionValidator: StrictDefinitionValidator = new StrictDefinitionValidator({}),
21
+ private readonly options: {
22
+ defaultCollation?: string
23
+ },
21
24
  ) {}
22
25
 
23
26
  public addEntity(name: string, entity: EntityConstructor): void {
@@ -52,6 +55,7 @@ export class SchemaBuilder {
52
55
  enumRegistry: this.enumRegistry,
53
56
  entityRegistry: this.entityRegistry,
54
57
  strictDefinitionValidator: this.strictDefinitionValidator,
58
+ options: this.options,
55
59
  })
56
60
  })
57
61
  .reduce<Model.Entity['fields']>((acc, field) => {
@@ -82,6 +86,7 @@ export class SchemaBuilder {
82
86
  conventions: this.conventions,
83
87
  enumRegistry: this.enumRegistry,
84
88
  strictDefinitionValidator: this.strictDefinitionValidator,
89
+ options: this.options,
85
90
  })
86
91
  })
87
92
 
@@ -98,7 +103,7 @@ export class SchemaBuilder {
98
103
  })
99
104
  }
100
105
 
101
- private createUnique(entityName: string, fieldDefinitions: FieldsDefinition): Model.UniqueConstraints {
106
+ private createUnique(entityName: string, fieldDefinitions: FieldsDefinition): Model.Uniques {
102
107
  const unique: Model.UniqueConstraint[] = []
103
108
  for (const [fieldName, definition] of Object.entries(fieldDefinitions)) {
104
109
  if (definition.options.unique) {
package/src/presets.ts CHANGED
@@ -29,8 +29,20 @@ const v2_0preset: Settings.Schema = {
29
29
  },
30
30
  }
31
31
 
32
+
33
+ const v2_1preset: Settings.Schema = {
34
+ ...v2_0preset,
35
+ content: {
36
+ ...v2_0preset.content,
37
+ uuidVersion: 7,
38
+ },
39
+ }
40
+
32
41
  export const settingsPresets = {
33
42
  'v1.3': v1_3preset,
34
43
  'v1.4': v1_4preset,
35
44
  'v2.0': v2_0preset,
45
+ 'v2.1': v2_1preset,
46
+
47
+ 'latest': v2_1preset,
36
48
  }