@contember/schema-definition 1.2.0-alpha.9 → 1.2.0-beta.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 (100) hide show
  1. package/dist/src/acl/builder/EntitySelector.d.ts +1 -1
  2. package/dist/src/acl/builder/EntitySelector.d.ts.map +1 -1
  3. package/dist/src/acl/builder/EntitySelector.js +2 -2
  4. package/dist/src/acl/builder/EntitySelector.js.map +1 -1
  5. package/dist/src/acl/definition/internal/AclFactory.d.ts.map +1 -1
  6. package/dist/src/acl/definition/internal/AclFactory.js +1 -0
  7. package/dist/src/acl/definition/internal/AclFactory.js.map +1 -1
  8. package/dist/src/acl/definition/internal/EntityPredicateResolver.d.ts.map +1 -1
  9. package/dist/src/acl/definition/internal/EntityPredicateResolver.js +15 -8
  10. package/dist/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
  11. package/dist/src/acl/definition/roles.d.ts +4 -6
  12. package/dist/src/acl/definition/roles.d.ts.map +1 -1
  13. package/dist/src/acl/definition/variables.d.ts +4 -4
  14. package/dist/src/acl/definition/variables.d.ts.map +1 -1
  15. package/dist/src/acl/definition/variables.js +5 -5
  16. package/dist/src/acl/definition/variables.js.map +1 -1
  17. package/dist/src/createSchema.d.ts.map +1 -1
  18. package/dist/src/createSchema.js +2 -1
  19. package/dist/src/createSchema.js.map +1 -1
  20. package/dist/src/model/builder/SchemaBuilder.d.ts +1 -1
  21. package/dist/src/model/builder/SchemaBuilder.d.ts.map +1 -1
  22. package/dist/src/model/builder/SchemaBuilder.js +2 -2
  23. package/dist/src/model/builder/SchemaBuilder.js.map +1 -1
  24. package/dist/src/model/builder/SchemaBuilderInternal.d.ts +1 -1
  25. package/dist/src/model/builder/SchemaBuilderInternal.d.ts.map +1 -1
  26. package/dist/src/model/builder/internal/ColumnProcessor.d.ts +1 -1
  27. package/dist/src/model/builder/internal/ColumnProcessor.d.ts.map +1 -1
  28. package/dist/src/model/builder/internal/ColumnProcessor.js +2 -2
  29. package/dist/src/model/builder/internal/ColumnProcessor.js.map +1 -1
  30. package/dist/src/model/builder/internal/ManyHasManyProcessor.d.ts +1 -1
  31. package/dist/src/model/builder/internal/ManyHasManyProcessor.d.ts.map +1 -1
  32. package/dist/src/model/builder/internal/ManyHasOneProcessor.d.ts +1 -1
  33. package/dist/src/model/builder/internal/ManyHasOneProcessor.d.ts.map +1 -1
  34. package/dist/src/model/builder/internal/OneHasManyProcessor.d.ts +1 -1
  35. package/dist/src/model/builder/internal/OneHasManyProcessor.d.ts.map +1 -1
  36. package/dist/src/model/builder/internal/OneHasOneProcessor.d.ts +1 -1
  37. package/dist/src/model/builder/internal/OneHasOneProcessor.d.ts.map +1 -1
  38. package/dist/src/model/definition/ViewDefinition.js +2 -2
  39. package/dist/src/model/definition/ViewDefinition.js.map +1 -1
  40. package/dist/src/model/definition/extensions.d.ts +6 -1
  41. package/dist/src/model/definition/extensions.d.ts.map +1 -1
  42. package/dist/src/model/definition/extensions.js.map +1 -1
  43. package/dist/src/model/definition/fieldDefinitions/ColumnDefinition.d.ts +1 -1
  44. package/dist/src/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
  45. package/dist/src/model/definition/fieldDefinitions/ColumnDefinition.js +3 -3
  46. package/dist/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
  47. package/dist/src/model/definition/fieldDefinitions/FieldDefinition.d.ts +1 -1
  48. package/dist/src/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
  49. package/dist/src/model/definition/index.d.ts.map +1 -1
  50. package/dist/src/model/definition/index.js +2 -2
  51. package/dist/src/model/definition/index.js.map +1 -1
  52. package/dist/src/model/definition/internal/SchemaBuilder.d.ts +1 -1
  53. package/dist/src/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
  54. package/dist/src/model/definition/internal/SchemaBuilder.js +8 -1
  55. package/dist/src/model/definition/internal/SchemaBuilder.js.map +1 -1
  56. package/dist/src/tsconfig.tsbuildinfo +1 -1
  57. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  58. package/dist/tests/unit/extendEntity.test.d.ts +2 -0
  59. package/dist/tests/unit/extendEntity.test.d.ts.map +1 -0
  60. package/dist/tests/unit/extendEntity.test.js +42 -0
  61. package/dist/tests/unit/extendEntity.test.js.map +1 -0
  62. package/dist/tests/unit/readAclDefinitions.test.js +91 -0
  63. package/dist/tests/unit/readAclDefinitions.test.js.map +1 -1
  64. package/package.json +3 -3
  65. package/src/acl/builder/EntitySelector.ts +2 -2
  66. package/src/acl/definition/internal/AclFactory.ts +1 -0
  67. package/src/acl/definition/internal/EntityPredicateResolver.ts +13 -7
  68. package/src/acl/definition/roles.ts +6 -6
  69. package/src/acl/definition/variables.ts +6 -5
  70. package/src/createSchema.ts +2 -1
  71. package/src/model/builder/SchemaBuilder.ts +1 -1
  72. package/src/model/builder/SchemaBuilderInternal.ts +1 -1
  73. package/src/model/builder/internal/ColumnProcessor.ts +2 -3
  74. package/src/model/builder/internal/ManyHasManyProcessor.ts +1 -1
  75. package/src/model/builder/internal/ManyHasOneProcessor.ts +1 -1
  76. package/src/model/builder/internal/OneHasManyProcessor.ts +1 -1
  77. package/src/model/builder/internal/OneHasOneProcessor.ts +1 -1
  78. package/src/model/definition/ViewDefinition.ts +2 -2
  79. package/src/model/definition/extensions.ts +7 -1
  80. package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +4 -4
  81. package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -1
  82. package/src/model/definition/index.ts +1 -1
  83. package/src/model/definition/internal/SchemaBuilder.ts +9 -3
  84. package/tests/unit/extendEntity.test.ts +42 -0
  85. package/tests/unit/readAclDefinitions.test.ts +92 -0
  86. package/dist/src/model/definition/NamingConventions.d.ts +0 -17
  87. package/dist/src/model/definition/NamingConventions.d.ts.map +0 -1
  88. package/dist/src/model/definition/NamingConventions.js +0 -29
  89. package/dist/src/model/definition/NamingConventions.js.map +0 -1
  90. package/dist/src/model/utils/getColumnType.d.ts +0 -3
  91. package/dist/src/model/utils/getColumnType.d.ts.map +0 -1
  92. package/dist/src/model/utils/getColumnType.js +0 -29
  93. package/dist/src/model/utils/getColumnType.js.map +0 -1
  94. package/dist/src/model/utils/index.d.ts +0 -2
  95. package/dist/src/model/utils/index.d.ts.map +0 -1
  96. package/dist/src/model/utils/index.js +0 -18
  97. package/dist/src/model/utils/index.js.map +0 -1
  98. package/src/model/definition/NamingConventions.ts +0 -53
  99. package/src/model/utils/getColumnType.ts +0 -25
  100. package/src/model/utils/index.ts +0 -1
@@ -1,5 +1,5 @@
1
1
  import { Role } from './roles'
2
- import { Acl } from '@contember/schema'
2
+ import { Acl, Input } from '@contember/schema'
3
3
 
4
4
  export class VariableDefinition<Name extends string = string, Roles extends Role<string> = Role<string>, Variable extends Acl.Variable = Acl.Variable> {
5
5
  constructor(
@@ -10,24 +10,24 @@ export class VariableDefinition<Name extends string = string, Roles extends Role
10
10
  }
11
11
  }
12
12
 
13
-
14
13
  export const createEntityVariable = <R extends Role<string>, Name extends string>(
15
14
  name: Name,
16
15
  entityName: string,
17
16
  roles: R | R[],
17
+ fallback?: Input.Condition,
18
18
  ): VariableDefinition<Name, R, Acl.EntityVariable> => {
19
19
  return new VariableDefinition(
20
20
  name,
21
21
  Array.isArray(roles) ? roles : [roles],
22
- { type: Acl.VariableType.entity, entityName },
22
+ { type: Acl.VariableType.entity, entityName, ...(fallback ? { fallback } : {}) },
23
23
  )
24
24
  }
25
25
 
26
-
27
26
  export const createPredefinedVariable = <R extends Role<string>, Name extends string>(
28
27
  name: Name,
29
28
  value: Acl.PredefinedVariableValue,
30
29
  roles: R | R[],
30
+ fallback?: Input.Condition,
31
31
  ): VariableDefinition<Name, R, Acl.EntityVariable> => {
32
32
  return new VariableDefinition(
33
33
  name,
@@ -39,10 +39,11 @@ export const createPredefinedVariable = <R extends Role<string>, Name extends st
39
39
  export const createConditionVariable = <R extends Role<string>, Name extends string>(
40
40
  name: Name,
41
41
  roles: R | R[],
42
+ fallback?: Input.Condition,
42
43
  ): VariableDefinition<Name, R, Acl.ConditionVariable> => {
43
44
  return new VariableDefinition(
44
45
  name,
45
46
  Array.isArray(roles) ? roles : [roles],
46
- { type: Acl.VariableType.condition },
47
+ { type: Acl.VariableType.condition, ...(fallback ? { fallback } : {}) },
47
48
  )
48
49
  }
@@ -2,11 +2,12 @@ import { SchemaDefinition } from './model'
2
2
  import * as InputValidation from './validation'
3
3
  import * as AclDefinition from './acl/definition'
4
4
  import { Schema } from '@contember/schema'
5
+ import { emptySchema } from '@contember/schema-utils'
5
6
 
6
7
  export const createSchema = (definitions: Record<string, any>, modifyCallback?: (schema: Schema) => Schema): Schema => {
7
8
  const model = SchemaDefinition.createModel(definitions)
8
9
  const validation = InputValidation.parseDefinition(definitions)
9
10
  const acl = AclDefinition.createAcl(definitions, model)
10
- const schema = { model, validation, acl }
11
+ const schema = { ...emptySchema, model, validation, acl }
11
12
  return modifyCallback ? modifyCallback(schema) : schema
12
13
  }
@@ -1,6 +1,6 @@
1
1
  import { Model } from '@contember/schema'
2
2
  import EntityBuilder from './EntityBuilder'
3
- import { DefaultNamingConventions, NamingConventions } from '../definition/NamingConventions'
3
+ import { DefaultNamingConventions, NamingConventions } from '@contember/schema-utils'
4
4
  import SchemaBuilderInternal from './SchemaBuilderInternal'
5
5
  import { EntityConfigurator } from './types'
6
6
 
@@ -8,7 +8,7 @@ import ManyHasManyProcessor from './internal/ManyHasManyProcessor'
8
8
  import OneHasOneProcessor from './internal/OneHasOneProcessor'
9
9
  import OneHasManyProcessor from './internal/OneHasManyProcessor'
10
10
  import ManyHasOneProcessor from './internal/ManyHasOneProcessor'
11
- import { NamingConventions } from './../definition/NamingConventions'
11
+ import { NamingConventions } from '@contember/schema-utils'
12
12
  import FieldBuilder from './FieldBuilder'
13
13
 
14
14
  export default class SchemaBuilderInternal {
@@ -1,8 +1,7 @@
1
1
  import FieldProcessor from './FieldProcessor'
2
2
  import ColumnBuilder from '../ColumnBuilder'
3
- import { NamingConventions } from '../../definition/NamingConventions'
4
3
  import { Model } from '@contember/schema'
5
- import { getColumnType } from '../../utils/getColumnType'
4
+ import { NamingConventions, resolveDefaultColumnType } from '@contember/schema-utils'
6
5
 
7
6
  export default class ColumnProcessor implements FieldProcessor<ColumnBuilder.Options> {
8
7
  private conventions: NamingConventions
@@ -34,7 +33,7 @@ export default class ColumnProcessor implements FieldProcessor<ColumnBuilder.Opt
34
33
  return {
35
34
  ...common,
36
35
  type,
37
- columnType: getColumnType(type),
36
+ columnType: resolveDefaultColumnType(type),
38
37
  ...(options.typeAlias !== undefined ? { typeAlias: options.typeAlias } : {}),
39
38
  }
40
39
  }
@@ -1,7 +1,7 @@
1
1
  import FieldProcessor from './FieldProcessor'
2
2
  import ManyHasManyBuilder from '../ManyHasManyBuilder'
3
3
  import { Model } from '@contember/schema'
4
- import { NamingConventions } from '../../definition/NamingConventions'
4
+ import { NamingConventions } from '@contember/schema-utils'
5
5
 
6
6
  export default class ManyHasManyProcessor implements FieldProcessor<ManyHasManyBuilder.Options> {
7
7
  private conventions: NamingConventions
@@ -1,7 +1,7 @@
1
1
  import FieldProcessor from './FieldProcessor'
2
2
  import { Model } from '@contember/schema'
3
3
  import ManyHasOneBuilder from '../ManyHasOneBuilder'
4
- import { NamingConventions } from '../../definition/NamingConventions'
4
+ import { NamingConventions } from '@contember/schema-utils'
5
5
 
6
6
  export default class ManyHasOneProcessor implements FieldProcessor<ManyHasOneBuilder.Options> {
7
7
  private conventions: NamingConventions
@@ -1,7 +1,7 @@
1
1
  import FieldProcessor from './FieldProcessor'
2
2
  import OneHasManyBuilder from '../OneHasManyBuilder'
3
3
  import { Model } from '@contember/schema'
4
- import { NamingConventions } from '../../definition/NamingConventions'
4
+ import { NamingConventions } from '@contember/schema-utils'
5
5
 
6
6
  export default class OneHasManyProcessor implements FieldProcessor<OneHasManyBuilder.Options> {
7
7
  private conventions: NamingConventions
@@ -1,7 +1,7 @@
1
1
  import OneHasOneBuilder from '../OneHasOneBuilder'
2
2
  import FieldProcessor from './FieldProcessor'
3
3
  import { Model } from '@contember/schema'
4
- import { NamingConventions } from '../../definition/NamingConventions'
4
+ import { NamingConventions } from '@contember/schema-utils'
5
5
 
6
6
  export default class OneHasOneProcessor implements FieldProcessor<OneHasOneBuilder.Options> {
7
7
  private conventions: NamingConventions
@@ -2,7 +2,7 @@ import { extendEntity } from './extensions'
2
2
  import { EntityConstructor } from './types'
3
3
 
4
4
  export const View = (sql: string, { dependencies }: { dependencies?: (() => EntityConstructor[]) | EntityConstructor[] } = {}) =>
5
- extendEntity(({ entity, registry }) => {
5
+ extendEntity(({ entity, entityRegistry }) => {
6
6
  const dependenciesResolved = typeof dependencies === 'function' ? dependencies() : dependencies
7
7
  if (dependenciesResolved?.some(it => it === undefined)) {
8
8
  throw `"undefined" value detected in dependencies of view entity ${entity.name}. This is possibly caused by circular imports.
@@ -18,7 +18,7 @@ dependencies: () => [MyEntity]
18
18
  ...entity,
19
19
  view: {
20
20
  sql,
21
- ...(dependenciesResolved ? { dependencies: dependenciesResolved.map(it => registry.getName(it)) } : {}),
21
+ ...(dependenciesResolved ? { dependencies: dependenciesResolved.map(it => entityRegistry.getName(it)) } : {}),
22
22
  },
23
23
  })
24
24
  })
@@ -1,10 +1,16 @@
1
1
  import { Model } from '@contember/schema'
2
2
  import { DecoratorFunction, EntityConstructor, FieldsDefinition } from './types'
3
- import { EntityRegistry } from './internal'
3
+ import { EntityRegistry, EnumRegistry } from './internal'
4
+ import { NamingConventions } from '@contember/schema-utils'
4
5
 
5
6
  interface EntityExtensionArgs {
6
7
  entity: Model.Entity
7
8
  definition: FieldsDefinition
9
+ conventions: NamingConventions
10
+ enumRegistry: EnumRegistry
11
+ entityRegistry: EntityRegistry
12
+
13
+ /** @deprecated use entityRegistry */
8
14
  registry: EntityRegistry
9
15
  }
10
16
 
@@ -2,7 +2,7 @@ import { Model } from '@contember/schema'
2
2
  import { Interface } from '../types'
3
3
  import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
4
4
  import { EnumDefinition } from '../EnumDefinition'
5
- import { getColumnType } from '../../utils'
5
+ import { resolveDefaultColumnType } from '@contember/schema-utils'
6
6
 
7
7
  export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
8
8
  type = 'ColumnDefinition' as const
@@ -34,8 +34,8 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
34
34
  return this.withOption('nullable', false)
35
35
  }
36
36
 
37
- public sequence(options?: Model.ColumnTypeDefinition['sequence']): Interface<ColumnDefinition> {
38
- return this.withOption('sequence', options ?? { precedence: 'BY DEFAULT' })
37
+ public sequence(options?: Partial<Model.ColumnTypeDefinition['sequence']>): Interface<ColumnDefinition> {
38
+ return this.withOption('sequence', { precedence: 'BY DEFAULT', ...options })
39
39
  }
40
40
 
41
41
  public unique(): Interface<ColumnDefinition> {
@@ -79,7 +79,7 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
79
79
  return {
80
80
  ...common,
81
81
  type: type,
82
- columnType: columnType || getColumnType(type),
82
+ columnType: columnType || resolveDefaultColumnType(type),
83
83
  ...(typeAlias !== undefined ? { typeAlias } : {}),
84
84
  }
85
85
  }
@@ -1,5 +1,5 @@
1
1
  import { Model } from '@contember/schema'
2
- import { NamingConventions } from '../NamingConventions'
2
+ import { NamingConventions } from '@contember/schema-utils'
3
3
  import { EntityRegistry, EnumRegistry } from '../internal'
4
4
 
5
5
  export abstract class FieldDefinition<O> {
@@ -2,10 +2,10 @@ import { EntityConstructor, Interface } from './types'
2
2
  import { Model } from '@contember/schema'
3
3
  import { EnumDefinition } from './EnumDefinition'
4
4
  import { SchemaBuilder } from './internal'
5
- import { DefaultNamingConventions } from './NamingConventions'
6
5
  import 'reflect-metadata'
7
6
  import { FieldDefinition } from './fieldDefinitions'
8
7
  import { isEntityConstructor } from '../../utils'
8
+ import { DefaultNamingConventions } from '@contember/schema-utils'
9
9
 
10
10
  export * from './fieldDefinitions'
11
11
  export * from './EventLogDefinition'
@@ -1,9 +1,8 @@
1
1
  import { Model, Writable } from '@contember/schema'
2
- import { NamingHelper } from '@contember/schema-utils'
2
+ import { NamingConventions, NamingHelper } from '@contember/schema-utils'
3
3
  import 'reflect-metadata'
4
4
  import { tuple } from '../../../utils'
5
5
  import { EntityConstructor, FieldsDefinition } from '../types'
6
- import { NamingConventions } from '../NamingConventions'
7
6
  import { EnumDefinition } from '../EnumDefinition'
8
7
  import { EntityRegistry } from './EntityRegistry'
9
8
  import { EnumRegistry } from './EnumRegistry'
@@ -61,7 +60,14 @@ export class SchemaBuilder {
61
60
  enabled: true,
62
61
  },
63
62
  }
64
- return applyEntityExtensions(definition, { entity, definition: definitionInstance, registry: this.entityRegistry })
63
+ return applyEntityExtensions(definition, {
64
+ entity,
65
+ definition: definitionInstance,
66
+ registry: this.entityRegistry,
67
+ entityRegistry: this.entityRegistry,
68
+ conventions: this.conventions,
69
+ enumRegistry: this.enumRegistry,
70
+ })
65
71
  })
66
72
 
67
73
  return {
@@ -0,0 +1,42 @@
1
+ import { Model } from '@contember/schema'
2
+ import { assert, test } from 'vitest'
3
+ import { createSchema, SchemaDefinition as def } from '../../src'
4
+ import { extendEntity, FieldDefinition } from '../../src/model/definition'
5
+ import { DecoratorFunction } from '../../src/model/definition/types'
6
+
7
+ namespace ExtendedModel {
8
+ export class Article {
9
+ title = def.stringColumn()
10
+ }
11
+
12
+ const addField = (name: string, field: FieldDefinition<any>): DecoratorFunction<any> => {
13
+ return extendEntity(({ entity, conventions, entityRegistry, enumRegistry }) => ({
14
+ ...entity,
15
+ fields: {
16
+ ...entity.fields,
17
+ [name]: field.createField({
18
+ name,
19
+ enumRegistry,
20
+ entityRegistry,
21
+ conventions,
22
+ entityName: entity.name,
23
+ }),
24
+ },
25
+ }))
26
+ }
27
+
28
+ addField('lead', def.stringColumn())(Article)
29
+ }
30
+
31
+
32
+ test('add a field to entity using an extension', () => {
33
+ const schema = createSchema(ExtendedModel)
34
+
35
+ assert.deepEqual(schema.model.entities.Article.fields.lead, {
36
+ columnName: 'lead',
37
+ name: 'lead',
38
+ columnType: 'text',
39
+ type: Model.ColumnType.String,
40
+ nullable: true,
41
+ })
42
+ })
@@ -24,6 +24,32 @@ test('simple definitions', () => {
24
24
  `)
25
25
  })
26
26
 
27
+
28
+ namespace RoleOptions {
29
+ export const publicRole = acl.createRole('public', {
30
+ debug: true,
31
+ s3: {
32
+ foo: 'bar',
33
+ },
34
+ })
35
+ }
36
+
37
+ test('role options', () => {
38
+ const schema = createSchema(RoleOptions)
39
+ expect(schema.acl.roles.public).toMatchInlineSnapshot(`
40
+ {
41
+ "debug": true,
42
+ "entities": {},
43
+ "s3": {
44
+ "foo": "bar",
45
+ },
46
+ "stages": "*",
47
+ "variables": {},
48
+ }
49
+ `)
50
+ })
51
+
52
+
27
53
  namespace ModelWithPredicate {
28
54
  export const publicRole = acl.createRole('public')
29
55
 
@@ -181,6 +207,72 @@ test('definition with multiple predicates on a single field', () => {
181
207
  })
182
208
 
183
209
 
210
+ namespace ModelWithJoinedPredicateCollision {
211
+ export const publicRole = acl.createRole('public')
212
+
213
+ @acl.allow(publicRole, {
214
+ when: { isPublishedLoremIpsumDolorSitAmet: { eq: true } },
215
+ read: ['title'],
216
+ })
217
+ @acl.allow(publicRole, {
218
+ when: { isPublishedLoremIpsumDolorSitAmet: { eq: false } },
219
+ read: ['title', 'isPublishedLoremIpsumDolorSitAmet'],
220
+ })
221
+ @acl.allow(publicRole, {
222
+ when: { isPublishedLoremIpsumDolorSitAmet: { eq: false } },
223
+ read: ['isPublishedLoremIpsumDolorSitAmet'],
224
+ })
225
+ export class Book {
226
+ title = def.stringColumn()
227
+ isPublishedLoremIpsumDolorSitAmet = def.boolColumn()
228
+ }
229
+ }
230
+
231
+ test('definition with collision', () => {
232
+ const schema = createSchema(ModelWithJoinedPredicateCollision)
233
+ expect(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
234
+ {
235
+ "operations": {
236
+ "read": {
237
+ "isPublishedLoremIpsumDolorSitAmet": "or_isPublishedLoremIpsumDolor_1",
238
+ "title": "or_isPublishedLoremIpsumDolor",
239
+ },
240
+ },
241
+ "predicates": {
242
+ "or_isPublishedLoremIpsumDolor": {
243
+ "or": [
244
+ {
245
+ "isPublishedLoremIpsumDolorSitAmet": {
246
+ "eq": false,
247
+ },
248
+ },
249
+ {
250
+ "isPublishedLoremIpsumDolorSitAmet": {
251
+ "eq": true,
252
+ },
253
+ },
254
+ ],
255
+ },
256
+ "or_isPublishedLoremIpsumDolor_1": {
257
+ "or": [
258
+ {
259
+ "isPublishedLoremIpsumDolorSitAmet": {
260
+ "eq": false,
261
+ },
262
+ },
263
+ {
264
+ "isPublishedLoremIpsumDolorSitAmet": {
265
+ "eq": false,
266
+ },
267
+ },
268
+ ],
269
+ },
270
+ },
271
+ }
272
+ `)
273
+ })
274
+
275
+
184
276
  namespace ModelWithMultipleRolesForSinglePredicate {
185
277
  export const publicRole = acl.createRole('public')
186
278
  export const adminRole = acl.createRole('admin')
@@ -1,17 +0,0 @@
1
- export interface NamingConventions {
2
- getPrimaryField(): string;
3
- getColumnName(fieldName: string): string;
4
- getTableName(entityName: string): string;
5
- getJoiningColumnName(relationName: string): string;
6
- getJoiningTableName(entity: string, relation: string): string;
7
- getJoiningTableColumnNames(owningEntity: string, owningRelation: string, inverseEntity: string, inverseRelation?: string): [string, string];
8
- }
9
- export declare class DefaultNamingConventions implements NamingConventions {
10
- getPrimaryField(): string;
11
- getColumnName(fieldName: string): string;
12
- getTableName(entityName: string): string;
13
- getJoiningColumnName(relationName: string): string;
14
- getJoiningTableName(entity: string, relation: string): string;
15
- getJoiningTableColumnNames(owningEntity: string, owningRelation: string, inverseEntity: string, inverseRelation?: string): [string, string];
16
- }
17
- //# sourceMappingURL=NamingConventions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NamingConventions.d.ts","sourceRoot":"","sources":["../../../../src/model/definition/NamingConventions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IACjC,eAAe,IAAI,MAAM,CAAA;IAEzB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;IAExC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAExC,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;IAElD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IAE7D,0BAA0B,CACzB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,GACtB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnB;AAGD,qBAAa,wBAAyB,YAAW,iBAAiB;IACjE,eAAe,IAAI,MAAM;IAIzB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIxC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIxC,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIlD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI7D,0BAA0B,CACzB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,GACtB,CAAC,MAAM,EAAE,MAAM,CAAC;CAMnB"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultNamingConventions = void 0;
4
- const toUnderscore = (s) => s.replace(/([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '');
5
- class DefaultNamingConventions {
6
- getPrimaryField() {
7
- return 'id';
8
- }
9
- getColumnName(fieldName) {
10
- return toUnderscore(fieldName);
11
- }
12
- getTableName(entityName) {
13
- return toUnderscore(entityName);
14
- }
15
- getJoiningColumnName(relationName) {
16
- return toUnderscore(relationName) + '_id';
17
- }
18
- getJoiningTableName(entity, relation) {
19
- return toUnderscore(entity) + '_' + toUnderscore(relation);
20
- }
21
- getJoiningTableColumnNames(owningEntity, owningRelation, inverseEntity, inverseRelation) {
22
- return [
23
- toUnderscore(owningEntity) + '_id',
24
- toUnderscore(inverseEntity === owningEntity ? owningRelation : inverseEntity) + '_id',
25
- ];
26
- }
27
- }
28
- exports.DefaultNamingConventions = DefaultNamingConventions;
29
- //# sourceMappingURL=NamingConventions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NamingConventions.js","sourceRoot":"","sources":["../../../../src/model/definition/NamingConventions.ts"],"names":[],"mappings":";;;AAmBA,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AAC7G,MAAa,wBAAwB;IACpC,eAAe;QACd,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,aAAa,CAAC,SAAiB;QAC9B,OAAO,YAAY,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,YAAY,CAAC,UAAkB;QAC9B,OAAO,YAAY,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED,oBAAoB,CAAC,YAAoB;QACxC,OAAO,YAAY,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;IAC1C,CAAC;IAED,mBAAmB,CAAC,MAAc,EAAE,QAAgB;QACnD,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAED,0BAA0B,CACzB,YAAoB,EACpB,cAAsB,EACtB,aAAqB,EACrB,eAAwB;QAExB,OAAO;YACN,YAAY,CAAC,YAAY,CAAC,GAAG,KAAK;YAClC,YAAY,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,KAAK;SACrF,CAAA;IACF,CAAC;CACD;AAhCD,4DAgCC"}
@@ -1,3 +0,0 @@
1
- import { Model } from '@contember/schema';
2
- export declare const getColumnType: (type: Exclude<Model.ColumnType, Model.ColumnType.Enum>) => string;
3
- //# sourceMappingURL=getColumnType.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getColumnType.d.ts","sourceRoot":"","sources":["../../../../src/model/utils/getColumnType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGzC,eAAO,MAAM,aAAa,SAAU,QAAQ,MAAM,UAAU,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,KAAG,MAqBtF,CAAA"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getColumnType = void 0;
4
- const schema_1 = require("@contember/schema");
5
- const utils_1 = require("../../utils");
6
- const getColumnType = (type) => {
7
- switch (type) {
8
- case schema_1.Model.ColumnType.Int:
9
- return 'integer';
10
- case schema_1.Model.ColumnType.Double:
11
- return 'double precision';
12
- case schema_1.Model.ColumnType.String:
13
- return 'text';
14
- case schema_1.Model.ColumnType.Uuid:
15
- return 'uuid';
16
- case schema_1.Model.ColumnType.Bool:
17
- return 'boolean';
18
- case schema_1.Model.ColumnType.DateTime:
19
- return 'timestamptz';
20
- case schema_1.Model.ColumnType.Date:
21
- return 'date';
22
- case schema_1.Model.ColumnType.Json:
23
- return 'jsonb';
24
- default:
25
- return (0, utils_1.assertNever)(type);
26
- }
27
- };
28
- exports.getColumnType = getColumnType;
29
- //# sourceMappingURL=getColumnType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getColumnType.js","sourceRoot":"","sources":["../../../../src/model/utils/getColumnType.ts"],"names":[],"mappings":";;;AAAA,8CAAyC;AACzC,uCAAyC;AAElC,MAAM,aAAa,GAAG,CAAC,IAAsD,EAAU,EAAE;IAC/F,QAAQ,IAAI,EAAE;QACb,KAAK,cAAK,CAAC,UAAU,CAAC,GAAG;YACxB,OAAO,SAAS,CAAA;QACjB,KAAK,cAAK,CAAC,UAAU,CAAC,MAAM;YAC3B,OAAO,kBAAkB,CAAA;QAC1B,KAAK,cAAK,CAAC,UAAU,CAAC,MAAM;YAC3B,OAAO,MAAM,CAAA;QACd,KAAK,cAAK,CAAC,UAAU,CAAC,IAAI;YACzB,OAAO,MAAM,CAAA;QACd,KAAK,cAAK,CAAC,UAAU,CAAC,IAAI;YACzB,OAAO,SAAS,CAAA;QACjB,KAAK,cAAK,CAAC,UAAU,CAAC,QAAQ;YAC7B,OAAO,aAAa,CAAA;QACrB,KAAK,cAAK,CAAC,UAAU,CAAC,IAAI;YACzB,OAAO,MAAM,CAAA;QACd,KAAK,cAAK,CAAC,UAAU,CAAC,IAAI;YACzB,OAAO,OAAO,CAAA;QACf;YACC,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAA;KACzB;AACF,CAAC,CAAA;AArBY,QAAA,aAAa,iBAqBzB"}
@@ -1,2 +0,0 @@
1
- export * from './getColumnType';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./getColumnType"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/model/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B"}
@@ -1,53 +0,0 @@
1
- export interface NamingConventions {
2
- getPrimaryField(): string
3
-
4
- getColumnName(fieldName: string): string
5
-
6
- getTableName(entityName: string): string
7
-
8
- getJoiningColumnName(relationName: string): string
9
-
10
- getJoiningTableName(entity: string, relation: string): string
11
-
12
- getJoiningTableColumnNames(
13
- owningEntity: string,
14
- owningRelation: string,
15
- inverseEntity: string,
16
- inverseRelation?: string,
17
- ): [string, string]
18
- }
19
-
20
- const toUnderscore = (s: string) => s.replace(/([A-Z]+)/g, (x, y) => '_' + y.toLowerCase()).replace(/^_/, '')
21
- export class DefaultNamingConventions implements NamingConventions {
22
- getPrimaryField(): string {
23
- return 'id'
24
- }
25
-
26
- getColumnName(fieldName: string): string {
27
- return toUnderscore(fieldName)
28
- }
29
-
30
- getTableName(entityName: string): string {
31
- return toUnderscore(entityName)
32
- }
33
-
34
- getJoiningColumnName(relationName: string): string {
35
- return toUnderscore(relationName) + '_id'
36
- }
37
-
38
- getJoiningTableName(entity: string, relation: string): string {
39
- return toUnderscore(entity) + '_' + toUnderscore(relation)
40
- }
41
-
42
- getJoiningTableColumnNames(
43
- owningEntity: string,
44
- owningRelation: string,
45
- inverseEntity: string,
46
- inverseRelation?: string,
47
- ): [string, string] {
48
- return [
49
- toUnderscore(owningEntity) + '_id',
50
- toUnderscore(inverseEntity === owningEntity ? owningRelation : inverseEntity) + '_id',
51
- ]
52
- }
53
- }
@@ -1,25 +0,0 @@
1
- import { Model } from '@contember/schema'
2
- import { assertNever } from '../../utils'
3
-
4
- export const getColumnType = (type: Exclude<Model.ColumnType, Model.ColumnType.Enum>): string => {
5
- switch (type) {
6
- case Model.ColumnType.Int:
7
- return 'integer'
8
- case Model.ColumnType.Double:
9
- return 'double precision'
10
- case Model.ColumnType.String:
11
- return 'text'
12
- case Model.ColumnType.Uuid:
13
- return 'uuid'
14
- case Model.ColumnType.Bool:
15
- return 'boolean'
16
- case Model.ColumnType.DateTime:
17
- return 'timestamptz'
18
- case Model.ColumnType.Date:
19
- return 'date'
20
- case Model.ColumnType.Json:
21
- return 'jsonb'
22
- default:
23
- return assertNever(type)
24
- }
25
- }
@@ -1 +0,0 @@
1
- export * from './getColumnType'