forked from typeorm/typeorm
/
EntitySchemaRelationOptions.ts
101 lines (82 loc) · 3.06 KB
/
EntitySchemaRelationOptions.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import {JoinColumnOptions} from "../decorator/options/JoinColumnOptions";
import {RelationType} from "../metadata/types/RelationTypes";
import {JoinTableMultipleColumnsOptions} from "../decorator/options/JoinTableMultipleColumnsOptions";
import {DeferrableType} from "../metadata/types/DeferrableType";
import {OnDeleteType} from "../metadata/types/OnDeleteType";
import {OnUpdateType} from "../metadata/types/OnUpdateType";
import {JoinTableOptions} from "../index";
export interface EntitySchemaRelationOptions {
/**
* Indicates with which entity this relation is made.
*/
target: Function|string;
/**
* Type of relation. Can be one of the value of the RelationTypes class.
*/
type: RelationType;
/**
* Inverse side of the relation.
*/
inverseSide?: string;
/**
* Indicates if this relation will be lazily loaded.
*/
lazy?: boolean;
/**
* Indicates if this relation will be eagerly loaded.
*/
eager?: boolean;
/**
* Indicates if persistence is enabled for the relation.
* By default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.
* If its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.
* This is useful for performance optimization since its disabling avoid multiple extra queries during entity save.
*/
persistence?: boolean;
/**
* Indicates if this relation will be a primary key.
* Can be used only for many-to-one and owner one-to-one relations.
*/
primary?: boolean;
/**
* Join table options of this column. If set to true then it simply means that it has a join table.
*/
joinTable?: boolean|JoinTableOptions|JoinTableMultipleColumnsOptions;
/**
* Join column options of this column. If set to true then it simply means that it has a join column.
*/
joinColumn?: boolean|JoinColumnOptions|JoinColumnOptions[];
/**
* Indicates if this is a parent (can be only many-to-one relation) relation in the tree tables.
*/
treeParent?: boolean;
/**
* Indicates if this is a children (can be only one-to-many relation) relation in the tree tables.
*/
treeChildren?: boolean;
/**
* If set to true then it means that related object can be allowed to be inserted / updated / removed to the db.
* This is option a shortcut if you would like to set cascadeInsert, cascadeUpdate and cascadeRemove to true.
*/
cascade?: boolean|("insert"|"update"|"remove"|"soft-remove"|"recover")[];
/**
* Default database value.
*/
default?: any;
/**
* Indicates if relation column value can be nullable or not.
*/
nullable?: boolean;
/**
* Database cascade action on delete.
*/
onDelete?: OnDeleteType;
/**
* Database cascade action on update.
*/
onUpdate?: OnUpdateType;
/**
* Indicate if foreign key constraints can be deferred.
*/
deferrable?: DeferrableType;
}