remult 0.22.1 → 0.22.3

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 (257) hide show
  1. package/esm/graphql.js +27 -27
  2. package/esm/postgres/schema-builder.js +4 -4
  3. package/esm/remult-knex/index.js +2 -2
  4. package/esm/remult-mongo.js +6 -6
  5. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +30 -0
  6. package/esm/src/id-entity.d.ts +4 -0
  7. package/esm/src/id-entity.js +8 -0
  8. package/esm/src/remult3/RepositoryImplementation.js +7 -5
  9. package/esm/src/shared-tests/db-tests.db-tests.js +35 -0
  10. package/package.json +1 -1
  11. package/postgres/postgresColumnSyntax.d.ts +2 -0
  12. package/postgres/postgresColumnSyntax.js +34 -0
  13. package/remult-knex/index.js +2 -2
  14. package/remult-middleware.d.ts +2 -0
  15. package/remult-middleware.js +70 -0
  16. package/remult-mongo.js +6 -6
  17. package/server/register-actions-on-server.d.ts +3 -0
  18. package/server/register-actions-on-server.js +50 -0
  19. package/server/register-entities-on-server.d.ts +3 -0
  20. package/server/register-entities-on-server.js +19 -0
  21. package/src/backend-tests/backend-database-test-setup.backend-spec.js +60 -0
  22. package/{esm/core/src → src}/backend-tests/my-test.backend-spec.d.ts +1 -1
  23. package/src/backend-tests/my-test.backend-spec.js +217 -0
  24. package/src/backend-tests/test-http-server.backend-spec.d.ts +6 -0
  25. package/src/backend-tests/test-http-server.backend-spec.js +342 -0
  26. package/src/id-entity.d.ts +4 -0
  27. package/src/id-entity.js +17 -0
  28. package/src/remult3/RepositoryImplementation.js +15 -13
  29. package/src/shared-tests/db-tests.db-tests.js +64 -0
  30. package/{esm/core/src/valueConverters.d.ts → valueConverters.d.ts} +12 -13
  31. package/valueConverters.js +168 -0
  32. package/esm/angular/interfaces/index.d.ts +0 -1
  33. package/esm/angular/interfaces/index.js +0 -1
  34. package/esm/angular/interfaces/src/column-collection.d.ts +0 -70
  35. package/esm/angular/interfaces/src/column-collection.js +0 -341
  36. package/esm/angular/interfaces/src/data-area-settings.d.ts +0 -15
  37. package/esm/angular/interfaces/src/data-area-settings.js +0 -35
  38. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +0 -36
  39. package/esm/angular/interfaces/src/data-control-interfaces.js +0 -57
  40. package/esm/angular/interfaces/src/dataList.d.ts +0 -13
  41. package/esm/angular/interfaces/src/dataList.js +0 -42
  42. package/esm/angular/interfaces/src/filter-helper.d.ts +0 -13
  43. package/esm/angular/interfaces/src/filter-helper.js +0 -59
  44. package/esm/angular/interfaces/src/grid-settings.d.ts +0 -145
  45. package/esm/angular/interfaces/src/grid-settings.js +0 -387
  46. package/esm/angular/interfaces/src/public_api.d.ts +0 -4
  47. package/esm/angular/interfaces/src/public_api.js +0 -4
  48. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +0 -4
  49. package/esm/angular/src/angular/RemultAngularPluginsService.js +0 -3
  50. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +0 -49
  51. package/esm/angular/src/angular/data-control/data-control2.component.js +0 -138
  52. package/esm/core/SseSubscriptionServer.d.ts +0 -33
  53. package/esm/core/SseSubscriptionServer.js +0 -107
  54. package/esm/core/assign.d.ts +0 -1
  55. package/esm/core/assign.js +0 -5
  56. package/esm/core/classType.d.ts +0 -3
  57. package/esm/core/classType.js +0 -1
  58. package/esm/core/index.d.ts +0 -27
  59. package/esm/core/index.js +0 -25
  60. package/esm/core/inputTypes.d.ts +0 -9
  61. package/esm/core/inputTypes.js +0 -9
  62. package/esm/core/live-query/data-provider-live-query-storage.d.ts +0 -22
  63. package/esm/core/live-query/data-provider-live-query-storage.js +0 -71
  64. package/esm/core/postgres/index.d.ts +0 -2
  65. package/esm/core/postgres/index.js +0 -2
  66. package/esm/core/postgres/postgres-data-provider.d.ts +0 -36
  67. package/esm/core/postgres/postgres-data-provider.js +0 -120
  68. package/esm/core/postgres/schema-builder.d.ts +0 -17
  69. package/esm/core/postgres/schema-builder.js +0 -153
  70. package/esm/core/remult-fresh.d.ts +0 -17
  71. package/esm/core/remult-fresh.js +0 -29
  72. package/esm/core/remult-knex/index.d.ts +0 -30
  73. package/esm/core/remult-knex/index.js +0 -446
  74. package/esm/core/remult-mongo.d.ts +0 -24
  75. package/esm/core/remult-mongo.js +0 -254
  76. package/esm/core/server/JsonEntityFileStorage.d.ts +0 -10
  77. package/esm/core/server/JsonEntityFileStorage.js +0 -25
  78. package/esm/core/server/core.d.ts +0 -4
  79. package/esm/core/server/core.js +0 -4
  80. package/esm/core/server/expressBridge.d.ts +0 -182
  81. package/esm/core/server/expressBridge.js +0 -938
  82. package/esm/core/server/index.d.ts +0 -6
  83. package/esm/core/server/index.js +0 -9
  84. package/esm/core/server/initAsyncHooks.d.ts +0 -1
  85. package/esm/core/server/initAsyncHooks.js +0 -9
  86. package/esm/core/server/initDataProvider.d.ts +0 -2
  87. package/esm/core/server/initDataProvider.js +0 -14
  88. package/esm/core/src/__EntityValueProvider.d.ts +0 -11
  89. package/esm/core/src/__EntityValueProvider.js +0 -1
  90. package/esm/core/src/__RowsOfDataForTesting.d.ts +0 -3
  91. package/esm/core/src/__RowsOfDataForTesting.js +0 -1
  92. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +0 -6
  93. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +0 -147
  94. package/esm/core/src/backend-tests/my-test.backend-spec.js +0 -197
  95. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +0 -1
  96. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +0 -167
  97. package/esm/core/src/buildRestDataProvider.d.ts +0 -31
  98. package/esm/core/src/buildRestDataProvider.js +0 -113
  99. package/esm/core/src/column-interfaces.d.ts +0 -154
  100. package/esm/core/src/column-interfaces.js +0 -7
  101. package/esm/core/src/column.d.ts +0 -58
  102. package/esm/core/src/column.js +0 -174
  103. package/esm/core/src/context.d.ts +0 -134
  104. package/esm/core/src/context.js +0 -286
  105. package/esm/core/src/data-api.d.ts +0 -39
  106. package/esm/core/src/data-api.js +0 -279
  107. package/esm/core/src/data-interfaces.d.ts +0 -41
  108. package/esm/core/src/data-interfaces.js +0 -12
  109. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +0 -22
  110. package/esm/core/src/data-providers/array-entity-data-provider.js +0 -252
  111. package/esm/core/src/data-providers/in-memory-database.d.ts +0 -9
  112. package/esm/core/src/data-providers/in-memory-database.js +0 -14
  113. package/esm/core/src/data-providers/json-data-provider.d.ts +0 -12
  114. package/esm/core/src/data-providers/json-data-provider.js +0 -55
  115. package/esm/core/src/data-providers/rest-data-provider.d.ts +0 -49
  116. package/esm/core/src/data-providers/rest-data-provider.js +0 -256
  117. package/esm/core/src/data-providers/sql-database.d.ts +0 -33
  118. package/esm/core/src/data-providers/sql-database.js +0 -384
  119. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +0 -24
  120. package/esm/core/src/data-providers/web-sql-data-provider.js +0 -143
  121. package/esm/core/src/entity.d.ts +0 -91
  122. package/esm/core/src/entity.js +0 -1
  123. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +0 -50
  124. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +0 -150
  125. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +0 -1
  126. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  127. package/esm/core/src/filter/filter-interfaces.d.ts +0 -85
  128. package/esm/core/src/filter/filter-interfaces.js +0 -477
  129. package/esm/core/src/live-query/LiveQueryClient.d.ts +0 -20
  130. package/esm/core/src/live-query/LiveQueryClient.js +0 -188
  131. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +0 -5
  132. package/esm/core/src/live-query/SseSubscriptionClient.js +0 -86
  133. package/esm/core/src/live-query/SubscriptionChannel.d.ts +0 -72
  134. package/esm/core/src/live-query/SubscriptionChannel.js +0 -123
  135. package/esm/core/src/live-query/SubscriptionServer.d.ts +0 -53
  136. package/esm/core/src/live-query/SubscriptionServer.js +0 -111
  137. package/esm/core/src/live-query/live-query-tests.spec.d.ts +0 -6
  138. package/esm/core/src/live-query/live-query-tests.spec.js +0 -952
  139. package/esm/core/src/remult-proxy.d.ts +0 -35
  140. package/esm/core/src/remult-proxy.js +0 -113
  141. package/esm/core/src/remult3/DecoratorReplacer.d.ts +0 -10
  142. package/esm/core/src/remult3/DecoratorReplacer.js +0 -20
  143. package/esm/core/src/remult3/RepositoryImplementation.d.ts +0 -355
  144. package/esm/core/src/remult3/RepositoryImplementation.js +0 -2109
  145. package/esm/core/src/remult3/index.d.ts +0 -2
  146. package/esm/core/src/remult3/index.js +0 -2
  147. package/esm/core/src/remult3/remult3.d.ts +0 -395
  148. package/esm/core/src/remult3/remult3.js +0 -2
  149. package/esm/core/src/server-action.d.ts +0 -81
  150. package/esm/core/src/server-action.js +0 -394
  151. package/esm/core/src/shared-tests/db-tests-setup.d.ts +0 -32
  152. package/esm/core/src/shared-tests/db-tests-setup.js +0 -78
  153. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +0 -25
  154. package/esm/core/src/shared-tests/db-tests.db-tests.js +0 -810
  155. package/esm/core/src/shared-tests/deleteAll.d.ts +0 -2
  156. package/esm/core/src/shared-tests/deleteAll.js +0 -4
  157. package/esm/core/src/shared-tests/entityWithValidations.d.ts +0 -14
  158. package/esm/core/src/shared-tests/entityWithValidations.js +0 -43
  159. package/esm/core/src/shared-tests/index.d.ts +0 -4
  160. package/esm/core/src/shared-tests/index.js +0 -4
  161. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +0 -1
  162. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +0 -67
  163. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +0 -10
  164. package/esm/core/src/shared-tests/test-special-value.spec.js +0 -73
  165. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +0 -1
  166. package/esm/core/src/shared-tests/test-update-with-null.spec.js +0 -31
  167. package/esm/core/src/sort.d.ts +0 -16
  168. package/esm/core/src/sort.js +0 -103
  169. package/esm/core/src/sql-command.d.ts +0 -19
  170. package/esm/core/src/sql-command.js +0 -1
  171. package/esm/core/src/test.d.ts +0 -3
  172. package/esm/core/src/test.js +0 -12
  173. package/esm/core/src/tests/Done.d.ts +0 -5
  174. package/esm/core/src/tests/Done.js +0 -9
  175. package/esm/core/src/tests/RowProvider.spec.d.ts +0 -16
  176. package/esm/core/src/tests/RowProvider.spec.js +0 -631
  177. package/esm/core/src/tests/TestDataApiResponse.d.ts +0 -10
  178. package/esm/core/src/tests/TestDataApiResponse.js +0 -22
  179. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +0 -8
  180. package/esm/core/src/tests/basicRowFunctionality.spec.js +0 -2103
  181. package/esm/core/src/tests/c.d.ts +0 -8
  182. package/esm/core/src/tests/c.js +0 -13
  183. package/esm/core/src/tests/createData.d.ts +0 -7
  184. package/esm/core/src/tests/createData.js +0 -22
  185. package/esm/core/src/tests/d.d.ts +0 -6
  186. package/esm/core/src/tests/d.js +0 -11
  187. package/esm/core/src/tests/dWithPrefilter.d.ts +0 -7
  188. package/esm/core/src/tests/dWithPrefilter.js +0 -18
  189. package/esm/core/src/tests/entityForCustomFilter.d.ts +0 -16
  190. package/esm/core/src/tests/entityForCustomFilter.js +0 -33
  191. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +0 -5
  192. package/esm/core/src/tests/entityWithValidationsOnColumn.js +0 -13
  193. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +0 -4
  194. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +0 -37
  195. package/esm/core/src/tests/h.d.ts +0 -6
  196. package/esm/core/src/tests/h.js +0 -24
  197. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +0 -1
  198. package/esm/core/src/tests/remult-3-basic-tests.spec.js +0 -236
  199. package/esm/core/src/tests/remult-3-entities.d.ts +0 -23
  200. package/esm/core/src/tests/remult-3-entities.js +0 -39
  201. package/esm/core/src/tests/tasks.d.ts +0 -6
  202. package/esm/core/src/tests/tasks.js +0 -10
  203. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  204. package/esm/core/src/tests/test-context-as-storage.spec.js +0 -1
  205. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +0 -1
  206. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +0 -389
  207. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +0 -5
  208. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +0 -152
  209. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +0 -1
  210. package/esm/core/src/tests/test-decorator-precedence.spec.js +0 -38
  211. package/esm/core/src/tests/test-default-value.spec.d.ts +0 -1
  212. package/esm/core/src/tests/test-default-value.spec.js +0 -33
  213. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +0 -14
  214. package/esm/core/src/tests/test-entity-inheritance.spec.js +0 -82
  215. package/esm/core/src/tests/test-exceptions.spec.d.ts +0 -1
  216. package/esm/core/src/tests/test-exceptions.spec.js +0 -375
  217. package/esm/core/src/tests/test-json.spec.d.ts +0 -1
  218. package/esm/core/src/tests/test-json.spec.js +0 -115
  219. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +0 -9
  220. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +0 -809
  221. package/esm/core/src/tests/test-non-active-record.spec.d.ts +0 -1
  222. package/esm/core/src/tests/test-non-active-record.spec.js +0 -66
  223. package/esm/core/src/tests/test-object-column.spec.d.ts +0 -1
  224. package/esm/core/src/tests/test-object-column.spec.js +0 -189
  225. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +0 -1
  226. package/esm/core/src/tests/test-paged-foreach.spec.js +0 -328
  227. package/esm/core/src/tests/test-remult-angular.spec.d.ts +0 -1
  228. package/esm/core/src/tests/test-remult-angular.spec.js +0 -23
  229. package/esm/core/src/tests/test-server-controller.spec.d.ts +0 -7
  230. package/esm/core/src/tests/test-server-controller.spec.js +0 -489
  231. package/esm/core/src/tests/test-server-expressions.spec.d.ts +0 -1
  232. package/esm/core/src/tests/test-server-expressions.spec.js +0 -178
  233. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +0 -1
  234. package/esm/core/src/tests/test-server-method-on-entity.spec.js +0 -306
  235. package/esm/core/src/tests/test-sql-expression.spec.d.ts +0 -5
  236. package/esm/core/src/tests/test-sql-expression.spec.js +0 -205
  237. package/esm/core/src/tests/test-sql.spec.d.ts +0 -1
  238. package/esm/core/src/tests/test-sql.spec.js +0 -170
  239. package/esm/core/src/tests/test-subscribe.spec.d.ts +0 -1
  240. package/esm/core/src/tests/test-subscribe.spec.js +0 -135
  241. package/esm/core/src/tests/test-type-recovery.spec.d.ts +0 -1
  242. package/esm/core/src/tests/test-type-recovery.spec.js +0 -49
  243. package/esm/core/src/tests/test-where-api.spec.d.ts +0 -1
  244. package/esm/core/src/tests/test-where-api.spec.js +0 -434
  245. package/esm/core/src/tests/testHelper.spec.d.ts +0 -36
  246. package/esm/core/src/tests/testHelper.spec.js +0 -226
  247. package/esm/core/src/tests/testModel/models.d.ts +0 -16
  248. package/esm/core/src/tests/testModel/models.js +0 -25
  249. package/esm/core/src/validators.d.ts +0 -14
  250. package/esm/core/src/validators.js +0 -33
  251. package/esm/core/src/valueConverters.js +0 -197
  252. package/esm/core/urlBuilder.d.ts +0 -6
  253. package/esm/core/urlBuilder.js +0 -20
  254. package/esm/test-servers/shared/Task.d.ts +0 -9
  255. package/esm/test-servers/shared/Task.js +0 -32
  256. package/esm/test.d.ts +0 -5
  257. package/esm/test.js +0 -6
@@ -1,2 +0,0 @@
1
- import { Repository } from "../remult3";
2
- export declare function deleteAll<entityType>(r: Repository<entityType>): Promise<Repository<entityType>>;
@@ -1,4 +0,0 @@
1
- export async function deleteAll(r) {
2
- await Promise.all((await r.find()).map(x => r.delete(x)));
3
- return r;
4
- }
@@ -1,14 +0,0 @@
1
- import { ClassType } from '../../classType';
2
- import { Remult } from '../context';
3
- import { EntityBase, Repository } from '../remult3';
4
- export declare var testConfiguration: {
5
- restDbRunningOnServer: boolean;
6
- };
7
- export declare class entityWithValidations extends EntityBase {
8
- private remult;
9
- myId: number;
10
- name: string;
11
- static savingRowCount: number;
12
- constructor(remult: Remult);
13
- static create4RowsInDp(createEntity: (entity: ClassType<any>) => Promise<Repository<entityWithValidations>>): Promise<Repository<entityWithValidations>>;
14
- }
@@ -1,43 +0,0 @@
1
- import { Entity, EntityBase, Fields } from '../remult3';
2
- export var testConfiguration = { restDbRunningOnServer: false };
3
- @Entity('', {
4
- allowApiCrud: true,
5
- saving: async (t) => {
6
- if (!t.name || t.name.length < 3)
7
- t._.fields.name.error = 'invalid';
8
- if (!testConfiguration.restDbRunningOnServer)
9
- entityWithValidations.savingRowCount++;
10
- }
11
- })
12
- export class entityWithValidations extends EntityBase {
13
- remult;
14
- @Fields.integer()
15
- myId;
16
- @Fields.string()
17
- name;
18
- static savingRowCount = 0;
19
- constructor(remult) {
20
- super();
21
- this.remult = remult;
22
- }
23
- static async create4RowsInDp(createEntity) {
24
- let s = await createEntity(entityWithValidations);
25
- let c = s.create();
26
- c.myId = 1;
27
- c.name = 'noam';
28
- await c._.save();
29
- c = s.create();
30
- c.myId = 2;
31
- c.name = 'yael';
32
- await c._.save();
33
- c = s.create();
34
- c.myId = 3;
35
- c.name = 'yoni';
36
- await c._.save();
37
- c = s.create();
38
- c.myId = 4;
39
- c.name = 'maayan';
40
- await c._.save();
41
- return s;
42
- }
43
- }
@@ -1,4 +0,0 @@
1
- import './db-tests.db-tests';
2
- import './test-custom-id-column.spec';
3
- import './test-special-value.spec';
4
- import './test-update-with-null.spec';
@@ -1,4 +0,0 @@
1
- import './db-tests.db-tests';
2
- import './test-custom-id-column.spec';
3
- import './test-special-value.spec';
4
- import './test-update-with-null.spec';
@@ -1,67 +0,0 @@
1
- import { Entity, EntityBase, Fields } from '../remult3';
2
- import { describeClass } from '../remult3/DecoratorReplacer';
3
- import { testAll } from './db-tests-setup';
4
- describe("custom id column", () => {
5
- testAll("basic test", async ({ createEntity }) => {
6
- let type = class extends EntityBase {
7
- a;
8
- b;
9
- };
10
- describeClass(type, Entity('custom', { allowApiCrud: true }), {
11
- a: Fields.number(),
12
- b: Fields.number()
13
- });
14
- let c = await createEntity(type);
15
- let r = c.create();
16
- r.a = 1;
17
- r.b = 1;
18
- await r._.save();
19
- r = c.create();
20
- r.a = 2;
21
- r.b = 2;
22
- await r._.save();
23
- expect(c.metadata.idMetadata.field.key).toBe(c.metadata.fields.a.key);
24
- });
25
- testAll("basic test id column not first column", async ({ createEntity }) => {
26
- let type = class extends EntityBase {
27
- a;
28
- id;
29
- };
30
- Entity('custom2', { allowApiCrud: true })(type);
31
- Fields.number()(type.prototype, 'a');
32
- Fields.number()(type.prototype, 'id');
33
- let c = await createEntity(type);
34
- let r = c.create();
35
- r.a = 1;
36
- r.id = 5;
37
- await r._.save();
38
- r = c.create();
39
- r.a = 2;
40
- r.id = 6;
41
- await r._.save();
42
- expect(r._.repository.metadata.idMetadata.field.key).toBe(r._.fields.id.metadata.key);
43
- expect((await c.findId(6)).a).toBe(2);
44
- });
45
- });
46
- //typing game
47
- // var z = <Z>(y: Z) => {
48
- // }
49
- // z<number>(1);
50
- // function myBackendMethod<T>(types: T, values: values<T>) {
51
- // }
52
- // type values<T> = {
53
- // [Property in keyof T]: T[Property] extends new (...args: any[]) => infer R ? R : any;
54
- // };
55
- // const a1 = AccountManager;
56
- // const a = {
57
- // a: String.prototype,
58
- // b: AccountManager.prototype
59
- // };
60
- // var zzz: AccountManager = undefined!;
61
- // myBackendMethod({
62
- // a: String,
63
- // b: AccountManager
64
- // }, {
65
- // b: new AccountManager(),
66
- // a: "asdf"
67
- // })
@@ -1,10 +0,0 @@
1
- export declare class GroupsValue {
2
- private readonly value;
3
- hasAny(): boolean;
4
- constructor(value: string);
5
- evilGet(): string;
6
- listGroups(): string[];
7
- removeGroup(group: string): GroupsValue;
8
- addGroup(group: string): GroupsValue;
9
- selected(group: string): boolean;
10
- }
@@ -1,73 +0,0 @@
1
- import { Entity, EntityBase, Field, FieldType, Fields } from "../remult3";
2
- import { testAll } from "./db-tests-setup";
3
- @FieldType({
4
- valueConverter: {
5
- toJson: x => x ? x.value : '',
6
- fromJson: x => new GroupsValue(x),
7
- displayValue: x => x.value
8
- }
9
- })
10
- export class GroupsValue {
11
- value;
12
- hasAny() {
13
- return this.value != '';
14
- }
15
- constructor(value) {
16
- this.value = value;
17
- }
18
- evilGet() {
19
- return this.value;
20
- }
21
- listGroups() {
22
- if (!this.value)
23
- return [];
24
- return this.value.split(',');
25
- }
26
- removeGroup(group) {
27
- let groups = this.value.split(",").map(x => x.trim());
28
- let index = groups.indexOf(group);
29
- let result = '';
30
- if (index >= 0) {
31
- groups.splice(index, 1);
32
- result = groups.join(", ");
33
- }
34
- return new GroupsValue(result);
35
- }
36
- addGroup(group) {
37
- let r = this.value;
38
- if (r)
39
- r += ', ';
40
- else
41
- r = '';
42
- r += group;
43
- return new GroupsValue(r);
44
- }
45
- selected(group) {
46
- if (!this.value)
47
- return false;
48
- return this.value.indexOf(group) >= 0;
49
- }
50
- }
51
- @Entity("testGroups", { allowApiCrud: true })
52
- class testGroups extends EntityBase {
53
- @Fields.integer()
54
- id = 0;
55
- @Field(() => GroupsValue)
56
- g;
57
- }
58
- testAll("test save and load", async ({ createEntity }) => {
59
- let re = await createEntity(testGroups);
60
- await re.create({ id: 1 }).save();
61
- let x = await re.findFirst();
62
- expect(x.g.evilGet()).toBe('');
63
- x.g = x.g.addGroup("xx");
64
- expect(x.$.g.valueChanged()).toBe(true);
65
- await x.save();
66
- expect(x.g.evilGet()).toBe('xx');
67
- });
68
- testAll("test2 save and load", async ({ createEntity }) => {
69
- let re = await createEntity(testGroups);
70
- await re.create({ id: 1, g: new GroupsValue(undefined) }).save();
71
- let x = await re.findFirst();
72
- expect(x.g.evilGet()).toBe('');
73
- });
@@ -1,31 +0,0 @@
1
- import { Entity, EntityBase, Field, Fields } from "../remult3";
2
- import { testAll } from "./db-tests-setup";
3
- @Entity('testNull', { allowApiCrud: true })
4
- class testNull extends EntityBase {
5
- @Fields.integer()
6
- id = 0;
7
- @Field(undefined, { allowNull: true })
8
- myCol;
9
- @Fields.integer({ allowNull: true })
10
- numberWithNull = null;
11
- }
12
- testAll("test that update null works", async ({ createEntity }) => {
13
- let r = await createEntity(testNull);
14
- let i = r.create({ id: 1, myCol: { value: 'abc' } });
15
- await i.save();
16
- expect(i.myCol?.value).toBe("abc");
17
- i.myCol = null;
18
- expect(i.myCol).toBe(null);
19
- await i.save();
20
- expect(i.myCol).toBe(null);
21
- }, false);
22
- testAll("test number with null", async ({ createEntity }) => {
23
- let r = await createEntity(testNull);
24
- const i = await r.insert({ id: 1, myCol: { value: 'abc' }, numberWithNull: null });
25
- expect(i.numberWithNull).toBe(null);
26
- expect(await r.count({ numberWithNull: null })).toBe(1);
27
- i.numberWithNull = 0;
28
- await i.save();
29
- expect(i.numberWithNull).toBe(0);
30
- expect(await r.count({ numberWithNull: null })).toBe(0);
31
- }, false);
@@ -1,16 +0,0 @@
1
- import { FieldMetadata } from "./column-interfaces";
2
- import { EntityMetadata, EntityOrderBy } from "./remult3";
3
- export declare class Sort {
4
- toEntityOrderBy(): EntityOrderBy<any>;
5
- constructor(...segments: SortSegment[]);
6
- Segments: SortSegment[];
7
- reverse(): Sort;
8
- compare(a: any, b: any): number;
9
- static translateOrderByToSort<T>(entityDefs: EntityMetadata<T>, orderBy: EntityOrderBy<T>): Sort;
10
- static createUniqueSort<T>(entityMetadata: EntityMetadata<T>, orderBy: Sort): Sort;
11
- static createUniqueEntityOrderBy<T>(entityMetadata: EntityMetadata<T>, orderBy: EntityOrderBy<T>): EntityOrderBy<T>;
12
- }
13
- export interface SortSegment {
14
- field: FieldMetadata;
15
- isDescending?: boolean;
16
- }
@@ -1,103 +0,0 @@
1
- import { CompoundIdField } from "./column";
2
- export class Sort {
3
- toEntityOrderBy() {
4
- let result = {};
5
- for (const seg of this.Segments) {
6
- if (seg.isDescending) {
7
- result[seg.field.key] = "desc";
8
- }
9
- else
10
- result[seg.field.key] = "asc";
11
- }
12
- return result;
13
- }
14
- constructor(...segments) {
15
- this.Segments = segments;
16
- }
17
- Segments;
18
- reverse() {
19
- let r = new Sort();
20
- for (const s of this.Segments) {
21
- r.Segments.push({ field: s.field, isDescending: !s.isDescending });
22
- }
23
- return r;
24
- }
25
- compare(a, b) {
26
- let r = 0;
27
- for (let i = 0; i < this.Segments.length; i++) {
28
- let seg = this.Segments[i];
29
- let left = a[seg.field.key];
30
- let right = b[seg.field.key];
31
- if (left > right)
32
- r = 1;
33
- else if (left < right)
34
- r = -1;
35
- if (r != 0) {
36
- if (seg.isDescending)
37
- r *= -1;
38
- return r;
39
- }
40
- }
41
- return r;
42
- }
43
- static translateOrderByToSort(entityDefs, orderBy) {
44
- if (!orderBy)
45
- return undefined;
46
- let sort;
47
- if (orderBy) {
48
- sort = new Sort();
49
- for (const key in orderBy) {
50
- if (Object.prototype.hasOwnProperty.call(orderBy, key)) {
51
- const element = orderBy[key];
52
- let field = entityDefs.fields.find(key);
53
- if (field) {
54
- switch (element) {
55
- case "desc":
56
- sort.Segments.push({ field, isDescending: true });
57
- break;
58
- case "asc":
59
- sort.Segments.push({ field });
60
- }
61
- }
62
- }
63
- }
64
- }
65
- return sort;
66
- }
67
- static createUniqueSort(entityMetadata, orderBy) {
68
- if (!orderBy || Object.keys(orderBy).length === 0)
69
- orderBy = Sort.translateOrderByToSort(entityMetadata, entityMetadata.options.defaultOrderBy);
70
- if (!orderBy)
71
- orderBy = new Sort({ field: entityMetadata.idMetadata.field });
72
- if (entityMetadata.idMetadata.field instanceof CompoundIdField) {
73
- for (const field of entityMetadata.idMetadata.field.fields) {
74
- if (!orderBy.Segments.find(x => x.field == field)) {
75
- orderBy.Segments.push({ field: field });
76
- }
77
- }
78
- }
79
- else if (!orderBy.Segments.find(x => x.field == entityMetadata.idMetadata.field)) {
80
- orderBy.Segments.push({ field: entityMetadata.idMetadata.field });
81
- }
82
- return orderBy;
83
- }
84
- static createUniqueEntityOrderBy(entityMetadata, orderBy) {
85
- if (!orderBy || Object.keys(orderBy).length === 0)
86
- orderBy = entityMetadata.options.defaultOrderBy;
87
- if (!orderBy)
88
- orderBy = { [entityMetadata.idMetadata.field.key]: "asc" };
89
- else
90
- orderBy = { ...orderBy };
91
- if (entityMetadata.idMetadata.field instanceof CompoundIdField) {
92
- for (const field of entityMetadata.idMetadata.field.fields) {
93
- if (!orderBy[field.key]) {
94
- orderBy[field.key] = "asc";
95
- }
96
- }
97
- }
98
- else if (!orderBy[entityMetadata.idMetadata.field.key]) {
99
- orderBy[entityMetadata.idMetadata.field.key] = "asc";
100
- }
101
- return orderBy;
102
- }
103
- }
@@ -1,19 +0,0 @@
1
- import { EntityMetadata } from './remult3';
2
- export interface SqlImplementation {
3
- getLimitSqlSyntax(limit: number, offset: number): any;
4
- createCommand(): SqlCommand;
5
- transaction(action: (sql: SqlImplementation) => Promise<void>): Promise<void>;
6
- entityIsUsedForTheFirstTime(entity: EntityMetadata): Promise<void>;
7
- ensureSchema?(entities: EntityMetadata[]): Promise<void>;
8
- supportsJsonColumnType?: boolean;
9
- }
10
- export interface SqlCommand extends SqlCommandWithParameters {
11
- execute(sql: string): Promise<SqlResult>;
12
- }
13
- export interface SqlCommandWithParameters {
14
- addParameterAndReturnSqlToken(val: any): string;
15
- }
16
- export interface SqlResult {
17
- rows: any[];
18
- getColumnKeyInResultForIndexInSelect(index: number): string;
19
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- import 'core-js/es7/reflect';
2
- import 'zone.js/dist/zone';
3
- import 'zone.js/dist/zone-testing';
@@ -1,12 +0,0 @@
1
- // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2
- import 'core-js/es7/reflect';
3
- import 'zone.js/dist/zone';
4
- import 'zone.js/dist/zone-testing';
5
- import { getTestBed } from '@angular/core/testing';
6
- import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
7
- // First, initialize the Angular testing environment.
8
- getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
9
- // Then we find all the tests.
10
- const context = require.context('./', true, /\.spec\.ts$/);
11
- // And load the modules.
12
- context.keys().map(context);
@@ -1,5 +0,0 @@
1
- export declare class Done {
2
- happened: boolean;
3
- ok(): void;
4
- test(message?: string): void;
5
- }
@@ -1,9 +0,0 @@
1
- export class Done {
2
- happened = false;
3
- ok() {
4
- this.happened = true;
5
- }
6
- test(message = 'expected to be done') {
7
- expect(this.happened).toBe(true, message);
8
- }
9
- }
@@ -1,16 +0,0 @@
1
- import { ArrayEntityDataProvider } from "../data-providers/array-entity-data-provider";
2
- import { Remult } from '../context';
3
- import { CategoriesForTesting } from './remult-3-entities';
4
- import { EntityMetadata, Repository } from '../remult3';
5
- export declare class Language {
6
- id: number;
7
- caption: string;
8
- static Hebrew: Language;
9
- static Russian: Language;
10
- constructor(id: number, caption: string);
11
- }
12
- export declare function insertFourRows(): Promise<[Repository<CategoriesForTesting>, Remult]>;
13
- export declare class myDp extends ArrayEntityDataProvider {
14
- constructor(entity: EntityMetadata);
15
- update(id: any, data: any): Promise<any>;
16
- }