oak-domain 3.0.3 → 4.0.0

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 (203) hide show
  1. package/lib/actions/action.d.ts +16 -16
  2. package/lib/actions/action.js +17 -17
  3. package/lib/actions/relation.d.ts +5 -5
  4. package/lib/actions/relation.js +25 -38
  5. package/lib/base-app-domain/ActionAuth/Schema.d.ts +186 -160
  6. package/lib/base-app-domain/ActionAuth/Storage.js +39 -42
  7. package/lib/base-app-domain/ActionDefDict.d.ts +8 -9
  8. package/lib/base-app-domain/ActionDefDict.js +9 -11
  9. package/lib/base-app-domain/EntityDict.d.ts +28 -24
  10. package/lib/base-app-domain/I18n/Schema.d.ts +129 -129
  11. package/lib/base-app-domain/I18n/Schema.js +2 -2
  12. package/lib/base-app-domain/I18n/Storage.d.ts +3 -3
  13. package/lib/base-app-domain/I18n/Storage.js +59 -59
  14. package/lib/base-app-domain/Modi/Action.d.ts +10 -10
  15. package/lib/base-app-domain/Modi/Action.js +14 -14
  16. package/lib/base-app-domain/Modi/Schema.d.ts +136 -136
  17. package/lib/base-app-domain/Modi/Storage.js +63 -63
  18. package/lib/base-app-domain/ModiEntity/Schema.d.ts +384 -311
  19. package/lib/base-app-domain/ModiEntity/Storage.js +30 -30
  20. package/lib/base-app-domain/Oper/Schema.d.ts +153 -152
  21. package/lib/base-app-domain/Oper/Storage.js +38 -38
  22. package/lib/base-app-domain/OperEntity/Schema.d.ts +373 -300
  23. package/lib/base-app-domain/OperEntity/Storage.js +30 -30
  24. package/lib/base-app-domain/Path/Schema.d.ts +149 -0
  25. package/lib/base-app-domain/Path/Schema.js +2 -0
  26. package/lib/base-app-domain/Path/Storage.d.ts +3 -0
  27. package/lib/base-app-domain/Path/Storage.js +54 -0
  28. package/lib/base-app-domain/Relation/Schema.d.ts +188 -188
  29. package/lib/base-app-domain/Relation/Storage.js +54 -54
  30. package/lib/base-app-domain/Relation.d.ts +2 -10
  31. package/lib/base-app-domain/Relation.js +4 -10
  32. package/lib/base-app-domain/RelationAuth/Schema.d.ts +214 -180
  33. package/lib/base-app-domain/RelationAuth/Storage.js +44 -46
  34. package/lib/base-app-domain/Storage.js +31 -27
  35. package/lib/base-app-domain/User/Action.d.ts +10 -10
  36. package/lib/base-app-domain/User/Action.js +12 -12
  37. package/lib/base-app-domain/User/Schema.d.ts +210 -197
  38. package/lib/base-app-domain/User/Storage.js +33 -33
  39. package/lib/base-app-domain/UserEntityClaim/Schema.d.ts +264 -0
  40. package/lib/base-app-domain/UserEntityClaim/Schema.js +2 -0
  41. package/lib/base-app-domain/UserEntityClaim/Storage.d.ts +3 -0
  42. package/lib/base-app-domain/UserEntityClaim/Storage.js +37 -0
  43. package/lib/base-app-domain/UserEntityGrant/Action.d.ts +5 -5
  44. package/lib/base-app-domain/UserEntityGrant/Action.js +5 -5
  45. package/lib/base-app-domain/UserEntityGrant/Schema.d.ts +131 -157
  46. package/lib/base-app-domain/UserEntityGrant/Storage.js +25 -29
  47. package/lib/base-app-domain/UserRelation/Schema.d.ts +208 -194
  48. package/lib/base-app-domain/UserRelation/Storage.js +56 -56
  49. package/lib/base-app-domain/_SubQuery.d.ts +142 -112
  50. package/lib/base-app-domain/index.d.ts +4 -4
  51. package/lib/base-app-domain/index.js +7 -7
  52. package/lib/checkers/index.d.ts +5 -5
  53. package/lib/checkers/index.js +13 -14
  54. package/lib/compiler/entities.d.ts +2 -0
  55. package/lib/compiler/entities.js +7 -0
  56. package/lib/compiler/env.d.ts +13 -14
  57. package/lib/compiler/env.js +45 -50
  58. package/lib/compiler/localeBuilder.d.ts +27 -22
  59. package/lib/compiler/localeBuilder.js +184 -169
  60. package/lib/compiler/schemalBuilder.d.ts +27 -11
  61. package/lib/compiler/schemalBuilder.js +3569 -3787
  62. package/lib/entities/ActionAuth.d.ts +10 -12
  63. package/lib/entities/ActionAuth.js +31 -29
  64. package/lib/entities/I18n.d.ts +9 -9
  65. package/lib/entities/I18n.js +36 -37
  66. package/lib/entities/Modi.js +49 -49
  67. package/lib/entities/ModiEntity.js +18 -18
  68. package/lib/entities/Oper.js +21 -21
  69. package/lib/entities/OperEntity.js +18 -18
  70. package/lib/entities/Path.d.ts +8 -0
  71. package/lib/entities/Path.js +35 -0
  72. package/lib/entities/Relation.d.ts +8 -8
  73. package/lib/entities/Relation.js +35 -35
  74. package/lib/entities/RelationAuth.d.ts +8 -8
  75. package/lib/entities/RelationAuth.js +34 -34
  76. package/lib/entities/User.js +31 -31
  77. package/lib/entities/UserEntityClaim.d.ts +13 -0
  78. package/lib/entities/UserEntityClaim.js +17 -0
  79. package/lib/entities/UserEntityGrant.d.ts +9 -8
  80. package/lib/entities/UserEntityGrant.js +15 -18
  81. package/lib/entities/UserRelation.d.ts +10 -10
  82. package/lib/entities/UserRelation.js +38 -38
  83. package/lib/index.d.ts +23 -0
  84. package/lib/index.js +37 -0
  85. package/lib/store/AsyncRowStore.d.ts +60 -58
  86. package/lib/store/AsyncRowStore.js +118 -190
  87. package/lib/store/CascadeStore.d.ts +104 -103
  88. package/lib/store/CascadeStore.js +1688 -2036
  89. package/lib/store/RelationAuth.d.ts +96 -103
  90. package/lib/store/RelationAuth.js +1336 -1492
  91. package/lib/store/SyncRowStore.d.ts +29 -29
  92. package/lib/store/SyncRowStore.js +50 -49
  93. package/lib/store/TriggerExecutor.d.ts +38 -31
  94. package/lib/store/TriggerExecutor.js +459 -532
  95. package/lib/store/actionAuth.d.ts +4 -4
  96. package/lib/store/actionAuth.js +25 -40
  97. package/lib/store/actionDef.d.ts +10 -10
  98. package/lib/store/actionDef.js +278 -353
  99. package/lib/store/checker.d.ts +26 -26
  100. package/lib/store/checker.js +487 -623
  101. package/lib/store/filter.d.ts +85 -123
  102. package/lib/store/filter.js +1651 -1761
  103. package/lib/store/modi.d.ts +13 -13
  104. package/lib/store/modi.js +254 -315
  105. package/lib/store/relation.d.ts +12 -12
  106. package/lib/store/relation.js +67 -67
  107. package/lib/timers/oper.d.ts +18 -18
  108. package/lib/timers/oper.js +57 -60
  109. package/lib/timers/vaccum.d.ts +20 -20
  110. package/lib/timers/vaccum.js +111 -176
  111. package/lib/triggers/index.d.ts +5 -5
  112. package/lib/triggers/index.js +8 -8
  113. package/lib/types/Action.d.ts +20 -20
  114. package/lib/types/AppLoader.d.ts +17 -11
  115. package/lib/types/AppLoader.js +10 -10
  116. package/lib/types/Aspect.d.ts +1 -3
  117. package/lib/types/Auth.d.ts +70 -74
  118. package/lib/types/Cluster.d.ts +5 -0
  119. package/lib/types/Cluster.js +2 -0
  120. package/lib/types/Connector.d.ts +38 -34
  121. package/lib/types/Connector.js +2 -9
  122. package/lib/types/DataType.d.ts +25 -24
  123. package/lib/types/DataType.js +6 -6
  124. package/lib/types/Demand.d.ts +88 -88
  125. package/lib/types/Demand.js +10 -10
  126. package/lib/types/Endpoint.d.ts +11 -11
  127. package/lib/types/Entity.d.ts +203 -198
  128. package/lib/types/Entity.js +15 -15
  129. package/lib/types/EntityDesc.d.ts +9 -8
  130. package/lib/types/EntityDesc.js +2 -2
  131. package/lib/types/Environment.d.ts +88 -57
  132. package/lib/types/Environment.js +2 -2
  133. package/lib/types/Exception.d.ts +147 -120
  134. package/lib/types/Exception.js +406 -406
  135. package/lib/types/Expression.d.ts +163 -163
  136. package/lib/types/Expression.js +397 -427
  137. package/lib/types/Geo.d.ts +18 -18
  138. package/lib/types/Locale.d.ts +25 -25
  139. package/lib/types/Logger.d.ts +6 -6
  140. package/lib/types/Polyfill.d.ts +24 -24
  141. package/lib/types/Port.d.ts +18 -18
  142. package/lib/types/RowStore.d.ts +18 -18
  143. package/lib/types/RowStore.js +33 -34
  144. package/lib/types/Storage.d.ts +58 -57
  145. package/lib/types/Style.d.ts +11 -11
  146. package/lib/types/Timer.d.ts +14 -14
  147. package/lib/types/Trigger.d.ts +124 -108
  148. package/lib/types/Trigger.js +58 -54
  149. package/lib/types/Watcher.d.ts +19 -19
  150. package/lib/types/index.d.ts +26 -24
  151. package/lib/types/index.js +29 -27
  152. package/lib/types/schema/DataTypes.d.ts +34 -34
  153. package/lib/utils/SimpleConnector.d.ts +64 -50
  154. package/lib/utils/SimpleConnector.js +206 -184
  155. package/lib/utils/assert.d.ts +5 -5
  156. package/lib/utils/assert.js +9 -9
  157. package/lib/utils/concurrent.d.ts +15 -15
  158. package/lib/utils/concurrent.js +63 -89
  159. package/lib/utils/date.js +18 -18
  160. package/lib/utils/{url.d.ts → domain.d.ts} +1 -1
  161. package/lib/utils/{url.js → domain.js} +11 -12
  162. package/lib/utils/geo.js +24 -24
  163. package/lib/utils/lodash.d.ts +24 -20
  164. package/lib/utils/lodash.js +46 -55
  165. package/lib/utils/mask.js +34 -35
  166. package/lib/utils/money.d.ts +6 -6
  167. package/lib/utils/money.js +51 -40
  168. package/lib/utils/projection.d.ts +4 -0
  169. package/lib/utils/projection.js +15 -0
  170. package/lib/utils/random/random.js +19 -24
  171. package/lib/utils/random/random.mp.js +14 -25
  172. package/lib/utils/random/random.native.d.ts +1 -0
  173. package/lib/utils/random/random.native.js +14 -0
  174. package/lib/utils/random/random.web.js +11 -17
  175. package/lib/utils/string.d.ts +28 -28
  176. package/lib/utils/string.js +69 -82
  177. package/lib/utils/url/index.d.ts +7 -0
  178. package/lib/utils/url/index.js +8 -0
  179. package/lib/utils/url/index.mp.d.ts +4 -0
  180. package/lib/utils/url/index.mp.js +8 -0
  181. package/lib/utils/url/index.native.d.ts +12 -0
  182. package/lib/utils/url/index.native.js +7 -0
  183. package/lib/utils/url/index.web.d.ts +12 -0
  184. package/lib/utils/url/index.web.js +7 -0
  185. package/lib/utils/uuid.d.ts +17 -17
  186. package/lib/utils/uuid.js +218 -257
  187. package/lib/utils/validator.d.ts +26 -25
  188. package/lib/utils/validator.js +131 -128
  189. package/lib/utils/version.js +21 -21
  190. package/package.json +51 -49
  191. package/src/entities/ActionAuth.ts +41 -41
  192. package/src/entities/I18n.ts +45 -46
  193. package/src/entities/Modi.ts +69 -69
  194. package/src/entities/ModiEntity.ts +26 -26
  195. package/src/entities/Oper.ts +32 -32
  196. package/src/entities/OperEntity.ts +27 -27
  197. package/src/entities/Path.ts +43 -0
  198. package/src/entities/Relation.ts +43 -43
  199. package/src/entities/RelationAuth.ts +44 -43
  200. package/src/entities/User.ts +48 -48
  201. package/src/entities/UserEntityClaim.ts +30 -0
  202. package/src/entities/UserEntityGrant.ts +24 -27
  203. package/src/entities/UserRelation.ts +50 -50
@@ -1,108 +1,124 @@
1
- import { SelectOption, CheckerType } from ".";
2
- import { GenericAction } from "../actions/action";
3
- import { AsyncContext } from "../store/AsyncRowStore";
4
- import { SyncContext } from "../store/SyncRowStore";
5
- import { EntityDict, OperateOption } from "../types/Entity";
6
- import { EntityShape } from "../types/Entity";
7
- /**
8
- * 优先级越小,越早执行。定义在1~99之间
9
- */
10
- export declare const TRIGGER_MIN_PRIORITY = 1;
11
- export declare const TRIGGER_DEFAULT_PRIORITY = 25;
12
- export declare const TRIGGER_MAX_PRIORITY = 50;
13
- export declare const CHECKER_MAX_PRIORITY = 99;
14
- export declare const CHECKER_PRIORITY_MAP: Record<CheckerType, number>;
15
- interface TriggerBase<ED extends EntityDict, T extends keyof ED> {
16
- checkerType?: CheckerType;
17
- entity: T;
18
- name: string;
19
- priority?: number;
20
- }
21
- export interface CreateTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends TriggerBase<ED, T> {
22
- action: 'create';
23
- check?: (operation: ED[T]['Create']) => boolean;
24
- fn: (event: {
25
- operation: ED[T]['Create'];
26
- }, context: Cxt, option: OperateOption) => Promise<number> | number;
27
- }
28
- export interface CreateTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends CreateTriggerBase<ED, T, Cxt> {
29
- when: 'before' | 'after';
30
- }
31
- export interface CreateTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends CreateTriggerBase<ED, T, Cxt> {
32
- when: 'commit';
33
- strict?: 'takeEasy' | 'makeSure';
34
- }
35
- export declare type CreateTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = CreateTriggerInTxn<ED, T, Cxt> | CreateTriggerCrossTxn<ED, T, Cxt>;
36
- /**
37
- * update trigger如果带有filter,说明只对存在限定条件的行起作用。此时系统在进行相应动作时,
38
- * 会判定当前动作的filter条件和trigger所定义的filter是否有交集(即有同时满足两个条件的行)
39
- * 只要有,就会触发trigger。要注意的是这个条件是exists而不是all
40
- */
41
- export interface UpdateTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends TriggerBase<ED, T> {
42
- action: Exclude<ED[T]['Action'], GenericAction> | 'update' | Array<Exclude<ED[T]['Action'], GenericAction> | 'update'>;
43
- attributes?: keyof ED[T]['OpSchema'] | Array<keyof ED[T]['OpSchema']>;
44
- check?: (operation: ED[T]['Update']) => boolean;
45
- fn: (event: {
46
- operation: ED[T]['Update'];
47
- }, context: Cxt, option: OperateOption) => Promise<number> | number;
48
- filter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Update'], context: Cxt, option: OperateOption) => ED[T]['Update']['filter'] | Promise<ED[T]['Update']['filter']>);
49
- }
50
- export interface UpdateTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends UpdateTriggerBase<ED, T, Cxt> {
51
- when: 'before' | 'after';
52
- }
53
- export interface UpdateTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends UpdateTriggerBase<ED, T, Cxt> {
54
- when: 'commit';
55
- strict?: 'takeEasy' | 'makeSure';
56
- }
57
- export declare type UpdateTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = UpdateTriggerInTxn<ED, T, Cxt> | UpdateTriggerCrossTxn<ED, T, Cxt>;
58
- /**
59
- * 同update trigger一样,remove trigger如果带有filter,说明只对存在限定条件的行起作用。此时系统在进行相应动作时,
60
- * 会判定当前动作的filter条件和trigger所定义的filter是否有交集(即有同时满足两个条件的行)
61
- * 只要有,就会触发trigger。要注意的是这个条件是exists而不是all
62
- */
63
- export interface RemoveTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends TriggerBase<ED, T> {
64
- action: 'remove';
65
- check?: (operation: ED[T]['Remove']) => boolean;
66
- fn: (event: {
67
- operation: ED[T]['Remove'];
68
- }, context: Cxt, option: OperateOption) => Promise<number> | number;
69
- filter?: ED[T]['Remove']['filter'] | ((operation: ED[T]['Remove'], context: Cxt, option: OperateOption) => ED[T]['Remove']['filter'] | Promise<ED[T]['Remove']['filter']>);
70
- }
71
- export interface RemoveTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends RemoveTriggerBase<ED, T, Cxt> {
72
- when: 'before' | 'after';
73
- }
74
- export interface RemoveTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends RemoveTriggerBase<ED, T, Cxt> {
75
- when: 'commit';
76
- strict?: 'takeEasy' | 'makeSure';
77
- }
78
- export declare type RemoveTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = RemoveTriggerInTxn<ED, T, Cxt> | RemoveTriggerCrossTxn<ED, T, Cxt>;
79
- export interface SelectTriggerBase<ED extends EntityDict, T extends keyof ED> extends TriggerBase<ED, T> {
80
- action: 'select';
81
- }
82
- /**
83
- * selection似乎不需要支持跨事务?没想清楚
84
- * todo by Xc
85
- */
86
- export interface SelectTriggerBefore<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends SelectTriggerBase<ED, T> {
87
- when: 'before';
88
- fn: (event: {
89
- operation: ED[T]['Selection'];
90
- }, context: Cxt, params?: SelectOption) => Promise<number> | number;
91
- }
92
- export interface SelectTriggerAfter<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends SelectTriggerBase<ED, T> {
93
- when: 'after';
94
- fn: (event: {
95
- operation: ED[T]['Selection'];
96
- result: Partial<ED[T]['Schema']>[];
97
- }, context: Cxt, params?: SelectOption) => Promise<number> | number;
98
- }
99
- export declare type SelectTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = SelectTriggerBefore<ED, T, Cxt> | SelectTriggerAfter<ED, T, Cxt>;
100
- export declare type Trigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = CreateTrigger<ED, T, Cxt> | UpdateTrigger<ED, T, Cxt> | RemoveTrigger<ED, T, Cxt> | SelectTrigger<ED, T, Cxt>;
101
- export interface TriggerEntityShape extends EntityShape {
102
- $$triggerData$$?: {
103
- name: string;
104
- operation: object;
105
- };
106
- $$triggerTimestamp$$?: number;
107
- }
108
- export {};
1
+ import { SelectOption, CheckerType } from ".";
2
+ import { GenericAction } from "../actions/action";
3
+ import { AsyncContext } from "../store/AsyncRowStore";
4
+ import { SyncContext } from "../store/SyncRowStore";
5
+ import { EntityDict, OperateOption } from "../types/Entity";
6
+ import { EntityShape } from "../types/Entity";
7
+ export type ModiTurn = 'create' | 'apply' | 'both';
8
+ /**
9
+ * 优先级越小,越早执行。定义在1~99之间
10
+ */
11
+ export declare const TRIGGER_MIN_PRIORITY = 1;
12
+ export declare const TRIGGER_DEFAULT_PRIORITY = 25;
13
+ export declare const TRIGGER_MAX_PRIORITY = 50;
14
+ export declare const CHECKER_MAX_PRIORITY = 99;
15
+ /**
16
+ * logical可能会更改row和data的值,应当最先执行,data和row不能修改相关的值,如果要修改,手动置priority小一点以确保安全
17
+ */
18
+ export declare const CHECKER_PRIORITY_MAP: Record<CheckerType, number>;
19
+ interface TriggerBase<ED extends EntityDict, T extends keyof ED> {
20
+ checkerType?: CheckerType;
21
+ entity: T;
22
+ name: string;
23
+ priority?: number;
24
+ }
25
+ export interface CreateTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends TriggerBase<ED, T> {
26
+ action: 'create';
27
+ mt?: ModiTurn;
28
+ check?: (operation: ED[T]['Create']) => boolean;
29
+ }
30
+ export interface CreateTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends CreateTriggerBase<ED, T, Cxt> {
31
+ when: 'before' | 'after';
32
+ fn: (event: {
33
+ operation: ED[T]['Create'];
34
+ }, context: Cxt, option: OperateOption) => Promise<number> | number;
35
+ }
36
+ export interface CreateTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends CreateTriggerBase<ED, T, Cxt> {
37
+ when: 'commit';
38
+ strict?: 'takeEasy' | 'makeSure';
39
+ fn: (event: {
40
+ rows: ED[T]['OpSchema'][];
41
+ }, context: Cxt, option: OperateOption) => Promise<number> | number;
42
+ }
43
+ export type CreateTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = CreateTriggerInTxn<ED, T, Cxt> | CreateTriggerCrossTxn<ED, T, Cxt>;
44
+ /**
45
+ * update trigger如果带有filter,说明只对存在限定条件的行起作用。此时系统在进行相应动作时,
46
+ * 会判定当前动作的filter条件和trigger所定义的filter是否有交集(即有同时满足两个条件的行)
47
+ * 只要有,就会触发trigger。要注意的是这个条件是exists而不是all
48
+ */
49
+ export interface UpdateTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends TriggerBase<ED, T> {
50
+ action: Exclude<ED[T]['Action'], GenericAction> | 'update' | Array<Exclude<ED[T]['Action'], GenericAction> | 'update'>;
51
+ attributes?: keyof ED[T]['OpSchema'] | Array<keyof ED[T]['OpSchema']>;
52
+ mt?: ModiTurn;
53
+ check?: (operation: ED[T]['Update']) => boolean;
54
+ filter?: ED[T]['Update']['filter'] | ((operation: ED[T]['Update'], context: Cxt, option: OperateOption) => ED[T]['Update']['filter'] | Promise<ED[T]['Update']['filter']>);
55
+ }
56
+ export interface UpdateTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends UpdateTriggerBase<ED, T, Cxt> {
57
+ when: 'before' | 'after';
58
+ fn: (event: {
59
+ operation: ED[T]['Update'];
60
+ }, context: Cxt, option: OperateOption) => Promise<number> | number;
61
+ }
62
+ export interface UpdateTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends UpdateTriggerBase<ED, T, Cxt> {
63
+ when: 'commit';
64
+ strict?: 'takeEasy' | 'makeSure';
65
+ fn: (event: {
66
+ rows: ED[T]['OpSchema'][];
67
+ }, context: Cxt, option: OperateOption) => Promise<number> | number;
68
+ }
69
+ export type UpdateTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = UpdateTriggerInTxn<ED, T, Cxt> | UpdateTriggerCrossTxn<ED, T, Cxt>;
70
+ /**
71
+ * 同update trigger一样,remove trigger如果带有filter,说明只对存在限定条件的行起作用。此时系统在进行相应动作时,
72
+ * 会判定当前动作的filter条件和trigger所定义的filter是否有交集(即有同时满足两个条件的行)
73
+ * 只要有,就会触发trigger。要注意的是这个条件是exists而不是all
74
+ */
75
+ export interface RemoveTriggerBase<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends TriggerBase<ED, T> {
76
+ action: 'remove';
77
+ mt?: ModiTurn;
78
+ check?: (operation: ED[T]['Remove']) => boolean;
79
+ filter?: ED[T]['Remove']['filter'] | ((operation: ED[T]['Remove'], context: Cxt, option: OperateOption) => ED[T]['Remove']['filter'] | Promise<ED[T]['Remove']['filter']>);
80
+ }
81
+ export interface RemoveTriggerInTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends RemoveTriggerBase<ED, T, Cxt> {
82
+ when: 'before' | 'after';
83
+ fn: (event: {
84
+ operation: ED[T]['Remove'];
85
+ }, context: Cxt, option: OperateOption) => Promise<number> | number;
86
+ }
87
+ export interface RemoveTriggerCrossTxn<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends RemoveTriggerBase<ED, T, Cxt> {
88
+ when: 'commit';
89
+ strict?: 'takeEasy' | 'makeSure';
90
+ fn: (event: {
91
+ rows: ED[T]['OpSchema'][];
92
+ }, context: Cxt, option: OperateOption) => Promise<number> | number;
93
+ }
94
+ export type RemoveTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = RemoveTriggerInTxn<ED, T, Cxt> | RemoveTriggerCrossTxn<ED, T, Cxt>;
95
+ export interface SelectTriggerBase<ED extends EntityDict, T extends keyof ED> extends TriggerBase<ED, T> {
96
+ action: 'select';
97
+ }
98
+ /**
99
+ * selection似乎不需要支持跨事务?没想清楚
100
+ * todo by Xc
101
+ */
102
+ export interface SelectTriggerBefore<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends SelectTriggerBase<ED, T> {
103
+ when: 'before';
104
+ fn: (event: {
105
+ operation: ED[T]['Selection'];
106
+ }, context: Cxt, params?: SelectOption) => Promise<number> | number;
107
+ }
108
+ export interface SelectTriggerAfter<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> extends SelectTriggerBase<ED, T> {
109
+ when: 'after';
110
+ fn: (event: {
111
+ operation: ED[T]['Selection'];
112
+ result: Partial<ED[T]['Schema']>[];
113
+ }, context: Cxt, params?: SelectOption) => Promise<number> | number;
114
+ }
115
+ export type SelectTrigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = SelectTriggerBefore<ED, T, Cxt> | SelectTriggerAfter<ED, T, Cxt>;
116
+ export type Trigger<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED> | SyncContext<ED>> = CreateTrigger<ED, T, Cxt> | UpdateTrigger<ED, T, Cxt> | RemoveTrigger<ED, T, Cxt> | SelectTrigger<ED, T, Cxt>;
117
+ export interface TriggerEntityShape extends EntityShape {
118
+ $$triggerData$$?: {
119
+ name: string;
120
+ operation: object;
121
+ };
122
+ $$triggerTimestamp$$?: number;
123
+ }
124
+ export {};
@@ -1,54 +1,58 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CHECKER_PRIORITY_MAP = exports.CHECKER_MAX_PRIORITY = exports.TRIGGER_MAX_PRIORITY = exports.TRIGGER_DEFAULT_PRIORITY = exports.TRIGGER_MIN_PRIORITY = void 0;
4
- /**
5
- * 优先级越小,越早执行。定义在1~99之间
6
- */
7
- exports.TRIGGER_MIN_PRIORITY = 1;
8
- exports.TRIGGER_DEFAULT_PRIORITY = 25;
9
- exports.TRIGGER_MAX_PRIORITY = 50;
10
- exports.CHECKER_MAX_PRIORITY = 99;
11
- exports.CHECKER_PRIORITY_MAP = {
12
- row: 51,
13
- data: 61,
14
- relation: 71,
15
- logicalRelation: 72,
16
- logical: 73,
17
- };
18
- ;
19
- ;
20
- ;
21
- ;
22
- ;
23
- ;
24
- ;
25
- ;
26
- ;
27
- ;
28
- ;
29
- ;
30
- ;
31
- ;
32
- /* export abstract class Executor<ED extends EntityDict, Cxt extends AsyncContext<ED>> {
33
- static dataAttr: TriggerDataAttribute = '$$triggerData$$';
34
- static timestampAttr: TriggerTimestampAttribute = '$$triggerTimestamp$$';
35
-
36
- abstract registerTrigger<T extends keyof ED>(trigger: Trigger<ED, T>): void;
37
-
38
- abstract preOperation<T extends keyof ED>(
39
- entity: T,
40
- operation: ED[T]['Operation'] | ED[T]['Selection'] & { action: 'select' },
41
- context: Cxt,
42
- option: OperateOption | SelectOption
43
- ): Promise<void>;
44
-
45
- abstract postOperation<T extends keyof ED>(
46
- entity: T,
47
- operation: ED[T]['Operation'] | ED[T]['Selection'] & { action: 'select' },
48
- context: Cxt,
49
- option: OperateOption | SelectOption,
50
- result?: SelectRowShape<ED[T]['Schema'], ED[T]['Selection']['data']>[]
51
- ): Promise<void>;
52
-
53
- abstract checkpoint(context: Cxt, timestamp: number): Promise<number>; // 将所有在timestamp之前存在不一致的数据进行恢复
54
- } */
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHECKER_PRIORITY_MAP = exports.CHECKER_MAX_PRIORITY = exports.TRIGGER_MAX_PRIORITY = exports.TRIGGER_DEFAULT_PRIORITY = exports.TRIGGER_MIN_PRIORITY = void 0;
4
+ /**
5
+ * 优先级越小,越早执行。定义在1~99之间
6
+ */
7
+ exports.TRIGGER_MIN_PRIORITY = 1;
8
+ exports.TRIGGER_DEFAULT_PRIORITY = 25;
9
+ exports.TRIGGER_MAX_PRIORITY = 50;
10
+ exports.CHECKER_MAX_PRIORITY = 99;
11
+ /**
12
+ * logical可能会更改row和data的值,应当最先执行,data和row不能修改相关的值,如果要修改,手动置priority小一点以确保安全
13
+ */
14
+ exports.CHECKER_PRIORITY_MAP = {
15
+ logical: 33,
16
+ row: 51,
17
+ data: 61,
18
+ logicalData: 61,
19
+ relation: 71,
20
+ logicalRelation: 71,
21
+ };
22
+ ;
23
+ ;
24
+ ;
25
+ ;
26
+ ;
27
+ ;
28
+ ;
29
+ ;
30
+ ;
31
+ ;
32
+ ;
33
+ ;
34
+ ;
35
+ ;
36
+ /* export abstract class Executor<ED extends EntityDict, Cxt extends AsyncContext<ED>> {
37
+ static dataAttr: TriggerDataAttribute = '$$triggerData$$';
38
+ static timestampAttr: TriggerTimestampAttribute = '$$triggerTimestamp$$';
39
+
40
+ abstract registerTrigger<T extends keyof ED>(trigger: Trigger<ED, T>): void;
41
+
42
+ abstract preOperation<T extends keyof ED>(
43
+ entity: T,
44
+ operation: ED[T]['Operation'] | ED[T]['Selection'] & { action: 'select' },
45
+ context: Cxt,
46
+ option: OperateOption | SelectOption
47
+ ): Promise<void>;
48
+
49
+ abstract postOperation<T extends keyof ED>(
50
+ entity: T,
51
+ operation: ED[T]['Operation'] | ED[T]['Selection'] & { action: 'select' },
52
+ context: Cxt,
53
+ option: OperateOption | SelectOption,
54
+ result?: SelectRowShape<ED[T]['Schema'], ED[T]['Selection']['data']>[]
55
+ ): Promise<void>;
56
+
57
+ abstract checkpoint(context: Cxt, timestamp: number): Promise<number>; // 将所有在timestamp之前存在不一致的数据进行恢复
58
+ } */
@@ -1,19 +1,19 @@
1
- import { AsyncContext } from "../store/AsyncRowStore";
2
- import { EntityDict, OperationResult } from "./Entity";
3
- declare type ActionData<ED extends EntityDict, T extends keyof ED> = ED[T]['Update']['data'] | ED[T]['Remove']['data'];
4
- export interface BBWatcher<ED extends EntityDict, T extends keyof ED> {
5
- name: string;
6
- entity: T;
7
- filter: ED[T]['Selection']['filter'] | (() => ED[T]['Selection']['filter']);
8
- action: ED[T]['Operation']['action'];
9
- actionData: ActionData<ED, T> | (() => ActionData<ED, T>);
10
- }
11
- export interface WBWatcher<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> {
12
- name: string;
13
- entity: T;
14
- filter: ED[T]['Selection']['filter'] | (() => Promise<ED[T]['Selection']['filter']>);
15
- projection: ED[T]['Selection']['data'] | (() => Promise<ED[T]['Selection']['data']>);
16
- fn: (context: Cxt, data: Partial<ED[T]['Schema']>[]) => Promise<OperationResult<ED>>;
17
- }
18
- export declare type Watcher<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> = BBWatcher<ED, T> | WBWatcher<ED, T, Cxt>;
19
- export {};
1
+ import { AsyncContext } from "../store/AsyncRowStore";
2
+ import { EntityDict, OperationResult } from "./Entity";
3
+ type ActionData<ED extends EntityDict, T extends keyof ED> = ED[T]['Update']['data'] | ED[T]['Remove']['data'];
4
+ export interface BBWatcher<ED extends EntityDict, T extends keyof ED> {
5
+ name: string;
6
+ entity: T;
7
+ filter: ED[T]['Selection']['filter'] | (() => ED[T]['Selection']['filter']);
8
+ action: ED[T]['Operation']['action'];
9
+ actionData: ActionData<ED, T> | (() => ActionData<ED, T>);
10
+ }
11
+ export interface WBWatcher<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> {
12
+ name: string;
13
+ entity: T;
14
+ filter: ED[T]['Selection']['filter'] | (() => Promise<ED[T]['Selection']['filter']>);
15
+ projection: ED[T]['Selection']['data'] | (() => Promise<ED[T]['Selection']['data']>);
16
+ fn: (context: Cxt, data: Partial<ED[T]['Schema']>[]) => Promise<OperationResult<ED>>;
17
+ }
18
+ export type Watcher<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> = BBWatcher<ED, T> | WBWatcher<ED, T, Cxt>;
19
+ export {};
@@ -1,24 +1,26 @@
1
- export * from './Action';
2
- export * from './Aspect';
3
- export * from './Auth';
4
- export * from './Context';
5
- export * from './DataType';
6
- export * from './Demand';
7
- export * from './Entity';
8
- export * from './Expression';
9
- export * from './Geo';
10
- export * from './Logger';
11
- export * from './Polyfill';
12
- export * from './RowStore';
13
- export * from './Storage';
14
- export * from './Trigger';
15
- export * from './Exception';
16
- export * from './Watcher';
17
- export * from './AppLoader';
18
- export * from './Connector';
19
- export * from './Timer';
20
- export * from './Port';
21
- export * from './Endpoint';
22
- export * from './Style';
23
- export * from './EntityDesc';
24
- export * from './Environment';
1
+ export * from './Action';
2
+ export * from './Aspect';
3
+ export * from './Auth';
4
+ export * from './Context';
5
+ export * from './DataType';
6
+ export * from './Demand';
7
+ export * from './Entity';
8
+ export * from './Expression';
9
+ export * from './Geo';
10
+ export * from './Logger';
11
+ export * from './Polyfill';
12
+ export * from './RowStore';
13
+ export * from './Storage';
14
+ export * from './Trigger';
15
+ export * from './Exception';
16
+ export * from './Watcher';
17
+ export * from './AppLoader';
18
+ export * from './Connector';
19
+ export * from './Timer';
20
+ export * from './Port';
21
+ export * from './Endpoint';
22
+ export * from './Style';
23
+ export * from './EntityDesc';
24
+ export * from './Environment';
25
+ export * from './Locale';
26
+ export * from './Cluster';
@@ -1,27 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./Action"), exports);
5
- tslib_1.__exportStar(require("./Aspect"), exports);
6
- tslib_1.__exportStar(require("./Auth"), exports);
7
- tslib_1.__exportStar(require("./Context"), exports);
8
- tslib_1.__exportStar(require("./DataType"), exports);
9
- tslib_1.__exportStar(require("./Demand"), exports);
10
- tslib_1.__exportStar(require("./Entity"), exports);
11
- tslib_1.__exportStar(require("./Expression"), exports);
12
- tslib_1.__exportStar(require("./Geo"), exports);
13
- tslib_1.__exportStar(require("./Logger"), exports);
14
- tslib_1.__exportStar(require("./Polyfill"), exports);
15
- tslib_1.__exportStar(require("./RowStore"), exports);
16
- tslib_1.__exportStar(require("./Storage"), exports);
17
- tslib_1.__exportStar(require("./Trigger"), exports);
18
- tslib_1.__exportStar(require("./Exception"), exports);
19
- tslib_1.__exportStar(require("./Watcher"), exports);
20
- tslib_1.__exportStar(require("./AppLoader"), exports);
21
- tslib_1.__exportStar(require("./Connector"), exports);
22
- tslib_1.__exportStar(require("./Timer"), exports);
23
- tslib_1.__exportStar(require("./Port"), exports);
24
- tslib_1.__exportStar(require("./Endpoint"), exports);
25
- tslib_1.__exportStar(require("./Style"), exports);
26
- tslib_1.__exportStar(require("./EntityDesc"), exports);
27
- tslib_1.__exportStar(require("./Environment"), exports);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Action"), exports);
5
+ tslib_1.__exportStar(require("./Aspect"), exports);
6
+ tslib_1.__exportStar(require("./Auth"), exports);
7
+ tslib_1.__exportStar(require("./Context"), exports);
8
+ tslib_1.__exportStar(require("./DataType"), exports);
9
+ tslib_1.__exportStar(require("./Demand"), exports);
10
+ tslib_1.__exportStar(require("./Entity"), exports);
11
+ tslib_1.__exportStar(require("./Expression"), exports);
12
+ tslib_1.__exportStar(require("./Geo"), exports);
13
+ tslib_1.__exportStar(require("./Logger"), exports);
14
+ tslib_1.__exportStar(require("./Polyfill"), exports);
15
+ tslib_1.__exportStar(require("./RowStore"), exports);
16
+ tslib_1.__exportStar(require("./Storage"), exports);
17
+ tslib_1.__exportStar(require("./Trigger"), exports);
18
+ tslib_1.__exportStar(require("./Exception"), exports);
19
+ tslib_1.__exportStar(require("./Watcher"), exports);
20
+ tslib_1.__exportStar(require("./AppLoader"), exports);
21
+ tslib_1.__exportStar(require("./Connector"), exports);
22
+ tslib_1.__exportStar(require("./Timer"), exports);
23
+ tslib_1.__exportStar(require("./Port"), exports);
24
+ tslib_1.__exportStar(require("./Endpoint"), exports);
25
+ tslib_1.__exportStar(require("./Style"), exports);
26
+ tslib_1.__exportStar(require("./EntityDesc"), exports);
27
+ tslib_1.__exportStar(require("./Environment"), exports);
28
+ tslib_1.__exportStar(require("./Locale"), exports);
29
+ tslib_1.__exportStar(require("./Cluster"), exports);
@@ -1,34 +1,34 @@
1
- /**
2
- * Column types used for @PrimaryGeneratedColumn() decorator.
3
- */
4
- export declare type PrimaryGeneratedColumnType = "int" | "int2" | "int4" | "int8" | "integer" | "tinyint" | "smallint" | "mediumint" | "bigint" | "dec" | "decimal" | "smalldecimal" | "fixed" | "numeric" | "number";
5
- /**
6
- * Column types where spatial properties are used.
7
- */
8
- export declare type SpatialColumnType = "geometry" | "geography" | "st_geometry" | "st_point";
9
- /**
10
- * Column types where precision and scale properties are used.
11
- */
12
- export declare type WithPrecisionColumnType = "float" | "double" | "dec" | "decimal" | "smalldecimal" | "fixed" | "numeric" | "real" | "double precision" | "number" | "datetime" | "datetime2" | "datetimeoffset" | "time" | "time with time zone" | "time without time zone" | "timestamp" | "timestamp without time zone" | "timestamp with time zone" | "timestamp with local time zone";
13
- /**
14
- * Column types where column length is used.
15
- */
16
- export declare type WithLengthColumnType = "character varying" | "varying character" | "char varying" | "nvarchar" | "national varchar" | "character" | "native character" | "varchar" | "char" | "nchar" | "national char" | "varchar2" | "nvarchar2" | "alphanum" | "shorttext" | "raw" | "binary" | "varbinary" | "string";
17
- export declare type WithWidthColumnType = "tinyint" | "smallint" | "mediumint" | "int" | "bigint";
18
- /**
19
- * All other regular column types.
20
- */
21
- export declare type SimpleColumnType = "simple-array" | "simple-json" | "simple-enum" | "int2" | "integer" | "int4" | "int8" | "int64" | "unsigned big int" | "float" | "float4" | "float8" | "smallmoney" | "money" | "boolean" | "bool" | "tinyblob" | "tinytext" | "mediumblob" | "mediumtext" | "blob" | "text" | "ntext" | "citext" | "hstore" | "longblob" | "longtext" | "alphanum" | "shorttext" | "bytes" | "bytea" | "long" | "raw" | "long raw" | "bfile" | "clob" | "nclob" | "image" | "timetz" | "timestamptz" | "timestamp with local time zone" | "smalldatetime" | "date" | "interval year to month" | "interval day to second" | "interval" | "year" | "seconddate" | "point" | "line" | "lseg" | "box" | "circle" | "path" | "polygon" | "geography" | "geometry" | "linestring" | "multipoint" | "multilinestring" | "multipolygon" | "geometrycollection" | "st_geometry" | "st_point" | "int4range" | "int8range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "enum" | "set" | "cidr" | "inet" | "macaddr" | "bit" | "bit varying" | "varbit" | "tsvector" | "tsquery" | "uuid" | "xml" | "json" | "jsonb" | "varbinary" | "hierarchyid" | "sql_variant" | "rowid" | "urowid" | "uniqueidentifier" | "rowversion" | "array" | "cube" | "ltree" | "object" | "array" | "function" | "sequence";
22
- /**
23
- * Any column type column can be.
24
- */
25
- export declare type DataType = WithPrecisionColumnType | WithLengthColumnType | WithWidthColumnType | SpatialColumnType | SimpleColumnType;
26
- export interface DataTypeParams {
27
- length?: number;
28
- width?: number;
29
- precision?: number;
30
- scale?: number;
31
- signed?: boolean;
32
- max?: number;
33
- min?: number;
34
- }
1
+ /**
2
+ * Column types used for @PrimaryGeneratedColumn() decorator.
3
+ */
4
+ export type PrimaryGeneratedColumnType = "int" | "int2" | "int4" | "int8" | "integer" | "tinyint" | "smallint" | "mediumint" | "bigint" | "dec" | "decimal" | "smalldecimal" | "fixed" | "numeric" | "number";
5
+ /**
6
+ * Column types where spatial properties are used.
7
+ */
8
+ export type SpatialColumnType = "geometry" | "geography" | "st_geometry" | "st_point";
9
+ /**
10
+ * Column types where precision and scale properties are used.
11
+ */
12
+ export type WithPrecisionColumnType = "float" | "double" | "dec" | "decimal" | "smalldecimal" | "fixed" | "numeric" | "real" | "double precision" | "number" | "datetime" | "datetime2" | "datetimeoffset" | "time" | "time with time zone" | "time without time zone" | "timestamp" | "timestamp without time zone" | "timestamp with time zone" | "timestamp with local time zone";
13
+ /**
14
+ * Column types where column length is used.
15
+ */
16
+ export type WithLengthColumnType = "character varying" | "varying character" | "char varying" | "nvarchar" | "national varchar" | "character" | "native character" | "varchar" | "char" | "nchar" | "national char" | "varchar2" | "nvarchar2" | "alphanum" | "shorttext" | "raw" | "binary" | "varbinary" | "string";
17
+ export type WithWidthColumnType = "tinyint" | "smallint" | "mediumint" | "int" | "bigint";
18
+ /**
19
+ * All other regular column types.
20
+ */
21
+ export type SimpleColumnType = "simple-array" | "simple-json" | "simple-enum" | "int2" | "integer" | "int4" | "int8" | "int64" | "unsigned big int" | "float" | "float4" | "float8" | "smallmoney" | "money" | "boolean" | "bool" | "tinyblob" | "tinytext" | "mediumblob" | "mediumtext" | "blob" | "text" | "ntext" | "citext" | "hstore" | "longblob" | "longtext" | "alphanum" | "shorttext" | "bytes" | "bytea" | "long" | "raw" | "long raw" | "bfile" | "clob" | "nclob" | "image" | "timetz" | "timestamptz" | "timestamp with local time zone" | "smalldatetime" | "date" | "interval year to month" | "interval day to second" | "interval" | "year" | "seconddate" | "point" | "line" | "lseg" | "box" | "circle" | "path" | "polygon" | "geography" | "geometry" | "linestring" | "multipoint" | "multilinestring" | "multipolygon" | "geometrycollection" | "st_geometry" | "st_point" | "int4range" | "int8range" | "numrange" | "tsrange" | "tstzrange" | "daterange" | "enum" | "set" | "cidr" | "inet" | "macaddr" | "bit" | "bit varying" | "varbit" | "tsvector" | "tsquery" | "uuid" | "xml" | "json" | "jsonb" | "varbinary" | "hierarchyid" | "sql_variant" | "rowid" | "urowid" | "uniqueidentifier" | "rowversion" | "array" | "cube" | "ltree" | "object" | "array" | "function" | "sequence";
22
+ /**
23
+ * Any column type column can be.
24
+ */
25
+ export type DataType = WithPrecisionColumnType | WithLengthColumnType | WithWidthColumnType | SpatialColumnType | SimpleColumnType;
26
+ export interface DataTypeParams {
27
+ length?: number;
28
+ width?: number;
29
+ precision?: number;
30
+ scale?: number;
31
+ signed?: boolean;
32
+ max?: number;
33
+ min?: number;
34
+ }