@contember/schema-definition 2.0.0-alpha.12 → 2.0.0-alpha.13
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/index.cjs.map +1 -1
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +3 -0
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +3 -0
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs +0 -3
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js +0 -3
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs +6 -7
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js +7 -8
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs +6 -7
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js +7 -8
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/index.cjs +6 -8
- package/dist/development/src/model/definition/index.cjs.map +1 -1
- package/dist/development/src/model/definition/index.js +12 -14
- package/dist/development/src/model/definition/index.js.map +1 -1
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +3 -0
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +3 -0
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs +0 -3
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js +0 -3
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs +6 -7
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js +7 -8
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs +6 -7
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js +7 -8
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/index.cjs +6 -8
- package/dist/production/src/model/definition/index.cjs.map +1 -1
- package/dist/production/src/model/definition/index.js +12 -14
- package/dist/production/src/model/definition/index.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +5 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts +9 -9
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts +0 -3
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts +6 -6
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts +4 -8
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts +10 -10
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts +4 -4
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts +11 -11
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts +4 -8
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/index.d.ts +1 -2
- package/dist/types/model/definition/index.d.ts.map +1 -1
- package/dist/types/model/definition/types.d.ts +2 -5
- package/dist/types/model/definition/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/index.ts +15 -0
- package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +22 -18
- package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -5
- package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +11 -7
- package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +8 -12
- package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +14 -12
- package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +8 -5
- package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +16 -12
- package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +8 -11
- package/src/model/definition/index.ts +1 -2
- package/src/model/definition/types.ts +2 -3
package/src/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as AclDefinition from './acl/definition'
|
|
2
|
+
import { Role } from './acl/definition'
|
|
2
3
|
import * as ActionsDefinition from './actions/definition'
|
|
3
4
|
import * as InputValidation from './validation'
|
|
4
5
|
import { SchemaDefinition } from './model'
|
|
@@ -9,6 +10,20 @@ export { PermissionsBuilder } from './acl/builder/PermissionsBuilder'
|
|
|
9
10
|
export * from './model'
|
|
10
11
|
export * from './presets'
|
|
11
12
|
|
|
13
|
+
export type { Role }
|
|
14
|
+
export type { VariableDefinition } from './acl/definition'
|
|
15
|
+
export type {
|
|
16
|
+
ColumnDefinition,
|
|
17
|
+
FieldDefinition,
|
|
18
|
+
OneHasOneDefinition,
|
|
19
|
+
OneHasOneInverseDefinition,
|
|
20
|
+
OneHasManyDefinition,
|
|
21
|
+
ManyHasOneDefinition,
|
|
22
|
+
ManyHasManyDefinition,
|
|
23
|
+
ManyHasManyInverseDefinition,
|
|
24
|
+
EnumDefinition,
|
|
25
|
+
} from './model/definition'
|
|
26
|
+
|
|
12
27
|
export { AclDefinition, ActionsDefinition, SchemaDefinition, InputValidation, createSchema }
|
|
13
28
|
|
|
14
29
|
export const c = {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Model } from '@contember/schema'
|
|
2
|
-
import { Interface } from '../types'
|
|
3
2
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
4
3
|
import { EnumDefinition } from '../EnumDefinition'
|
|
5
4
|
import { resolveDefaultColumnType } from '@contember/schema-utils'
|
|
@@ -7,6 +6,7 @@ import { resolveDefaultColumnType } from '@contember/schema-utils'
|
|
|
7
6
|
export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
|
|
8
7
|
type = 'ColumnDefinition' as const
|
|
9
8
|
|
|
9
|
+
|
|
10
10
|
public static create(
|
|
11
11
|
type: Model.ColumnType,
|
|
12
12
|
typeOptions: ColumnTypeOptions = {},
|
|
@@ -18,35 +18,35 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
public columnName(columnName: string):
|
|
21
|
+
public columnName(columnName: string): ColumnDefinition {
|
|
22
22
|
return this.withOption('columnName', columnName)
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
public columnType(columnType: string):
|
|
25
|
+
public columnType(columnType: string): ColumnDefinition {
|
|
26
26
|
return this.withOption('columnType', columnType)
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public nullable():
|
|
29
|
+
public nullable(): ColumnDefinition {
|
|
30
30
|
return this.withOption('nullable', true)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
public notNull():
|
|
33
|
+
public notNull(): ColumnDefinition {
|
|
34
34
|
return this.withOption('nullable', false)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
public sequence(options?: Partial<Model.ColumnTypeDefinition['sequence']>):
|
|
37
|
+
public sequence(options?: Partial<Model.ColumnTypeDefinition['sequence']>): ColumnDefinition {
|
|
38
38
|
return this.withOption('sequence', { precedence: 'BY DEFAULT', ...options })
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
public unique(options: { timing?: Model.ConstraintTiming } = {}):
|
|
41
|
+
public unique(options: { timing?: Model.ConstraintTiming } = {}): ColumnDefinition {
|
|
42
42
|
return this.withOption('unique', options)
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
public default(value: ColumnDefinition['options']['default']):
|
|
45
|
+
public default(value: ColumnDefinition['options']['default']): ColumnDefinition {
|
|
46
46
|
return this.withOption('default', value)
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
public typeAlias(alias: string):
|
|
49
|
+
public typeAlias(alias: string): ColumnDefinition {
|
|
50
50
|
return this.withOption('typeAlias', alias)
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -83,45 +83,49 @@ export class ColumnDefinition extends FieldDefinition<ColumnDefinitionOptions> {
|
|
|
83
83
|
...(typeAlias !== undefined ? { typeAlias } : {}),
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
+
|
|
87
|
+
protected withOption<K extends keyof ColumnDefinitionOptions>(key: K, value: ColumnDefinitionOptions[K]): ColumnDefinition {
|
|
88
|
+
return new ColumnDefinition({ ...this.options, [key]: value })
|
|
89
|
+
}
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
export function column(type: Model.ColumnType, typeOptions: ColumnTypeOptions = {}) {
|
|
89
93
|
return ColumnDefinition.create(type, typeOptions)
|
|
90
94
|
}
|
|
91
95
|
|
|
92
|
-
export function stringColumn() {
|
|
96
|
+
export function stringColumn(): ColumnDefinition {
|
|
93
97
|
return column(Model.ColumnType.String)
|
|
94
98
|
}
|
|
95
99
|
|
|
96
|
-
export function intColumn() {
|
|
100
|
+
export function intColumn(): ColumnDefinition {
|
|
97
101
|
return column(Model.ColumnType.Int)
|
|
98
102
|
}
|
|
99
103
|
|
|
100
|
-
export function boolColumn() {
|
|
104
|
+
export function boolColumn(): ColumnDefinition {
|
|
101
105
|
return column(Model.ColumnType.Bool)
|
|
102
106
|
}
|
|
103
107
|
|
|
104
|
-
export function doubleColumn() {
|
|
108
|
+
export function doubleColumn(): ColumnDefinition {
|
|
105
109
|
return column(Model.ColumnType.Double)
|
|
106
110
|
}
|
|
107
111
|
|
|
108
|
-
export function dateColumn() {
|
|
112
|
+
export function dateColumn(): ColumnDefinition {
|
|
109
113
|
return column(Model.ColumnType.Date)
|
|
110
114
|
}
|
|
111
115
|
|
|
112
|
-
export function dateTimeColumn() {
|
|
116
|
+
export function dateTimeColumn(): ColumnDefinition {
|
|
113
117
|
return column(Model.ColumnType.DateTime)
|
|
114
118
|
}
|
|
115
119
|
|
|
116
|
-
export function jsonColumn() {
|
|
120
|
+
export function jsonColumn(): ColumnDefinition {
|
|
117
121
|
return column(Model.ColumnType.Json)
|
|
118
122
|
}
|
|
119
123
|
|
|
120
|
-
export function enumColumn(enumDefinition: EnumDefinition) {
|
|
124
|
+
export function enumColumn(enumDefinition: EnumDefinition): ColumnDefinition {
|
|
121
125
|
return column(Model.ColumnType.Enum, { enumDefinition })
|
|
122
126
|
}
|
|
123
127
|
|
|
124
|
-
export function uuidColumn() {
|
|
128
|
+
export function uuidColumn(): ColumnDefinition {
|
|
125
129
|
return column(Model.ColumnType.Uuid)
|
|
126
130
|
}
|
|
127
131
|
|
|
@@ -2,12 +2,8 @@ import { Model } from '@contember/schema'
|
|
|
2
2
|
import { CommonContext } from '../context'
|
|
3
3
|
|
|
4
4
|
export abstract class FieldDefinition<O> {
|
|
5
|
-
constructor(public readonly options: O) {
|
|
6
|
-
|
|
7
|
-
protected withOption<K extends keyof O>(this: any, key: K, value: O[K]): { [K in keyof this]: this[K] } {
|
|
8
|
-
return new this.constructor({ ...this.options, [key]: value })
|
|
5
|
+
constructor(public readonly options: O) {
|
|
9
6
|
}
|
|
10
|
-
|
|
11
7
|
abstract createField(context: CreateFieldContext): Model.AnyField
|
|
12
8
|
}
|
|
13
9
|
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { Model } from '@contember/schema'
|
|
2
|
-
import { EntityConstructor,
|
|
2
|
+
import { EntityConstructor, RelationTarget } from '../types'
|
|
3
3
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
4
4
|
|
|
5
|
-
export class
|
|
5
|
+
export class ManyHasManyDefinition extends FieldDefinition<ManyHasManyDefinitionOptions> {
|
|
6
6
|
type = 'ManyHasManyDefinition' as const
|
|
7
7
|
|
|
8
|
-
inversedBy(inversedBy: string):
|
|
8
|
+
inversedBy(inversedBy: string): ManyHasManyDefinition {
|
|
9
9
|
return this.withOption('inversedBy', inversedBy)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
joiningTable(joiningTable: Partial<Model.JoiningTable>):
|
|
12
|
+
joiningTable(joiningTable: Partial<Model.JoiningTable>): ManyHasManyDefinition {
|
|
13
13
|
return this.withOption('joiningTable', joiningTable)
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
orderBy(
|
|
17
17
|
field: string | string[],
|
|
18
18
|
direction: Model.OrderDirection | `${Model.OrderDirection}` = Model.OrderDirection.asc,
|
|
19
|
-
):
|
|
19
|
+
): ManyHasManyDefinition {
|
|
20
20
|
const path = typeof field === 'string' ? [field] : field
|
|
21
21
|
return this.withOption('orderBy', [...(this.options.orderBy || []), { path, direction: direction as Model.OrderDirection }])
|
|
22
22
|
}
|
|
@@ -48,12 +48,16 @@ export class ManyHasManyDefinitionImpl extends FieldDefinition<ManyHasManyDefini
|
|
|
48
48
|
...(options.orderBy ? { orderBy: options.orderBy } : {}),
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
protected withOption<K extends keyof ManyHasManyDefinitionOptions>(key: K, value: ManyHasManyDefinitionOptions[K]): ManyHasManyDefinition {
|
|
54
|
+
return new ManyHasManyDefinition({ ...this.options, [key]: value })
|
|
55
|
+
}
|
|
51
56
|
}
|
|
52
57
|
|
|
53
|
-
export type ManyHasManyDefinition = Interface<ManyHasManyDefinitionImpl>
|
|
54
58
|
|
|
55
59
|
export function manyHasMany(target: EntityConstructor, inversedBy?: string): ManyHasManyDefinition {
|
|
56
|
-
return new
|
|
60
|
+
return new ManyHasManyDefinition({ target, inversedBy })
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
export type ManyHasManyDefinitionOptions = {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Model } from '@contember/schema'
|
|
2
2
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
3
|
-
import { EntityConstructor,
|
|
3
|
+
import { EntityConstructor, RelationTarget } from '../types'
|
|
4
4
|
|
|
5
|
-
export class
|
|
5
|
+
export class ManyHasManyInverseDefinition extends FieldDefinition<ManyHasManyInverseDefinitionOptions> {
|
|
6
6
|
type = 'ManyHasManyInverseDefinition' as const
|
|
7
7
|
|
|
8
8
|
orderBy(
|
|
9
9
|
field: string | string[],
|
|
10
10
|
direction: Model.OrderDirection | `${Model.OrderDirection}` = Model.OrderDirection.asc,
|
|
11
|
-
):
|
|
11
|
+
): ManyHasManyInverseDefinition {
|
|
12
12
|
const path = typeof field === 'string' ? [field] : field
|
|
13
13
|
return this.withOption('orderBy', [...(this.options.orderBy || []), { path, direction: direction as Model.OrderDirection }])
|
|
14
14
|
}
|
|
@@ -23,19 +23,15 @@ export class ManyHasManyInverseDefinitionImpl extends FieldDefinition<ManyHasMan
|
|
|
23
23
|
...(options.orderBy ? { orderBy: options.orderBy } : {}),
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
|
|
27
|
+
protected withOption<K extends keyof ManyHasManyInverseDefinitionOptions>(key: K, value: ManyHasManyInverseDefinitionOptions[K]): ManyHasManyInverseDefinition {
|
|
28
|
+
return new ManyHasManyInverseDefinition({ ...this.options, [key]: value })
|
|
29
|
+
}
|
|
26
30
|
}
|
|
27
31
|
|
|
28
|
-
export type ManyHasManyInverseDefinition = Interface<ManyHasManyInverseDefinitionImpl>
|
|
29
|
-
/** @deprecated use ManyHasManyInverseDefinition */
|
|
30
|
-
export type ManyHasManyInversedDefinition = Interface<ManyHasManyInverseDefinitionImpl>
|
|
31
32
|
|
|
32
33
|
export function manyHasManyInverse(target: EntityConstructor, ownedBy: string): ManyHasManyInverseDefinition {
|
|
33
|
-
return new
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/** @deprecated use manyHasManyInverse */
|
|
37
|
-
export function manyHasManyInversed(target: EntityConstructor, ownedBy: string): ManyHasManyInverseDefinition {
|
|
38
|
-
return new ManyHasManyInverseDefinitionImpl({ target, ownedBy })
|
|
34
|
+
return new ManyHasManyInverseDefinition({ target, ownedBy })
|
|
39
35
|
}
|
|
40
36
|
|
|
41
37
|
export type ManyHasManyInverseDefinitionOptions = {
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { EntityConstructor,
|
|
1
|
+
import { EntityConstructor, RelationTarget } from '../types'
|
|
2
2
|
import { Model } from '@contember/schema'
|
|
3
3
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
4
4
|
|
|
5
|
-
export class
|
|
5
|
+
export class ManyHasOneDefinition extends FieldDefinition<ManyHasOneDefinitionOptions> {
|
|
6
6
|
type = 'ManyHasOneDefinition' as const
|
|
7
7
|
|
|
8
|
-
inversedBy(inversedBy: string):
|
|
8
|
+
inversedBy(inversedBy: string): ManyHasOneDefinition {
|
|
9
9
|
return this.withOption('inversedBy', inversedBy)
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
joiningColumn(columnName: string):
|
|
12
|
+
joiningColumn(columnName: string): ManyHasOneDefinition {
|
|
13
13
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, columnName })
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
onDelete(onDelete: Model.OnDelete | `${Model.OnDelete}`):
|
|
16
|
+
onDelete(onDelete: Model.OnDelete | `${Model.OnDelete}`): ManyHasOneDefinition {
|
|
17
17
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: onDelete as Model.OnDelete })
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
cascadeOnDelete():
|
|
20
|
+
cascadeOnDelete(): ManyHasOneDefinition {
|
|
21
21
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: Model.OnDelete.cascade })
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
setNullOnDelete():
|
|
24
|
+
setNullOnDelete(): ManyHasOneDefinition {
|
|
25
25
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: Model.OnDelete.setNull })
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
restrictOnDelete():
|
|
28
|
+
restrictOnDelete(): ManyHasOneDefinition {
|
|
29
29
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: Model.OnDelete.restrict })
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
notNull():
|
|
32
|
+
notNull(): ManyHasOneDefinition {
|
|
33
33
|
return this.withOption('nullable', false)
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -51,12 +51,14 @@ export class ManyHasOneDefinitionImpl extends FieldDefinition<ManyHasOneDefiniti
|
|
|
51
51
|
},
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
}
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
protected withOption<K extends keyof ManyHasOneDefinitionOptions>(key: K, value: ManyHasOneDefinitionOptions[K]): ManyHasOneDefinition {
|
|
56
|
+
return new ManyHasOneDefinition({ ...this.options, [key]: value })
|
|
57
|
+
}
|
|
58
|
+
}
|
|
57
59
|
|
|
58
60
|
export function manyHasOne(target: EntityConstructor, inversedBy?: string): ManyHasOneDefinition {
|
|
59
|
-
return new
|
|
61
|
+
return new ManyHasOneDefinition({ target, inversedBy })
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
export type ManyHasOneDefinitionOptions = {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Model } from '@contember/schema'
|
|
2
2
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
3
|
-
import { EntityConstructor,
|
|
3
|
+
import { EntityConstructor, RelationTarget } from '../types'
|
|
4
4
|
|
|
5
|
-
export class
|
|
5
|
+
export class OneHasManyDefinition extends FieldDefinition<OneHasManyDefinitionOptions> {
|
|
6
6
|
type = 'OneHasManyDefinition' as const
|
|
7
7
|
|
|
8
8
|
orderBy(
|
|
9
9
|
field: string | string[],
|
|
10
10
|
direction: Model.OrderDirection | `${Model.OrderDirection}` = Model.OrderDirection.asc,
|
|
11
|
-
):
|
|
11
|
+
): OneHasManyDefinition {
|
|
12
12
|
const path = typeof field === 'string' ? [field] : field
|
|
13
13
|
return this.withOption('orderBy', [...(this.options.orderBy || []), { path, direction: direction as Model.OrderDirection }])
|
|
14
14
|
}
|
|
@@ -22,12 +22,15 @@ export class OneHasManyDefinitionImpl extends FieldDefinition<OneHasManyDefiniti
|
|
|
22
22
|
...(options.orderBy ? { orderBy: options.orderBy } : {}),
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
|
|
26
|
+
protected withOption<K extends keyof OneHasManyDefinitionOptions>(key: K, value: OneHasManyDefinitionOptions[K]): OneHasManyDefinition {
|
|
27
|
+
return new OneHasManyDefinition({ ...this.options, [key]: value })
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
|
|
27
|
-
export type OneHasManyDefinition = Interface<OneHasManyDefinitionImpl>
|
|
28
31
|
|
|
29
32
|
export function oneHasMany(target: EntityConstructor, ownedBy: string): OneHasManyDefinition {
|
|
30
|
-
return new
|
|
33
|
+
return new OneHasManyDefinition({ target, ownedBy })
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
export type OneHasManyDefinitionOptions = {
|
|
@@ -1,39 +1,40 @@
|
|
|
1
1
|
import { Model } from '@contember/schema'
|
|
2
|
-
import { EntityConstructor,
|
|
2
|
+
import { EntityConstructor, RelationTarget } from '../types'
|
|
3
3
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
4
4
|
|
|
5
|
-
export class
|
|
5
|
+
export class OneHasOneDefinition extends FieldDefinition<OneHasOneDefinitionOptions> {
|
|
6
6
|
type = 'OneHasOneDefinition' as const
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
inversedBy(inversedBy: string): OneHasOneDefinition {
|
|
9
10
|
return this.withOption('inversedBy', inversedBy)
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
joiningColumn(columnName: string):
|
|
13
|
+
joiningColumn(columnName: string): OneHasOneDefinition {
|
|
13
14
|
return this.withOption('joiningColumn', { ...this.joiningColumn, columnName })
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
onDelete(onDelete: Model.OnDelete | `${Model.OnDelete}`):
|
|
17
|
+
onDelete(onDelete: Model.OnDelete | `${Model.OnDelete}`): OneHasOneDefinition {
|
|
17
18
|
return this.withOption('joiningColumn', { ...this.joiningColumn, onDelete: onDelete as Model.OnDelete })
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
cascadeOnDelete():
|
|
21
|
+
cascadeOnDelete(): OneHasOneDefinition {
|
|
21
22
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: Model.OnDelete.cascade })
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
setNullOnDelete():
|
|
25
|
+
setNullOnDelete(): OneHasOneDefinition {
|
|
25
26
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: Model.OnDelete.setNull })
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
restrictOnDelete():
|
|
29
|
+
restrictOnDelete(): OneHasOneDefinition {
|
|
29
30
|
return this.withOption('joiningColumn', { ...this.options.joiningColumn, onDelete: Model.OnDelete.restrict })
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
notNull():
|
|
33
|
+
notNull(): OneHasOneDefinition {
|
|
33
34
|
return this.withOption('nullable', false)
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
removeOrphan():
|
|
37
|
+
removeOrphan(): OneHasOneDefinition {
|
|
37
38
|
return this.withOption('orphanRemoval', true)
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -57,12 +58,15 @@ export class OneHasOneDefinitionImpl extends FieldDefinition<OneHasOneDefinition
|
|
|
57
58
|
...(options.orphanRemoval ? { orphanRemoval: true } : {}),
|
|
58
59
|
}
|
|
59
60
|
}
|
|
61
|
+
|
|
62
|
+
protected withOption<K extends keyof OneHasOneDefinitionOptions>(key: K, value: OneHasOneDefinitionOptions[K]): OneHasOneDefinition {
|
|
63
|
+
return new OneHasOneDefinition({ ...this.options, [key]: value })
|
|
64
|
+
}
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
export type OneHasOneDefinition = Interface<OneHasOneDefinitionImpl>
|
|
63
67
|
|
|
64
68
|
export function oneHasOne(target: EntityConstructor, inversedBy?: string): OneHasOneDefinition {
|
|
65
|
-
return new
|
|
69
|
+
return new OneHasOneDefinition({ target, inversedBy })
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
export type OneHasOneDefinitionOptions = {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Model } from '@contember/schema'
|
|
2
|
-
import { EntityConstructor
|
|
2
|
+
import { EntityConstructor } from '../types'
|
|
3
3
|
import { CreateFieldContext, FieldDefinition } from './FieldDefinition'
|
|
4
4
|
import { RelationTarget } from '../types'
|
|
5
5
|
|
|
6
|
-
export class
|
|
6
|
+
export class OneHasOneInverseDefinition extends FieldDefinition<OneHasOneInverseDefinitionOptions> {
|
|
7
7
|
type = 'OneHasOneInverseDefinition' as const
|
|
8
8
|
|
|
9
|
-
notNull()
|
|
9
|
+
notNull() {
|
|
10
10
|
return this.withOption('nullable', false)
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -20,20 +20,17 @@ export class OneHasOneInverseDefinitionImpl extends FieldDefinition<OneHasOneInv
|
|
|
20
20
|
nullable: options.nullable === undefined ? true : options.nullable,
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
protected withOption<K extends keyof OneHasOneInverseDefinitionOptions>(this: any, key: K, value: OneHasOneInverseDefinitionOptions[K]): OneHasOneInverseDefinition {
|
|
25
|
+
return new this.constructor({ ...this.options, [key]: value })
|
|
26
|
+
}
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
export type OneHasOneInverseDefinition = Interface<OneHasOneInverseDefinitionImpl>
|
|
26
|
-
/** @deprecated use OneHasOneInverseDefinition */
|
|
27
|
-
export type OneHasOneInversedDefinition = Interface<OneHasOneInverseDefinitionImpl>
|
|
28
29
|
|
|
29
30
|
export function oneHasOneInverse(target: EntityConstructor, ownedBy: string): OneHasOneInverseDefinition {
|
|
30
|
-
return new
|
|
31
|
+
return new OneHasOneInverseDefinition({ target, ownedBy })
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
/** @deprecated use oneHasOneInverse */
|
|
34
|
-
export function oneHasOneInversed(target: EntityConstructor, ownedBy: string): OneHasOneInverseDefinition {
|
|
35
|
-
return new OneHasOneInverseDefinitionImpl({ target, ownedBy })
|
|
36
|
-
}
|
|
37
34
|
|
|
38
35
|
export type OneHasOneInverseDefinitionOptions = {
|
|
39
36
|
target: RelationTarget
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Interface } from './types'
|
|
2
1
|
import { Model } from '@contember/schema'
|
|
3
2
|
import { EnumDefinition } from './EnumDefinition'
|
|
4
3
|
import { SchemaBuilder } from './internal'
|
|
@@ -18,7 +17,7 @@ export * from './ViewDefinition'
|
|
|
18
17
|
export { extendEntity, type EntityExtension } from './extensions'
|
|
19
18
|
|
|
20
19
|
export abstract class Entity {
|
|
21
|
-
[key: string]:
|
|
20
|
+
[key: string]: FieldDefinition<any> | undefined
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
export type ModelDefinition<M> = {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { FieldDefinition } from './fieldDefinitions'
|
|
2
1
|
import { EntityConstructor } from '../../utils'
|
|
2
|
+
import { FieldDefinition } from './fieldDefinitions'
|
|
3
3
|
|
|
4
|
-
export type Interface<T> = { [P in keyof T]: T[P] }
|
|
5
4
|
export type RelationTarget = EntityConstructor
|
|
6
|
-
export type FieldsDefinition = Record<string,
|
|
5
|
+
export type FieldsDefinition = Record<string, FieldDefinition<any>>
|
|
7
6
|
export { type EntityConstructor }
|