@entity-access/entity-access 1.0.378 → 1.0.379

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 (249) hide show
  1. package/dist/model/EntityQuery.d.ts.map +1 -1
  2. package/dist/model/EntityQuery.js +10 -0
  3. package/dist/model/EntityQuery.js.map +1 -1
  4. package/dist/model/IFilterWithParameter.d.ts +5 -5
  5. package/dist/model/IFilterWithParameter.d.ts.map +1 -1
  6. package/dist/tsconfig.tsbuildinfo +1 -1
  7. package/package.json +1 -1
  8. package/src/model/EntityQuery.ts +11 -1
  9. package/src/model/IFilterWithParameter.ts +5 -5
  10. package/dist/tests/TestConfig.d.ts +0 -6
  11. package/dist/tests/TestConfig.d.ts.map +0 -1
  12. package/dist/tests/TestConfig.js +0 -3
  13. package/dist/tests/TestConfig.js.map +0 -1
  14. package/dist/tests/db-tests/tests/check-constraint-test.d.ts +0 -3
  15. package/dist/tests/db-tests/tests/check-constraint-test.d.ts.map +0 -1
  16. package/dist/tests/db-tests/tests/check-constraint-test.js +0 -25
  17. package/dist/tests/db-tests/tests/check-constraint-test.js.map +0 -1
  18. package/dist/tests/db-tests/tests/delete-items.d.ts +0 -3
  19. package/dist/tests/db-tests/tests/delete-items.d.ts.map +0 -1
  20. package/dist/tests/db-tests/tests/delete-items.js +0 -25
  21. package/dist/tests/db-tests/tests/delete-items.js.map +0 -1
  22. package/dist/tests/db-tests/tests/filtered-include-items.d.ts +0 -3
  23. package/dist/tests/db-tests/tests/filtered-include-items.d.ts.map +0 -1
  24. package/dist/tests/db-tests/tests/filtered-include-items.js +0 -19
  25. package/dist/tests/db-tests/tests/filtered-include-items.js.map +0 -1
  26. package/dist/tests/db-tests/tests/insert-into.d.ts +0 -3
  27. package/dist/tests/db-tests/tests/insert-into.d.ts.map +0 -1
  28. package/dist/tests/db-tests/tests/insert-into.js +0 -17
  29. package/dist/tests/db-tests/tests/insert-into.js.map +0 -1
  30. package/dist/tests/db-tests/tests/multi-fk-tests.d.ts +0 -3
  31. package/dist/tests/db-tests/tests/multi-fk-tests.d.ts.map +0 -1
  32. package/dist/tests/db-tests/tests/multi-fk-tests.js +0 -29
  33. package/dist/tests/db-tests/tests/multi-fk-tests.js.map +0 -1
  34. package/dist/tests/db-tests/tests/select-identity.d.ts +0 -3
  35. package/dist/tests/db-tests/tests/select-identity.d.ts.map +0 -1
  36. package/dist/tests/db-tests/tests/select-identity.js +0 -16
  37. package/dist/tests/db-tests/tests/select-identity.js.map +0 -1
  38. package/dist/tests/db-tests/tests/select-inverse-one-to-one.d.ts +0 -3
  39. package/dist/tests/db-tests/tests/select-inverse-one-to-one.d.ts.map +0 -1
  40. package/dist/tests/db-tests/tests/select-inverse-one-to-one.js +0 -27
  41. package/dist/tests/db-tests/tests/select-inverse-one-to-one.js.map +0 -1
  42. package/dist/tests/db-tests/tests/select-items-map.d.ts +0 -3
  43. package/dist/tests/db-tests/tests/select-items-map.d.ts.map +0 -1
  44. package/dist/tests/db-tests/tests/select-items-map.js +0 -28
  45. package/dist/tests/db-tests/tests/select-items-map.js.map +0 -1
  46. package/dist/tests/db-tests/tests/select-items-sum.d.ts +0 -3
  47. package/dist/tests/db-tests/tests/select-items-sum.d.ts.map +0 -1
  48. package/dist/tests/db-tests/tests/select-items-sum.js +0 -46
  49. package/dist/tests/db-tests/tests/select-items-sum.js.map +0 -1
  50. package/dist/tests/db-tests/tests/select-items.d.ts +0 -3
  51. package/dist/tests/db-tests/tests/select-items.d.ts.map +0 -1
  52. package/dist/tests/db-tests/tests/select-items.js +0 -30
  53. package/dist/tests/db-tests/tests/select-items.js.map +0 -1
  54. package/dist/tests/db-tests/tests/select-map.d.ts +0 -3
  55. package/dist/tests/db-tests/tests/select-map.d.ts.map +0 -1
  56. package/dist/tests/db-tests/tests/select-map.js +0 -12
  57. package/dist/tests/db-tests/tests/select-map.js.map +0 -1
  58. package/dist/tests/db-tests/tests/select-nested.d.ts +0 -3
  59. package/dist/tests/db-tests/tests/select-nested.d.ts.map +0 -1
  60. package/dist/tests/db-tests/tests/select-nested.js +0 -25
  61. package/dist/tests/db-tests/tests/select-nested.js.map +0 -1
  62. package/dist/tests/db-tests/tests/select-parent.d.ts +0 -3
  63. package/dist/tests/db-tests/tests/select-parent.d.ts.map +0 -1
  64. package/dist/tests/db-tests/tests/select-parent.js +0 -17
  65. package/dist/tests/db-tests/tests/select-parent.js.map +0 -1
  66. package/dist/tests/db-tests/tests/select-related.d.ts +0 -3
  67. package/dist/tests/db-tests/tests/select-related.d.ts.map +0 -1
  68. package/dist/tests/db-tests/tests/select-related.js +0 -20
  69. package/dist/tests/db-tests/tests/select-related.js.map +0 -1
  70. package/dist/tests/db-tests/tests/update-items.d.ts +0 -3
  71. package/dist/tests/db-tests/tests/update-items.d.ts.map +0 -1
  72. package/dist/tests/db-tests/tests/update-items.js +0 -31
  73. package/dist/tests/db-tests/tests/update-items.js.map +0 -1
  74. package/dist/tests/db-tests/tests/update-select.d.ts +0 -3
  75. package/dist/tests/db-tests/tests/update-select.d.ts.map +0 -1
  76. package/dist/tests/db-tests/tests/update-select.js +0 -19
  77. package/dist/tests/db-tests/tests/update-select.js.map +0 -1
  78. package/dist/tests/db-tests/tests/upsert-test.d.ts +0 -3
  79. package/dist/tests/db-tests/tests/upsert-test.d.ts.map +0 -1
  80. package/dist/tests/db-tests/tests/upsert-test.js +0 -31
  81. package/dist/tests/db-tests/tests/upsert-test.js.map +0 -1
  82. package/dist/tests/db-tests/tests/version-history.d.ts +0 -3
  83. package/dist/tests/db-tests/tests/version-history.d.ts.map +0 -1
  84. package/dist/tests/db-tests/tests/version-history.js +0 -16
  85. package/dist/tests/db-tests/tests/version-history.js.map +0 -1
  86. package/dist/tests/db-tests/transaction-save-point/transaction-save-point.d.ts +0 -3
  87. package/dist/tests/db-tests/transaction-save-point/transaction-save-point.d.ts.map +0 -1
  88. package/dist/tests/db-tests/transaction-save-point/transaction-save-point.js +0 -58
  89. package/dist/tests/db-tests/transaction-save-point/transaction-save-point.js.map +0 -1
  90. package/dist/tests/drivers/postgres/connection-test.d.ts +0 -3
  91. package/dist/tests/drivers/postgres/connection-test.d.ts.map +0 -1
  92. package/dist/tests/drivers/postgres/connection-test.js +0 -40
  93. package/dist/tests/drivers/postgres/connection-test.js.map +0 -1
  94. package/dist/tests/drivers/sql-server/sql-server-test.d.ts +0 -2
  95. package/dist/tests/drivers/sql-server/sql-server-test.d.ts.map +0 -1
  96. package/dist/tests/drivers/sql-server/sql-server-test.js +0 -6
  97. package/dist/tests/drivers/sql-server/sql-server-test.js.map +0 -1
  98. package/dist/tests/eternity/child-tests.d.ts +0 -3
  99. package/dist/tests/eternity/child-tests.d.ts.map +0 -1
  100. package/dist/tests/eternity/child-tests.js +0 -97
  101. package/dist/tests/eternity/child-tests.js.map +0 -1
  102. package/dist/tests/eternity/eternity-tests.d.ts +0 -3
  103. package/dist/tests/eternity/eternity-tests.d.ts.map +0 -1
  104. package/dist/tests/eternity/eternity-tests.js +0 -85
  105. package/dist/tests/eternity/eternity-tests.js.map +0 -1
  106. package/dist/tests/eternity/external-event-tests.d.ts +0 -3
  107. package/dist/tests/eternity/external-event-tests.d.ts.map +0 -1
  108. package/dist/tests/eternity/external-event-tests.js +0 -108
  109. package/dist/tests/eternity/external-event-tests.js.map +0 -1
  110. package/dist/tests/eternity/throttle-tests.d.ts +0 -3
  111. package/dist/tests/eternity/throttle-tests.d.ts.map +0 -1
  112. package/dist/tests/eternity/throttle-tests.js +0 -86
  113. package/dist/tests/eternity/throttle-tests.js.map +0 -1
  114. package/dist/tests/expressions/left-joins/child-joins.d.ts +0 -2
  115. package/dist/tests/expressions/left-joins/child-joins.d.ts.map +0 -1
  116. package/dist/tests/expressions/left-joins/child-joins.js +0 -114
  117. package/dist/tests/expressions/left-joins/child-joins.js.map +0 -1
  118. package/dist/tests/expressions/sanitize/sanitize-test.d.ts +0 -2
  119. package/dist/tests/expressions/sanitize/sanitize-test.d.ts.map +0 -1
  120. package/dist/tests/expressions/sanitize/sanitize-test.js +0 -8
  121. package/dist/tests/expressions/sanitize/sanitize-test.js.map +0 -1
  122. package/dist/tests/expressions/select/select.d.ts +0 -2
  123. package/dist/tests/expressions/select/select.d.ts.map +0 -1
  124. package/dist/tests/expressions/select/select.js +0 -11
  125. package/dist/tests/expressions/select/select.js.map +0 -1
  126. package/dist/tests/expressions/self-joins/self-joins.d.ts +0 -2
  127. package/dist/tests/expressions/self-joins/self-joins.d.ts.map +0 -1
  128. package/dist/tests/expressions/self-joins/self-joins.js +0 -14
  129. package/dist/tests/expressions/self-joins/self-joins.js.map +0 -1
  130. package/dist/tests/expressions/simple/parse-array.d.ts +0 -2
  131. package/dist/tests/expressions/simple/parse-array.d.ts.map +0 -1
  132. package/dist/tests/expressions/simple/parse-array.js +0 -21
  133. package/dist/tests/expressions/simple/parse-array.js.map +0 -1
  134. package/dist/tests/expressions/simple/parse-arrow.d.ts +0 -2
  135. package/dist/tests/expressions/simple/parse-arrow.d.ts.map +0 -1
  136. package/dist/tests/expressions/simple/parse-arrow.js +0 -36
  137. package/dist/tests/expressions/simple/parse-arrow.js.map +0 -1
  138. package/dist/tests/expressions/simple/parse-complex.d.ts +0 -2
  139. package/dist/tests/expressions/simple/parse-complex.d.ts.map +0 -1
  140. package/dist/tests/expressions/simple/parse-complex.js +0 -11
  141. package/dist/tests/expressions/simple/parse-complex.js.map +0 -1
  142. package/dist/tests/expressions/trimInternal.d.ts +0 -3
  143. package/dist/tests/expressions/trimInternal.d.ts.map +0 -1
  144. package/dist/tests/expressions/trimInternal.js +0 -24
  145. package/dist/tests/expressions/trimInternal.js.map +0 -1
  146. package/dist/tests/model/ShoppingContext.d.ts +0 -140
  147. package/dist/tests/model/ShoppingContext.d.ts.map +0 -1
  148. package/dist/tests/model/ShoppingContext.js +0 -440
  149. package/dist/tests/model/ShoppingContext.js.map +0 -1
  150. package/dist/tests/model/UseFile.d.ts +0 -8
  151. package/dist/tests/model/UseFile.d.ts.map +0 -1
  152. package/dist/tests/model/UseFile.js +0 -25
  153. package/dist/tests/model/UseFile.js.map +0 -1
  154. package/dist/tests/model/createContext.d.ts +0 -6
  155. package/dist/tests/model/createContext.d.ts.map +0 -1
  156. package/dist/tests/model/createContext.js +0 -327
  157. package/dist/tests/model/createContext.js.map +0 -1
  158. package/dist/tests/pool/pool-test.d.ts +0 -2
  159. package/dist/tests/pool/pool-test.d.ts.map +0 -1
  160. package/dist/tests/pool/pool-test.js +0 -66
  161. package/dist/tests/pool/pool-test.js.map +0 -1
  162. package/dist/tests/query/combine.d.ts +0 -2
  163. package/dist/tests/query/combine.d.ts.map +0 -1
  164. package/dist/tests/query/combine.js +0 -20
  165. package/dist/tests/query/combine.js.map +0 -1
  166. package/dist/tests/security/ShoppingContextEvents.d.ts +0 -5
  167. package/dist/tests/security/ShoppingContextEvents.d.ts.map +0 -1
  168. package/dist/tests/security/ShoppingContextEvents.js +0 -20
  169. package/dist/tests/security/ShoppingContextEvents.js.map +0 -1
  170. package/dist/tests/security/events/OrderEvents.d.ts +0 -17
  171. package/dist/tests/security/events/OrderEvents.d.ts.map +0 -1
  172. package/dist/tests/security/events/OrderEvents.js +0 -62
  173. package/dist/tests/security/events/OrderEvents.js.map +0 -1
  174. package/dist/tests/security/events/ProductEvents.d.ts +0 -23
  175. package/dist/tests/security/events/ProductEvents.d.ts.map +0 -1
  176. package/dist/tests/security/events/ProductEvents.js +0 -79
  177. package/dist/tests/security/events/ProductEvents.js.map +0 -1
  178. package/dist/tests/security/events/UserEvents.d.ts +0 -10
  179. package/dist/tests/security/events/UserEvents.d.ts.map +0 -1
  180. package/dist/tests/security/events/UserEvents.js +0 -26
  181. package/dist/tests/security/events/UserEvents.js.map +0 -1
  182. package/dist/tests/security/events/UserFileEvents.d.ts +0 -7
  183. package/dist/tests/security/events/UserFileEvents.d.ts.map +0 -1
  184. package/dist/tests/security/events/UserFileEvents.js +0 -7
  185. package/dist/tests/security/events/UserFileEvents.js.map +0 -1
  186. package/dist/tests/security/events/UserInfo.d.ts +0 -5
  187. package/dist/tests/security/events/UserInfo.d.ts.map +0 -1
  188. package/dist/tests/security/events/UserInfo.js +0 -9
  189. package/dist/tests/security/events/UserInfo.js.map +0 -1
  190. package/dist/tests/security/tests/include-items.d.ts +0 -3
  191. package/dist/tests/security/tests/include-items.d.ts.map +0 -1
  192. package/dist/tests/security/tests/include-items.js +0 -15
  193. package/dist/tests/security/tests/include-items.js.map +0 -1
  194. package/dist/tests/security/tests/place-order.d.ts +0 -3
  195. package/dist/tests/security/tests/place-order.d.ts.map +0 -1
  196. package/dist/tests/security/tests/place-order.js +0 -139
  197. package/dist/tests/security/tests/place-order.js.map +0 -1
  198. package/dist/tests/security/tests/test-events.d.ts +0 -3
  199. package/dist/tests/security/tests/test-events.d.ts.map +0 -1
  200. package/dist/tests/security/tests/test-events.js +0 -54
  201. package/dist/tests/security/tests/test-events.js.map +0 -1
  202. package/src/tests/TestConfig.ts +0 -6
  203. package/src/tests/db-tests/tests/check-constraint-test.ts +0 -32
  204. package/src/tests/db-tests/tests/delete-items.ts +0 -42
  205. package/src/tests/db-tests/tests/filtered-include-items.ts +0 -28
  206. package/src/tests/db-tests/tests/insert-into.ts +0 -24
  207. package/src/tests/db-tests/tests/multi-fk-tests.ts +0 -37
  208. package/src/tests/db-tests/tests/select-identity.ts +0 -23
  209. package/src/tests/db-tests/tests/select-inverse-one-to-one.ts +0 -39
  210. package/src/tests/db-tests/tests/select-items-map.ts +0 -38
  211. package/src/tests/db-tests/tests/select-items-sum.ts +0 -60
  212. package/src/tests/db-tests/tests/select-items.ts +0 -49
  213. package/src/tests/db-tests/tests/select-map.ts +0 -19
  214. package/src/tests/db-tests/tests/select-nested.ts +0 -36
  215. package/src/tests/db-tests/tests/select-parent.ts +0 -25
  216. package/src/tests/db-tests/tests/select-related.ts +0 -35
  217. package/src/tests/db-tests/tests/update-items.ts +0 -44
  218. package/src/tests/db-tests/tests/update-select.ts +0 -28
  219. package/src/tests/db-tests/tests/upsert-test.ts +0 -48
  220. package/src/tests/db-tests/tests/version-history.ts +0 -24
  221. package/src/tests/db-tests/transaction-save-point/transaction-save-point.ts +0 -48
  222. package/src/tests/drivers/postgres/connection-test.ts +0 -39
  223. package/src/tests/drivers/sql-server/sql-server-test.ts +0 -9
  224. package/src/tests/eternity/child-tests.ts +0 -119
  225. package/src/tests/eternity/eternity-tests.ts +0 -108
  226. package/src/tests/eternity/external-event-tests.ts +0 -133
  227. package/src/tests/eternity/throttle-tests.ts +0 -100
  228. package/src/tests/expressions/left-joins/child-joins.ts +0 -131
  229. package/src/tests/expressions/sanitize/sanitize-test.ts +0 -17
  230. package/src/tests/expressions/select/select.ts +0 -21
  231. package/src/tests/expressions/self-joins/self-joins.ts +0 -23
  232. package/src/tests/expressions/simple/parse-array.ts +0 -31
  233. package/src/tests/expressions/simple/parse-arrow.ts +0 -65
  234. package/src/tests/expressions/simple/parse-complex.ts +0 -20
  235. package/src/tests/expressions/trimInternal.ts +0 -25
  236. package/src/tests/model/ShoppingContext.ts +0 -435
  237. package/src/tests/model/UseFile.ts +0 -24
  238. package/src/tests/model/createContext.ts +0 -367
  239. package/src/tests/pool/pool-test.ts +0 -79
  240. package/src/tests/query/combine.ts +0 -28
  241. package/src/tests/security/ShoppingContextEvents.ts +0 -23
  242. package/src/tests/security/events/OrderEvents.ts +0 -72
  243. package/src/tests/security/events/ProductEvents.ts +0 -102
  244. package/src/tests/security/events/UserEvents.ts +0 -28
  245. package/src/tests/security/events/UserFileEvents.ts +0 -11
  246. package/src/tests/security/events/UserInfo.ts +0 -7
  247. package/src/tests/security/tests/include-items.ts +0 -20
  248. package/src/tests/security/tests/place-order.ts +0 -138
  249. package/src/tests/security/tests/test-events.ts +0 -55
@@ -1,367 +0,0 @@
1
- import { IClassOf } from "../../decorators/IClassOf.js";
2
- import { BaseDriver } from "../../drivers/base/BaseDriver.js";
3
- import { ContextEvents } from "../../index.js";
4
- import { ShoppingContext, User, statusPublished } from "./ShoppingContext.js";
5
-
6
- const status = statusPublished;
7
-
8
- export async function createContext(driver: BaseDriver, events?: ContextEvents) {
9
-
10
- const copy = { ... driver } as BaseDriver;
11
- (copy as any).connectionString = { ... driver.connectionString };
12
- Object.setPrototypeOf(copy, Object.getPrototypeOf(driver));
13
- const context = new ShoppingContext(copy, events);
14
-
15
- await context.connection.ensureDatabase();
16
-
17
- await context.connection.automaticMigrations().migrate(context);
18
-
19
- await seed(context);
20
-
21
- driver.connectionString.database = context.driver.connectionString.database;
22
- return context;
23
-
24
- }
25
-
26
- // export default function () {
27
-
28
- // }
29
-
30
- async function seed(context: ShoppingContext) {
31
- const now = new Date();
32
-
33
- // add admin user...
34
- context.users.add({
35
- userName: "admin",
36
- dateCreated: new Date()
37
- });
38
- // add seller
39
- const seller = context.users.add({
40
- userName: "self",
41
- dateCreated: new Date()
42
- });
43
-
44
- addHeadPhones(context, now, seller);
45
-
46
- const clothes = addMaleClothes(context, seller);
47
-
48
- addFemaleClothes(context, seller);
49
-
50
- await context.saveChanges();
51
-
52
- const product = clothes[0];
53
- const productPrice = product.prices[0];
54
-
55
- const user = context.users.add({
56
- userName: "customer1",
57
- dateCreated: new Date(),
58
- orders: [
59
- context.orders.add({
60
- orderDate: new Date(),
61
- orderItems:[
62
- context.orderItems.add({
63
- product,
64
- productPrice,
65
- amount: productPrice.amount
66
- })
67
- ]
68
- })
69
- ]
70
- });
71
-
72
- await context.saveChanges();
73
- }
74
-
75
- function addFemaleClothes(context: ShoppingContext, owner: User) {
76
- const category = context.categories.add({
77
- name: "Female Clothes",
78
- categoryID: "clothes/female"
79
- });
80
-
81
- const startDate = new Date();
82
- const active = true;
83
-
84
- context.products.add({
85
- name: "White T-Shirt",
86
- owner,
87
- status,
88
- categories: [
89
- context.productCategories.add({
90
- category
91
- })
92
- ],
93
- prices: [
94
- context.productPrices.add({
95
- amount: 20,
96
- active,
97
- startDate
98
- })
99
- ]
100
- });
101
-
102
- context.products.add({
103
- name: "Red T-Shirt",
104
- status,
105
- owner,
106
- categories: [
107
- context.productCategories.add({
108
- category
109
- })
110
- ],
111
- prices: [
112
- context.productPrices.add({
113
- amount: 20,
114
- active,
115
- startDate
116
- })
117
- ]
118
- });
119
-
120
- context.products.add({
121
- name: "Blue T-Shirt",
122
- status,
123
- owner,
124
- categories: [
125
- context.productCategories.add({
126
- category
127
- })
128
- ],
129
- prices: [
130
- context.productPrices.add({
131
- amount: 20,
132
- active,
133
- startDate
134
- })
135
- ]
136
- });
137
-
138
- context.products.add({
139
- name: "Pink T-Shirt",
140
- status,
141
- owner,
142
- categories: [
143
- context.productCategories.add({
144
- category
145
- })
146
- ],
147
- prices: [
148
- context.productPrices.add({
149
- amount: 20,
150
- active,
151
- startDate
152
- })
153
- ]
154
- });
155
- }
156
-
157
- function addMaleClothes(context: ShoppingContext, owner: User) {
158
- const category = context.categories.add({
159
- name: "Male Clothes",
160
- categoryID: "clothes/male"
161
- });
162
-
163
- const startDate = new Date();
164
- const active = true;
165
-
166
- return [context.products.add({
167
- name: "White T-Shirt",
168
- status,
169
- owner,
170
- categories: [
171
- context.productCategories.add({
172
- category
173
- })
174
- ],
175
- prices: [
176
- context.productPrices.add({
177
- amount: 20,
178
- active,
179
- startDate
180
- })
181
- ]
182
- }),
183
- context.products.add({
184
- name: "Red T-Shirt",
185
- status,
186
- owner,
187
- categories: [
188
- context.productCategories.add({
189
- category
190
- })
191
- ],
192
- prices: [
193
- context.productPrices.add({
194
- amount: 20,
195
- active,
196
- startDate
197
- })
198
- ]
199
- }),
200
- context.products.add({
201
- name: "Blue T-Shirt",
202
- status,
203
- owner,
204
- categories: [
205
- context.productCategories.add({
206
- category
207
- })
208
- ],
209
- prices: [
210
- context.productPrices.add({
211
- amount: 20,
212
- active,
213
- startDate
214
- })
215
- ]
216
- }),
217
- context.products.add({
218
- name: "Pink T-Shirt",
219
- status,
220
- owner,
221
- categories: [
222
- context.productCategories.add({
223
- category
224
- })
225
- ],
226
- prices: [
227
- context.productPrices.add({
228
- amount: 20,
229
- active,
230
- startDate
231
- })
232
- ]
233
- })];
234
- }
235
-
236
- export const headPhoneCategory = "head-phones";
237
- function addHeadPhones(context: ShoppingContext, now: Date, owner: User) {
238
- const category = context.categories.add({
239
- name: "Headphones",
240
- categoryID: headPhoneCategory,
241
- children: [
242
- context.categories.add({
243
- name: "Bluetooth",
244
- categoryID: `${headPhoneCategory}/blue-tooth`,
245
- children: [
246
- context.categories.add({
247
- name: "BT 200",
248
- categoryID: `${headPhoneCategory}/blue-tooth/bt-200`,
249
- })
250
- ]
251
- })
252
- ]
253
- });
254
-
255
-
256
- const startDate = new Date();
257
- const active = true;
258
-
259
- context.products.add({
260
- name: "Jabber Head Phones",
261
- owner,
262
- status,
263
- categories: [
264
- context.productCategories.add({
265
- category
266
- })
267
- ],
268
- prices: [
269
- context.productPrices.add({
270
- active,
271
- startDate,
272
- amount: 100
273
- })
274
- ]
275
- });
276
-
277
- context.products.add({
278
- name: "Sony Head Phones",
279
- owner,
280
- status,
281
- categories: [
282
- context.productCategories.add({
283
- category
284
- })
285
- ],
286
- prices: [
287
- context.productPrices.add({
288
- active,
289
- startDate,
290
- amount: 120
291
- })
292
- ]
293
- });
294
-
295
- context.products.add({
296
- name: "Sony Head Phones Black",
297
- status,
298
- owner,
299
- categories: [
300
- context.productCategories.add({
301
- category
302
- })
303
- ],
304
- prices: [
305
- context.productPrices.add({
306
- active,
307
- startDate,
308
- amount: 140
309
- })
310
- ]
311
- });
312
-
313
- context.products.add({
314
- name: "Sony Head Phones Blue",
315
- owner,
316
- status,
317
- categories: [
318
- context.productCategories.add({
319
- category
320
- })
321
- ],
322
- prices: [
323
- context.productPrices.add({
324
- active,
325
- startDate,
326
- amount: 140
327
- })
328
- ]
329
- });
330
-
331
- context.products.add({
332
- name: "Jabber Head Phones Black",
333
- status,
334
- owner,
335
- categories: [
336
- context.productCategories.add({
337
- category
338
- })
339
- ],
340
- prices: [
341
- context.productPrices.add({
342
- active,
343
- startDate,
344
- amount: 140
345
- })
346
- ]
347
- });
348
-
349
- context.products.add({
350
- name: "Jabber Head Phones Blue",
351
- owner,
352
- status,
353
- categories: [
354
- context.productCategories.add({
355
- category
356
- })
357
- ],
358
- prices: [
359
- context.productPrices.add({
360
- active,
361
- startDate,
362
- amount: 140
363
- })
364
- ]
365
- });
366
- }
367
-
@@ -1,79 +0,0 @@
1
- /* eslint-disable no-console */
2
- import assert from "assert";
3
- import ObjectPool from "../../common/ObjectPool.js";
4
- import sleep from "../../common/sleep.js";
5
-
6
-
7
- export default async function () {
8
- let id = 1;
9
- const logs = [] as string[];
10
- try {
11
- const pool = new ObjectPool({
12
- asyncFactory: async () => {
13
- await sleep(1);
14
- return Promise.resolve({ id: id++, toString() { return `item-${this.id}`; } });
15
- },
16
- subscribeForRemoval: (po, clear) => void 0,
17
- destroy(item) {
18
- return Promise.resolve();
19
- },
20
- maxSize: 5,
21
- poolSize: 2,
22
- maxWait: 5000,
23
- logger: (t) => logs.push(t)
24
- });
25
-
26
- const c1 = await pool.acquire();
27
- const c2 = await pool.acquire();
28
-
29
- assert.equal(2, c2.id);
30
-
31
- assert.notStrictEqual(c1, c2);
32
-
33
- await c1[Symbol.asyncDispose]();
34
-
35
- assert.equal(pool.freeSize, 1);
36
-
37
- const c3 = await pool.acquire();
38
- assert.strictEqual(c1, c3);
39
- assert.notStrictEqual(c2, c3);
40
- assert.strictEqual(pool.freeSize, 0);
41
-
42
- const c4 = await pool.acquire();
43
- assert.notStrictEqual(c4, c1);
44
- assert.notStrictEqual(c4, c2);
45
-
46
- assert.strictEqual(pool.currentSize, 3);
47
-
48
- await c4[Symbol.asyncDispose]();
49
- await c2[Symbol.asyncDispose]();
50
-
51
- assert.equal(pool.currentSize, 3);
52
-
53
- assert.equal(pool.freeSize, 2);
54
-
55
- await pool.acquire();
56
- await pool.acquire();
57
- await pool.acquire();
58
- const last = await pool.acquire();
59
- let lastError;
60
- try {
61
- await pool.acquire();
62
- } catch (error) {
63
- lastError = error;
64
- }
65
- if (!lastError) {
66
- assert.fail("Failed");
67
- }
68
-
69
- // free last after few milliseconds
70
- setTimeout(() => {
71
- last[Symbol.asyncDispose]().catch(console.error);
72
- }, 10);
73
-
74
- // this should not fail
75
- await pool.acquire();
76
- } finally {
77
- console.log(logs.join("\n"));
78
- }
79
- }
@@ -1,28 +0,0 @@
1
- import * as assert from "assert";
2
- import { IQuery, Query, QueryPart } from "../../query/Query.js";
3
-
4
- export default function () {
5
- const id = 1;
6
- const q = Query.create `SELECT * FROM Accounts WHERE ${id}`;
7
- assert.equal("SELECT * FROM Accounts WHERE @p0", q.toString());
8
-
9
- const p = q.parts[1] as QueryPart;
10
- assert.equal(id, p.value);
11
-
12
- // lets combine multiple queries...
13
-
14
- const id2 = 2;
15
-
16
- const orConstraints = [];
17
- orConstraints.push(Query.create `ID == ${id}`);
18
- orConstraints.push(Query.create `ID == ${id2}`);
19
-
20
- const final = Query.create `SELECT * FROM Accounts WHERE ${Query.join(orConstraints, " OR ")}`;
21
- assert.equal("SELECT * FROM Accounts WHERE ID == @p0 OR ID == @p1", final.toString());
22
-
23
- const rn = "D" + Date.now();
24
- const create = Query.create `CREATE Database ${Query.literal(rn)}`;
25
- assert.equal(`CREATE Database ${rn}`, create.toString());
26
-
27
-
28
- }
@@ -1,23 +0,0 @@
1
- import ContextEvents from "../../model/events/ContextEvents.js";
2
- import { Order, OrderItem, Product, ProductCategory, ProductPrice, User } from "../model/ShoppingContext.js";
3
- import { UserFile } from "../model/UseFile.js";
4
- import { OrderEvents, OrderItemEvents } from "./events/OrderEvents.js";
5
- import { ProductEvents, ProductCategoryEvents, ProductPriceEvents } from "./events/ProductEvents.js";
6
- import { UserEvents } from "./events/UserEvents.js";
7
- import { UserFileEvents } from "./events/UserFileEvents.js";
8
-
9
- export class ShoppingContextEvents extends ContextEvents {
10
-
11
- constructor() {
12
- super();
13
-
14
- this.register(User, UserEvents);
15
- this.register(Product, ProductEvents);
16
- this.register(ProductCategory, ProductCategoryEvents);
17
- this.register(ProductPrice, ProductPriceEvents);
18
- this.register(Order, OrderEvents);
19
- this.register(OrderItem, OrderItemEvents);
20
- this.register(UserFile, UserFileEvents);
21
- }
22
-
23
- }
@@ -1,72 +0,0 @@
1
- import Inject from "../../../di/di.js";
2
- import { IEntityQuery } from "../../../model/IFilterWithParameter.js";
3
- import EntityEvents, { ForeignKeyFilter } from "../../../model/events/EntityEvents.js";
4
- import { Order, OrderItem, User } from "../../model/ShoppingContext.js";
5
- import { UserInfo } from "./UserInfo.js";
6
-
7
- export class OrderEvents extends EntityEvents<Order> {
8
-
9
- @Inject
10
- user: UserInfo;
11
-
12
- filter(query: IEntityQuery<Order>): IEntityQuery<Order> {
13
- if (this.user.admin) {
14
- return null;
15
- }
16
- const { userID } = this.user;
17
-
18
- // user can access orders placed by the user or orders with products owned by user
19
-
20
- return query.where({ userID }, (p) => (x) => x.customerID === p.userID || x.orderItems.some((item) => item.product.ownerID === p.userID));
21
- }
22
-
23
- modify(query: IEntityQuery<Order>): IEntityQuery<Order> {
24
- if (this.user.admin) {
25
- return null;
26
- }
27
- const { userID } = this.user;
28
- // user can only modify placed orders
29
- return query.where({ userID }, (p) => (x) => x.customerID === p.userID || x.orderItems.some((item) => item.product.ownerID === p.userID));
30
- }
31
-
32
- onForeignKeyFilter(filter: ForeignKeyFilter<Order>): IEntityQuery<any> {
33
- if (filter.is((x) => x.customer)) {
34
- return filter.read();
35
- }
36
- }
37
- }
38
-
39
- export class OrderItemEvents extends EntityEvents<OrderItem> {
40
-
41
- @Inject
42
- user: UserInfo;
43
-
44
- filter(query: IEntityQuery<OrderItem>): IEntityQuery<OrderItem> {
45
- if (this.user.admin) {
46
- return null;
47
- }
48
- const { userID } = this.user;
49
-
50
- // user can access orders placed by the user or orders with products owned by user
51
-
52
- return query.where({ userID }, (p) => (x) => x.order.customerID === p.userID || x.product.ownerID === p.userID);
53
- }
54
-
55
- modify(query: IEntityQuery<OrderItem>): IEntityQuery<OrderItem> {
56
- if (this.user.admin) {
57
- return null;
58
- }
59
- const { userID } = this.user;
60
- // user can only modify placed orders
61
- return query.where({ userID }, (p) => (x) => x.order.customerID === p.userID || x.product.ownerID === p.userID);
62
- }
63
-
64
- onForeignKeyFilter(filter: ForeignKeyFilter<OrderItem>): IEntityQuery<any> {
65
- if (filter.is((x) => x.product)) {
66
- return filter.read();
67
- }
68
- if (filter.is((x) => x.productPrice)) {
69
- return filter.read();
70
- }
71
- }
72
- }
@@ -1,102 +0,0 @@
1
- import EntityAccessError from "../../../common/EntityAccessError.js";
2
- import Inject from "../../../di/di.js";
3
- import { IEntityQuery } from "../../../model/IFilterWithParameter.js";
4
- import ChangeEntry from "../../../model/changes/ChangeEntry.js";
5
- import EntityEvents from "../../../model/events/EntityEvents.js";
6
- import { Product, ProductCategory, ProductPrice } from "../../model/ShoppingContext.js";
7
- import { UserInfo } from "./UserInfo.js";
8
- const statusPublished = "published";
9
-
10
- export class ProductEvents extends EntityEvents<Product> {
11
-
12
- @Inject
13
- user: UserInfo;
14
-
15
- filter(query: IEntityQuery<Product>): IEntityQuery<Product> {
16
- const { userID } = this.user;
17
-
18
- // admin can access everything so return null
19
- if (this.user.admin) {
20
- return null;
21
- }
22
- // everyone can read published or own products
23
- return query.where({ userID, statusPublished }, (p) => (x) => x.ownerID === p.userID || x.status === p.statusPublished);
24
- }
25
-
26
- modify(query: IEntityQuery<Product>): IEntityQuery<Product> {
27
- const { userID } = this.user;
28
-
29
- // admin can access everything so return null
30
- if (this.user.admin) {
31
- return null;
32
- }
33
-
34
- // customer can modify its own products
35
- return query.where({ userID }, (p) => (x) => x.ownerID === p.userID);
36
- }
37
-
38
- afterUpdate(entity: Product, entry: ChangeEntry<Product>): void | Promise<void> {
39
- entity.updated = Array.from(entry.updated.keys()).map((x) => x.name);
40
- entity.nameUpdated = entry.isUpdated("name");
41
- }
42
-
43
- afterInsert(entity: Product, entry: ChangeEntry<Product>): void | Promise<void> {
44
- entity.afterInsertInvoked = true;
45
- }
46
-
47
- }
48
-
49
- export class ProductCategoryEvents extends EntityEvents<ProductCategory> {
50
-
51
- @Inject
52
- user: UserInfo;
53
-
54
- filter(query: IEntityQuery<ProductCategory>): IEntityQuery<ProductCategory> {
55
- return null;
56
- }
57
-
58
- modify(query: IEntityQuery<ProductCategory>): IEntityQuery<ProductCategory> {
59
- const { userID } = this.user;
60
-
61
- // admin can access everything so return null
62
- if (this.user.admin) {
63
- return null;
64
- }
65
-
66
- EntityAccessError.throw("Access denied");
67
- }
68
-
69
- }
70
-
71
-
72
- export class ProductPriceEvents extends EntityEvents<ProductPrice> {
73
-
74
- @Inject
75
- user: UserInfo;
76
-
77
- filter(query: IEntityQuery<ProductPrice>): IEntityQuery<ProductPrice> {
78
-
79
- const { userID } = this.user;
80
-
81
- // admin can access everything so return null
82
- if (this.user.admin) {
83
- return null;
84
- }
85
-
86
- // user can view prices of only published or own products
87
- return query.where({ userID, statusPublished } , (p) => (x) => x.product.status === p.statusPublished || x.product.ownerID === p.userID);
88
- }
89
-
90
- modify(query: IEntityQuery<ProductPrice>): IEntityQuery<ProductPrice> {
91
- const { userID } = this.user;
92
-
93
- // admin can access everything so return null
94
- if (this.user.admin) {
95
- return null;
96
- }
97
-
98
- // user can only edit its own prices
99
- return query.where({ userID }, (p) => (x) => x.product.ownerID === p.userID);
100
- }
101
-
102
- }
@@ -1,28 +0,0 @@
1
- import Inject from "../../../di/di.js";
2
- import { IEntityQuery } from "../../../model/IFilterWithParameter.js";
3
- import EntityEvents from "../../../model/events/EntityEvents.js";
4
- import { User } from "../../model/ShoppingContext.js";
5
- import { UserInfo } from "./UserInfo.js";
6
- export class UserEvents extends EntityEvents<User> {
7
-
8
- @Inject
9
- user: UserInfo;
10
-
11
- filter(query: IEntityQuery<User>): IEntityQuery<User> {
12
- if (this.user.admin) {
13
- return null;
14
- }
15
- const { userID } = this.user;
16
- return query.where({ userID }, (p) => (x) => x.userID === p.userID
17
- || x.orders.some(
18
- (op) => op.orderItems.some((oi) => oi.product.ownerID === p.userID)));
19
- }
20
-
21
- modify(query: IEntityQuery<User>): IEntityQuery<User> {
22
- if (this.user.admin) {
23
- return null;
24
- }
25
- const { userID } = this.user;
26
- return query.where({ userID}, (p) => (x) => x.userID === p.userID);
27
- }
28
- }