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,8 +0,0 @@
1
- import { Remult } from '../context';
2
- import { EntityBase } from '../remult3';
3
- export declare class c extends EntityBase {
4
- private remult;
5
- id: number;
6
- name: string;
7
- constructor(remult: Remult);
8
- }
@@ -1,13 +0,0 @@
1
- import { Entity, EntityBase, Fields } from '../remult3';
2
- @Entity('c', { allowApiCrud: true })
3
- export class c extends EntityBase {
4
- remult;
5
- @Fields.integer()
6
- id;
7
- @Fields.string()
8
- name;
9
- constructor(remult) {
10
- super();
11
- this.remult = remult;
12
- }
13
- }
@@ -1,7 +0,0 @@
1
- import { Status } from './testModel/models';
2
- import { Remult } from '../context';
3
- import { CategoriesForTesting } from './remult-3-entities';
4
- import { Repository } from '../remult3';
5
- export declare function createData(doInsert?: (insert: (id: number, name: string, description?: string, status?: Status) => Promise<void>) => Promise<void>, entity?: {
6
- new (): CategoriesForTesting;
7
- }): Promise<[Repository<CategoriesForTesting>, Remult]>;
@@ -1,22 +0,0 @@
1
- import { InMemoryDataProvider } from '../data-providers/in-memory-database';
2
- import { Remult } from '../context';
3
- import { Categories as newCategories } from './remult-3-entities';
4
- import { deleteAll } from '../shared-tests/deleteAll';
5
- export async function createData(doInsert, entity) {
6
- let remult = new Remult();
7
- remult.dataProvider = (new InMemoryDataProvider());
8
- if (!entity)
9
- entity = newCategories;
10
- let rep = await deleteAll(remult.repo(entity));
11
- if (doInsert)
12
- await doInsert(async (id, name, description, status) => {
13
- let c = rep.create();
14
- c.id = id;
15
- c.categoryName = name;
16
- c.description = description;
17
- if (status)
18
- c.status = status;
19
- await rep.save(c);
20
- });
21
- return [rep, remult];
22
- }
@@ -1,6 +0,0 @@
1
- import { EntityBase } from '../remult3';
2
- export declare class d extends EntityBase {
3
- id: number;
4
- b: number;
5
- static count: number;
6
- }
@@ -1,11 +0,0 @@
1
- import { Entity, EntityBase, Fields } from '../remult3';
2
- @Entity('d1', {
3
- allowApiCrud: true
4
- })
5
- export class d extends EntityBase {
6
- @Fields.integer()
7
- id;
8
- @Fields.integer()
9
- b;
10
- static count = 0;
11
- }
@@ -1,7 +0,0 @@
1
- import { EntityBase } from '../remult3';
2
- export declare class dWithPrefilter extends EntityBase {
3
- id: number;
4
- b: number;
5
- static count: number;
6
- doIt(): Promise<boolean>;
7
- }
@@ -1,18 +0,0 @@
1
- import { BackendMethod } from '../server-action';
2
- import { Entity, EntityBase, Fields } from '../remult3';
3
- @Entity('d', {
4
- apiPrefilter: { b: 2 },
5
- allowApiCrud: true
6
- })
7
- export class dWithPrefilter extends EntityBase {
8
- @Fields.integer()
9
- id;
10
- @Fields.integer()
11
- b;
12
- static count = 0;
13
- @BackendMethod({ allowed: true })
14
- async doIt() {
15
- dWithPrefilter.count++;
16
- return true;
17
- }
18
- }
@@ -1,16 +0,0 @@
1
- import { EntityBase, EntityFilter } from '../remult3';
2
- export declare class entityForrawFilter extends EntityBase {
3
- id: number;
4
- static filter: ((y: {
5
- oneAndThree?: boolean | undefined;
6
- dbOneOrThree?: boolean | undefined;
7
- two?: boolean | undefined;
8
- }) => EntityFilter<entityForrawFilter>) & import("../filter/filter-interfaces").rawFilterInfo<entityForrawFilter>;
9
- static oneAndThree: (() => EntityFilter<entityForrawFilter>) & import("../filter/filter-interfaces").rawFilterInfo<entityForrawFilter>;
10
- static testNumericValue: ((y: number) => EntityFilter<entityForrawFilter>) & import("../filter/filter-interfaces").rawFilterInfo<entityForrawFilter>;
11
- static testObjectValue: ((y: {
12
- val: number;
13
- }) => EntityFilter<entityForrawFilter>) & import("../filter/filter-interfaces").rawFilterInfo<entityForrawFilter>;
14
- }
15
- export declare class entityForrawFilter1 extends entityForrawFilter {
16
- }
@@ -1,33 +0,0 @@
1
- import { SqlDatabase } from '../data-providers/sql-database';
2
- import { Entity, EntityBase, Fields } from '../remult3';
3
- import { Filter } from '../filter/filter-interfaces';
4
- import { ArrayEntityDataProvider } from '../data-providers/array-entity-data-provider';
5
- import { dbNamesOf } from '../filter/filter-consumer-bridge-to-sql-request';
6
- @Entity('entityForrawFilter', { allowApiCrud: true })
7
- export class entityForrawFilter extends EntityBase {
8
- @Fields.integer()
9
- id;
10
- static filter = Filter.createCustom(async (c, remult) => {
11
- let r = [];
12
- if (c.oneAndThree)
13
- r.push({ id: [1, 3] });
14
- if (c.two)
15
- r.push({ id: 2 });
16
- if (c.dbOneOrThree) {
17
- const e = await dbNamesOf(remult.repo(entityForrawFilter));
18
- r.push({
19
- $and: [
20
- SqlDatabase.rawFilter(async (x) => x.sql = e.id + ' in (' + x.addParameterAndReturnSqlToken(1) + "," + x.addParameterAndReturnSqlToken(3) + ")"),
21
- ArrayEntityDataProvider.rawFilter(x => x.id == 1 || x.id == 3)
22
- ]
23
- });
24
- }
25
- return { $and: r };
26
- });
27
- static oneAndThree = Filter.createCustom(() => ({ id: [1, 3] }));
28
- static testNumericValue = Filter.createCustom((val) => ({ id: val }));
29
- static testObjectValue = Filter.createCustom((val) => ({ id: val.val }));
30
- }
31
- @Entity('entityForrawFilter1', { allowApiCrud: true })
32
- export class entityForrawFilter1 extends entityForrawFilter {
33
- }
@@ -1,5 +0,0 @@
1
- import { EntityBase } from '../remult3';
2
- export declare class entityWithValidationsOnColumn extends EntityBase {
3
- myId: number;
4
- name: string;
5
- }
@@ -1,13 +0,0 @@
1
- import { Entity, EntityBase, Fields } from '../remult3';
2
- @Entity('', { allowApiCrud: true })
3
- export class entityWithValidationsOnColumn extends EntityBase {
4
- @Fields.integer()
5
- myId;
6
- @Fields.string({
7
- validate: (t, c) => {
8
- if (!t.name || t.name.length < 3)
9
- c.error = 'invalid on column';
10
- }
11
- })
12
- name;
13
- }
@@ -1,4 +0,0 @@
1
- import { dbTestWhatSignature } from "../shared-tests/db-tests-setup";
2
- export declare function testWebSqlImpl(key: string, what: dbTestWhatSignature, focus?: boolean): void;
3
- export declare function testRest(key: string, what: dbTestWhatSignature, focus?: boolean): void;
4
- import '../shared-tests/';
@@ -1,37 +0,0 @@
1
- import { addDatabaseToTest, itWithFocus, TestDbs } from "../shared-tests/db-tests-setup";
2
- import { InMemoryDataProvider, remult } from "../..";
3
- import { Remult } from "../context";
4
- import { SqlDatabase } from "../data-providers/sql-database";
5
- import { WebSqlDataProvider } from "../data-providers/web-sql-data-provider";
6
- import { MockRestDataProvider } from "./testHelper.spec";
7
- export function testWebSqlImpl(key, what, focus = false) {
8
- itWithFocus(key + " - WebSql", async () => {
9
- let webSql = new WebSqlDataProvider('test');
10
- const sql = new SqlDatabase(webSql);
11
- for (const r of await (await sql.execute("select name from sqlite_master where type='table'")).rows) {
12
- switch (r.name) {
13
- case "__WebKitDatabaseInfoTable__":
14
- break;
15
- case "sqlite_sequence":
16
- break;
17
- default:
18
- await sql.execute("drop table if exists " + r.name);
19
- }
20
- }
21
- let remult = new Remult();
22
- remult.dataProvider = (sql);
23
- await what({ db: sql, remult, createEntity: async (x) => remult.repo(x) });
24
- }, focus);
25
- }
26
- addDatabaseToTest(testWebSqlImpl);
27
- export function testRest(key, what, focus = false) {
28
- itWithFocus(key + " - Rest Provider", async () => {
29
- let r = new Remult();
30
- r.dataProvider = (new InMemoryDataProvider());
31
- let db = new MockRestDataProvider(r);
32
- remult.dataProvider = (db);
33
- await what({ db, remult, createEntity: async (x) => remult.repo(x) });
34
- }, focus);
35
- }
36
- addDatabaseToTest(testRest, TestDbs.restDataProvider);
37
- import '../shared-tests/';
@@ -1,6 +0,0 @@
1
- import { EntityBase } from '../remult3';
2
- export declare class h extends EntityBase {
3
- id: string;
4
- refH: h;
5
- refHId: string;
6
- }
@@ -1,24 +0,0 @@
1
- import { Field, Entity, EntityBase, FieldType, Fields } from '../remult3';
2
- @FieldType({
3
- valueConverter: {
4
- toJson: x => x != undefined ? x : '',
5
- fromJson: x => x ? x : null
6
- },
7
- })
8
- @Entity('h', {
9
- saving: self => {
10
- if (self.refH)
11
- self.refHId = self.refH.id;
12
- else
13
- self.refHId = '';
14
- },
15
- allowApiCrud: true
16
- })
17
- export class h extends EntityBase {
18
- @Fields.string()
19
- id;
20
- @Field(() => h)
21
- refH;
22
- @Fields.string()
23
- refHId;
24
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,236 +0,0 @@
1
- import { InMemoryDataProvider } from "../data-providers/in-memory-database";
2
- import { Categories, Products } from './remult-3-entities';
3
- import { Entity, Field, Fields, getEntityRef } from "../remult3";
4
- import { Remult } from "../context";
5
- import { describeClass } from "../remult3/DecoratorReplacer";
6
- import { MockRestDataProvider } from "./testHelper.spec";
7
- describe("remult-3-basics", () => {
8
- it("test the very basics", async () => {
9
- let mem = new InMemoryDataProvider();
10
- let c = new Remult();
11
- c.dataProvider = (mem);
12
- expect(await c.repo(Products).count()).toBe(0);
13
- let p = c.repo(Products).create();
14
- p.id = 1;
15
- p.name = "noam";
16
- p.price = 5;
17
- p.archived = false;
18
- await c.repo(Products).save(p);
19
- expect(await c.repo(Products).count()).toBe(1);
20
- expect(await c.repo(Products).count({ id: 1 })).toBe(1);
21
- expect(await c.repo(Products).count({ id: 2 })).toBe(0);
22
- p = c.repo(Products).create();
23
- p.id = 2;
24
- p.name = "yael";
25
- p.price = 10;
26
- p.archived = true;
27
- await getEntityRef(p).save();
28
- p = new Products();
29
- p.id = 3;
30
- p.name = "yoni";
31
- p.price = 7;
32
- p.archived = false;
33
- await c.repo(Products).insert(p);
34
- expect(await c.repo(Products).count()).toBe(3);
35
- let products = await c.repo(Products).find({
36
- where: { id: 2 }
37
- });
38
- expect(products[0].name).toBe("yael");
39
- p = await c.repo(Products).findFirst({ id: 3 });
40
- p = await c.repo(Products).findFirst({}, { where: { id: 3 } });
41
- expect(p.name).toBe("yoni");
42
- });
43
- it("test save scenarios", async () => {
44
- const remult = new Remult(new InMemoryDataProvider());
45
- let repo = remult.repo(Categories);
46
- let error = false;
47
- try {
48
- let x = await repo.save({ id: 1, categoryName: 'a' });
49
- }
50
- catch {
51
- error = true;
52
- }
53
- expect(error).toBe(true);
54
- });
55
- it("test save scenarios2", async () => {
56
- const remult = new Remult(new InMemoryDataProvider());
57
- let repo = remult.repo(Categories);
58
- let x = await repo.save(new Categories());
59
- expect(x.isNew()).toBe(false);
60
- expect(await repo.count()).toBe(1);
61
- });
62
- it("test save scenarios3", async () => {
63
- const remult = new Remult(new InMemoryDataProvider());
64
- let repo = remult.repo(Categories);
65
- let x = await repo.save({ categoryName: 'a' });
66
- expect(x.isNew()).toBe(false);
67
- expect(x._.wasChanged()).toBe(false);
68
- expect(await repo.count()).toBe(1);
69
- x.categoryName = 'b';
70
- expect(x._.wasChanged()).toBe(true);
71
- await x.save();
72
- expect(x._.wasChanged()).toBe(false);
73
- expect(x.categoryName).toBe('b');
74
- await x.delete();
75
- expect(await repo.count()).toBe(0);
76
- });
77
- it("test save scenarios4", async () => {
78
- const remult = new Remult(new InMemoryDataProvider());
79
- let repo = remult.repo(Categories);
80
- let x = await repo.insert({ id: 1, categoryName: 'a' });
81
- expect(x.isNew()).toBe(false);
82
- expect(x._.wasChanged()).toBe(false);
83
- expect(await repo.count()).toBe(1);
84
- x.categoryName = 'b';
85
- expect(x._.wasChanged()).toBe(true);
86
- await x.save();
87
- expect(x._.wasChanged()).toBe(false);
88
- expect(x.categoryName).toBe('b');
89
- await x.delete();
90
- expect(await repo.count()).toBe(0);
91
- });
92
- it("test save scenarios 5", async () => {
93
- const remult = new Remult(new InMemoryDataProvider());
94
- let repo = remult.repo(Categories);
95
- await repo.insert({ id: 1, categoryName: 'a' });
96
- let x = await repo.save({ id: 1, categoryName: 'c' });
97
- expect(x.isNew()).toBe(false);
98
- expect(x.categoryName).toBe('c');
99
- expect(x._.wasChanged()).toBe(false);
100
- expect(await repo.count()).toBe(1);
101
- x.categoryName = 'b';
102
- expect(x._.wasChanged()).toBe(true);
103
- await x.save();
104
- expect(x._.wasChanged()).toBe(false);
105
- expect(x.categoryName).toBe('b');
106
- await x.delete();
107
- expect(await repo.count()).toBe(0);
108
- });
109
- it("test save scenarios 6", async () => {
110
- const remult = new Remult(new InMemoryDataProvider());
111
- let repo = remult.repo(Categories);
112
- await repo.create({ id: 1, categoryName: 'a' }).save();
113
- let x = await repo.update(1, { id: 2, categoryName: 'c' });
114
- expect(x.isNew()).toBe(false);
115
- expect(x.categoryName).toBe('c');
116
- expect(x._.wasChanged()).toBe(false);
117
- expect(await repo.count()).toBe(1);
118
- expect(x.id).toBe(2);
119
- expect(x.categoryName).toBe('c');
120
- });
121
- it("test save scenarios 7", async () => {
122
- const remult = new Remult(new InMemoryDataProvider());
123
- let repo = remult.repo(Categories);
124
- await repo.create({ id: 1, categoryName: 'a' }).save();
125
- let x = await repo.update(1, { id: 2, description: 'c' });
126
- expect(x.isNew()).toBe(false);
127
- expect(x.categoryName).toBe('a');
128
- expect(x.description).toBe('c');
129
- });
130
- it("test delete scenarios", async () => {
131
- const remult = new Remult(new InMemoryDataProvider());
132
- let repo = remult.repo(Categories);
133
- let r = await repo.create({ id: 1, categoryName: 'a' }).save();
134
- await r.delete();
135
- expect(await repo.count()).toBe(0);
136
- });
137
- it("test delete scenarios 1", async () => {
138
- const remult = new Remult(new InMemoryDataProvider());
139
- let repo = remult.repo(Categories);
140
- let r = await repo.create({ id: 1, categoryName: 'a' }).save();
141
- await repo.delete(r);
142
- expect(await repo.count()).toBe(0);
143
- });
144
- it("test delete scenarios 2", async () => {
145
- const remult = new Remult(new InMemoryDataProvider());
146
- let repo = remult.repo(Categories);
147
- await repo.create({ id: 1, categoryName: 'a' }).save();
148
- await repo.delete(1);
149
- expect(await repo.count()).toBe(0);
150
- });
151
- it("test insert works with active record and fails on existing one", async () => {
152
- const remult = new Remult(new InMemoryDataProvider());
153
- let repo = remult.repo(Categories);
154
- var r = await repo.insert(repo.create({ id: 1 }));
155
- expect(await repo.count()).toBe(1);
156
- let ok = false;
157
- try {
158
- await repo.insert(r);
159
- ok = true;
160
- }
161
- catch {
162
- }
163
- expect(ok).toBe(false);
164
- });
165
- it("save works with array", async () => {
166
- const remult = new Remult(new InMemoryDataProvider());
167
- let repo = remult.repo(Categories);
168
- let items = (await repo.insert([{ id: 1 }, { id: 2 }])).map(y => ({ ...y, categoryName: y.id.toString() }));
169
- await repo.save(items);
170
- expect(items[0].categoryName).toBe('1');
171
- });
172
- it("test update of object", async () => {
173
- const product = class {
174
- id = 0;
175
- category;
176
- };
177
- describeClass(product, Entity("pr"), {
178
- id: Fields.number(),
179
- category: Field(() => Categories)
180
- });
181
- var remult = new Remult(new InMemoryDataProvider());
182
- const [c1, c2] = await remult.repo(Categories).insert([{ id: 1, categoryName: 'cat1' }, { id: 2, categoryName: "cat2" }]);
183
- const r = remult.repo(product);
184
- let p = await r.insert({ id: 1, category: c1 });
185
- expect(p.category.id).toBe(1);
186
- p = await r.findId(1, { useCache: false });
187
- expect(p.category.id).toBe(1);
188
- p = await r.update(1, { ...p, category: c2 });
189
- expect(p.id).toBe(1);
190
- expect(p.category.id).toBe(2);
191
- p = await r.findId(1, { useCache: false });
192
- expect(p.category.id).toBe(2);
193
- p = await r.update(1, {
194
- ...p,
195
- category: { id: 1 }
196
- });
197
- expect(p.id).toBe(1);
198
- expect(p.category.id).toBe(1);
199
- p = await r.findId(1, { useCache: false });
200
- expect(p.category.id).toBe(1);
201
- expect(p.category.categoryName).toBe("cat1");
202
- });
203
- it("test update of object data api", async () => {
204
- const product = class {
205
- id = 0;
206
- category;
207
- };
208
- describeClass(product, Entity("pr", { allowApiCrud: true }), {
209
- id: Fields.number(),
210
- category: Field(() => Categories)
211
- });
212
- var sr = new Remult(new InMemoryDataProvider());
213
- var dp = new MockRestDataProvider(sr);
214
- var remult = new Remult(dp);
215
- const [c1, c2] = await remult.repo(Categories).insert([{ id: 1, categoryName: 'cat1' }, { id: 2, categoryName: "cat2" }]);
216
- const r = remult.repo(product);
217
- let p = await r.insert({ id: 1, category: c1 });
218
- expect(p.category.id).toBe(1);
219
- p = await r.findId(1, { useCache: false });
220
- expect(p.category.id).toBe(1);
221
- p = await r.update(1, { ...p, category: c2 });
222
- expect(p.id).toBe(1);
223
- expect(p.category.id).toBe(2);
224
- p = await r.findId(1, { useCache: false });
225
- expect(p.category.id).toBe(2);
226
- p = await r.update(1, {
227
- ...p,
228
- category: { id: 1 }
229
- });
230
- expect(p.id).toBe(1);
231
- expect(p.category.id).toBe(1);
232
- p = await r.findId(1, { useCache: false });
233
- expect(p.category.id).toBe(1);
234
- expect(p.category.categoryName).toBe("cat1");
235
- });
236
- });
@@ -1,23 +0,0 @@
1
- import { EntityBase } from "../remult3";
2
- import { Status } from "./testModel/models";
3
- export declare class Products {
4
- id: number;
5
- name: string;
6
- price: number;
7
- archived: boolean;
8
- availableFrom: Date;
9
- }
10
- export interface CategoriesForTesting extends EntityBase {
11
- id: number;
12
- categoryName: string;
13
- description: string;
14
- status: Status;
15
- }
16
- export declare class Categories extends EntityBase {
17
- id: number;
18
- categoryName: string;
19
- description: string;
20
- categoryNameLength: number;
21
- categoryNameLengthAsync: number;
22
- status: Status;
23
- }
@@ -1,39 +0,0 @@
1
- import { EntityBase, Field, Entity, Fields } from "../remult3";
2
- import { Status } from "./testModel/models";
3
- @Entity('Products')
4
- export class Products {
5
- @Fields.integer()
6
- id;
7
- @Fields.string()
8
- name;
9
- @Fields.number()
10
- price;
11
- @Fields.boolean()
12
- archived;
13
- @Fields.date()
14
- availableFrom;
15
- }
16
- let r;
17
- @Entity('Categories', {
18
- allowApiCrud: true
19
- })
20
- export class Categories extends EntityBase {
21
- @Fields.number({
22
- dbName: 'CategoryID'
23
- })
24
- id = 0;
25
- @Fields.string({ allowNull: true })
26
- categoryName;
27
- @Fields.string()
28
- description;
29
- @Fields.number({
30
- serverExpression: c => c.categoryName ? c.categoryName.length : undefined
31
- })
32
- categoryNameLength;
33
- @Fields.number({
34
- serverExpression: (c) => Promise.resolve(c.categoryName ? c.categoryName.length : undefined)
35
- })
36
- categoryNameLengthAsync;
37
- @Field(() => Status)
38
- status;
39
- }
@@ -1,6 +0,0 @@
1
- import { EntityBase } from '../remult3';
2
- export declare class tasks extends EntityBase {
3
- id: number;
4
- name: string;
5
- completed: boolean;
6
- }
@@ -1,10 +0,0 @@
1
- import { Entity, EntityBase, Fields } from '../remult3';
2
- @Entity('tasks', { allowApiCrud: true })
3
- export class tasks extends EntityBase {
4
- @Fields.integer()
5
- id;
6
- @Fields.string()
7
- name;
8
- @Fields.boolean()
9
- completed = false;
10
- }
@@ -1 +0,0 @@
1
- "use strict";