remult 0.22.3 → 0.22.5

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 (255) hide show
  1. package/esm/angular/interfaces/index.d.ts +1 -0
  2. package/esm/angular/interfaces/index.js +1 -0
  3. package/esm/angular/interfaces/src/column-collection.d.ts +70 -0
  4. package/esm/angular/interfaces/src/column-collection.js +341 -0
  5. package/esm/angular/interfaces/src/data-area-settings.d.ts +15 -0
  6. package/esm/angular/interfaces/src/data-area-settings.js +35 -0
  7. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +36 -0
  8. package/esm/angular/interfaces/src/data-control-interfaces.js +57 -0
  9. package/esm/angular/interfaces/src/dataList.d.ts +13 -0
  10. package/esm/angular/interfaces/src/dataList.js +42 -0
  11. package/esm/angular/interfaces/src/filter-helper.d.ts +13 -0
  12. package/esm/angular/interfaces/src/filter-helper.js +59 -0
  13. package/esm/angular/interfaces/src/grid-settings.d.ts +145 -0
  14. package/esm/angular/interfaces/src/grid-settings.js +387 -0
  15. package/esm/angular/interfaces/src/public_api.d.ts +4 -0
  16. package/esm/angular/interfaces/src/public_api.js +4 -0
  17. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +4 -0
  18. package/esm/angular/src/angular/RemultAngularPluginsService.js +3 -0
  19. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +49 -0
  20. package/esm/angular/src/angular/data-control/data-control2.component.js +138 -0
  21. package/esm/core/SseSubscriptionServer.d.ts +33 -0
  22. package/esm/core/SseSubscriptionServer.js +107 -0
  23. package/esm/core/assign.d.ts +1 -0
  24. package/esm/core/assign.js +5 -0
  25. package/esm/core/classType.d.ts +3 -0
  26. package/esm/core/classType.js +1 -0
  27. package/esm/core/index.d.ts +27 -0
  28. package/esm/core/index.js +25 -0
  29. package/esm/core/inputTypes.d.ts +9 -0
  30. package/esm/core/inputTypes.js +9 -0
  31. package/esm/core/live-query/data-provider-live-query-storage.d.ts +22 -0
  32. package/esm/core/live-query/data-provider-live-query-storage.js +71 -0
  33. package/esm/core/postgres/index.d.ts +2 -0
  34. package/esm/core/postgres/index.js +2 -0
  35. package/esm/core/postgres/postgres-data-provider.d.ts +36 -0
  36. package/esm/core/postgres/postgres-data-provider.js +120 -0
  37. package/esm/core/postgres/schema-builder.d.ts +17 -0
  38. package/esm/core/postgres/schema-builder.js +153 -0
  39. package/esm/core/remult-fresh.d.ts +17 -0
  40. package/esm/core/remult-fresh.js +29 -0
  41. package/esm/core/remult-knex/index.d.ts +30 -0
  42. package/esm/core/remult-knex/index.js +446 -0
  43. package/esm/core/remult-mongo.d.ts +24 -0
  44. package/esm/core/remult-mongo.js +254 -0
  45. package/esm/core/server/JsonEntityFileStorage.d.ts +10 -0
  46. package/esm/core/server/JsonEntityFileStorage.js +25 -0
  47. package/esm/core/server/core.d.ts +4 -0
  48. package/esm/core/server/core.js +4 -0
  49. package/esm/core/server/expressBridge.d.ts +182 -0
  50. package/esm/core/server/expressBridge.js +938 -0
  51. package/esm/core/server/index.d.ts +6 -0
  52. package/esm/core/server/index.js +9 -0
  53. package/esm/core/server/initAsyncHooks.d.ts +1 -0
  54. package/esm/core/server/initAsyncHooks.js +9 -0
  55. package/esm/core/server/initDataProvider.d.ts +2 -0
  56. package/esm/core/server/initDataProvider.js +14 -0
  57. package/esm/core/src/__EntityValueProvider.d.ts +11 -0
  58. package/esm/core/src/__EntityValueProvider.js +1 -0
  59. package/esm/core/src/__RowsOfDataForTesting.d.ts +3 -0
  60. package/esm/core/src/__RowsOfDataForTesting.js +1 -0
  61. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +6 -0
  62. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +147 -0
  63. package/{src → esm/core/src}/backend-tests/my-test.backend-spec.d.ts +1 -1
  64. package/esm/core/src/backend-tests/my-test.backend-spec.js +197 -0
  65. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +1 -0
  66. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +167 -0
  67. package/esm/core/src/buildRestDataProvider.d.ts +31 -0
  68. package/esm/core/src/buildRestDataProvider.js +113 -0
  69. package/esm/core/src/column-interfaces.d.ts +154 -0
  70. package/esm/core/src/column-interfaces.js +7 -0
  71. package/esm/core/src/column.d.ts +58 -0
  72. package/esm/core/src/column.js +174 -0
  73. package/esm/core/src/context.d.ts +134 -0
  74. package/esm/core/src/context.js +286 -0
  75. package/esm/core/src/data-api.d.ts +39 -0
  76. package/esm/core/src/data-api.js +279 -0
  77. package/esm/core/src/data-interfaces.d.ts +41 -0
  78. package/esm/core/src/data-interfaces.js +12 -0
  79. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +22 -0
  80. package/esm/core/src/data-providers/array-entity-data-provider.js +252 -0
  81. package/esm/core/src/data-providers/in-memory-database.d.ts +9 -0
  82. package/esm/core/src/data-providers/in-memory-database.js +14 -0
  83. package/esm/core/src/data-providers/json-data-provider.d.ts +12 -0
  84. package/esm/core/src/data-providers/json-data-provider.js +55 -0
  85. package/esm/core/src/data-providers/rest-data-provider.d.ts +49 -0
  86. package/esm/core/src/data-providers/rest-data-provider.js +256 -0
  87. package/esm/core/src/data-providers/sql-database.d.ts +33 -0
  88. package/esm/core/src/data-providers/sql-database.js +384 -0
  89. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +24 -0
  90. package/esm/core/src/data-providers/web-sql-data-provider.js +143 -0
  91. package/esm/core/src/entity.d.ts +91 -0
  92. package/esm/core/src/entity.js +1 -0
  93. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
  94. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +150 -0
  95. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
  96. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +1 -0
  97. package/esm/core/src/filter/filter-interfaces.d.ts +85 -0
  98. package/esm/core/src/filter/filter-interfaces.js +477 -0
  99. package/esm/core/src/live-query/LiveQueryClient.d.ts +20 -0
  100. package/esm/core/src/live-query/LiveQueryClient.js +188 -0
  101. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +5 -0
  102. package/esm/core/src/live-query/SseSubscriptionClient.js +86 -0
  103. package/esm/core/src/live-query/SubscriptionChannel.d.ts +72 -0
  104. package/esm/core/src/live-query/SubscriptionChannel.js +123 -0
  105. package/esm/core/src/live-query/SubscriptionServer.d.ts +53 -0
  106. package/esm/core/src/live-query/SubscriptionServer.js +111 -0
  107. package/esm/core/src/live-query/live-query-tests.spec.d.ts +6 -0
  108. package/esm/core/src/live-query/live-query-tests.spec.js +952 -0
  109. package/esm/core/src/remult-proxy.d.ts +35 -0
  110. package/esm/core/src/remult-proxy.js +113 -0
  111. package/esm/core/src/remult3/DecoratorReplacer.d.ts +10 -0
  112. package/esm/core/src/remult3/DecoratorReplacer.js +20 -0
  113. package/esm/core/src/remult3/RepositoryImplementation.d.ts +355 -0
  114. package/esm/core/src/remult3/RepositoryImplementation.js +2109 -0
  115. package/esm/core/src/remult3/index.d.ts +2 -0
  116. package/esm/core/src/remult3/index.js +2 -0
  117. package/esm/core/src/remult3/remult3.d.ts +395 -0
  118. package/esm/core/src/remult3/remult3.js +2 -0
  119. package/esm/core/src/server-action.d.ts +81 -0
  120. package/esm/core/src/server-action.js +394 -0
  121. package/esm/core/src/shared-tests/db-tests-setup.d.ts +32 -0
  122. package/esm/core/src/shared-tests/db-tests-setup.js +78 -0
  123. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +25 -0
  124. package/esm/core/src/shared-tests/db-tests.db-tests.js +810 -0
  125. package/esm/core/src/shared-tests/deleteAll.d.ts +2 -0
  126. package/esm/core/src/shared-tests/deleteAll.js +4 -0
  127. package/esm/core/src/shared-tests/entityWithValidations.d.ts +14 -0
  128. package/esm/core/src/shared-tests/entityWithValidations.js +43 -0
  129. package/esm/core/src/shared-tests/index.d.ts +4 -0
  130. package/esm/core/src/shared-tests/index.js +4 -0
  131. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  132. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +67 -0
  133. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +10 -0
  134. package/esm/core/src/shared-tests/test-special-value.spec.js +73 -0
  135. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  136. package/esm/core/src/shared-tests/test-update-with-null.spec.js +31 -0
  137. package/esm/core/src/sort.d.ts +16 -0
  138. package/esm/core/src/sort.js +103 -0
  139. package/esm/core/src/sql-command.d.ts +19 -0
  140. package/esm/core/src/sql-command.js +1 -0
  141. package/esm/core/src/test.d.ts +3 -0
  142. package/esm/core/src/test.js +12 -0
  143. package/esm/core/src/tests/Done.d.ts +5 -0
  144. package/esm/core/src/tests/Done.js +9 -0
  145. package/esm/core/src/tests/RowProvider.spec.d.ts +16 -0
  146. package/esm/core/src/tests/RowProvider.spec.js +631 -0
  147. package/esm/core/src/tests/TestDataApiResponse.d.ts +10 -0
  148. package/esm/core/src/tests/TestDataApiResponse.js +22 -0
  149. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +8 -0
  150. package/esm/core/src/tests/basicRowFunctionality.spec.js +2103 -0
  151. package/esm/core/src/tests/c.d.ts +8 -0
  152. package/esm/core/src/tests/c.js +13 -0
  153. package/esm/core/src/tests/createData.d.ts +7 -0
  154. package/esm/core/src/tests/createData.js +22 -0
  155. package/esm/core/src/tests/d.d.ts +6 -0
  156. package/esm/core/src/tests/d.js +11 -0
  157. package/esm/core/src/tests/dWithPrefilter.d.ts +7 -0
  158. package/esm/core/src/tests/dWithPrefilter.js +18 -0
  159. package/esm/core/src/tests/entityForCustomFilter.d.ts +16 -0
  160. package/esm/core/src/tests/entityForCustomFilter.js +33 -0
  161. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  162. package/esm/core/src/tests/entityWithValidationsOnColumn.js +13 -0
  163. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
  164. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +37 -0
  165. package/esm/core/src/tests/h.d.ts +6 -0
  166. package/esm/core/src/tests/h.js +24 -0
  167. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +1 -0
  168. package/esm/core/src/tests/remult-3-basic-tests.spec.js +236 -0
  169. package/esm/core/src/tests/remult-3-entities.d.ts +23 -0
  170. package/esm/core/src/tests/remult-3-entities.js +39 -0
  171. package/esm/core/src/tests/tasks.d.ts +6 -0
  172. package/esm/core/src/tests/tasks.js +10 -0
  173. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  174. package/esm/core/src/tests/test-context-as-storage.spec.js +1 -0
  175. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +1 -0
  176. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +389 -0
  177. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +5 -0
  178. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +152 -0
  179. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +1 -0
  180. package/esm/core/src/tests/test-decorator-precedence.spec.js +38 -0
  181. package/esm/core/src/tests/test-default-value.spec.d.ts +1 -0
  182. package/esm/core/src/tests/test-default-value.spec.js +33 -0
  183. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +14 -0
  184. package/esm/core/src/tests/test-entity-inheritance.spec.js +82 -0
  185. package/esm/core/src/tests/test-exceptions.spec.d.ts +1 -0
  186. package/esm/core/src/tests/test-exceptions.spec.js +375 -0
  187. package/esm/core/src/tests/test-json.spec.d.ts +1 -0
  188. package/esm/core/src/tests/test-json.spec.js +115 -0
  189. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +9 -0
  190. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +809 -0
  191. package/esm/core/src/tests/test-non-active-record.spec.d.ts +1 -0
  192. package/esm/core/src/tests/test-non-active-record.spec.js +66 -0
  193. package/esm/core/src/tests/test-object-column.spec.d.ts +1 -0
  194. package/esm/core/src/tests/test-object-column.spec.js +189 -0
  195. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +1 -0
  196. package/esm/core/src/tests/test-paged-foreach.spec.js +328 -0
  197. package/esm/core/src/tests/test-remult-angular.spec.d.ts +1 -0
  198. package/esm/core/src/tests/test-remult-angular.spec.js +23 -0
  199. package/esm/core/src/tests/test-server-controller.spec.d.ts +7 -0
  200. package/esm/core/src/tests/test-server-controller.spec.js +489 -0
  201. package/esm/core/src/tests/test-server-expressions.spec.d.ts +1 -0
  202. package/esm/core/src/tests/test-server-expressions.spec.js +178 -0
  203. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +1 -0
  204. package/esm/core/src/tests/test-server-method-on-entity.spec.js +306 -0
  205. package/esm/core/src/tests/test-sql-expression.spec.d.ts +5 -0
  206. package/esm/core/src/tests/test-sql-expression.spec.js +205 -0
  207. package/esm/core/src/tests/test-sql.spec.d.ts +1 -0
  208. package/esm/core/src/tests/test-sql.spec.js +170 -0
  209. package/esm/core/src/tests/test-subscribe.spec.d.ts +1 -0
  210. package/esm/core/src/tests/test-subscribe.spec.js +135 -0
  211. package/esm/core/src/tests/test-type-recovery.spec.d.ts +1 -0
  212. package/esm/core/src/tests/test-type-recovery.spec.js +49 -0
  213. package/esm/core/src/tests/test-where-api.spec.d.ts +1 -0
  214. package/esm/core/src/tests/test-where-api.spec.js +434 -0
  215. package/esm/core/src/tests/testHelper.spec.d.ts +36 -0
  216. package/esm/core/src/tests/testHelper.spec.js +226 -0
  217. package/esm/core/src/tests/testModel/models.d.ts +16 -0
  218. package/esm/core/src/tests/testModel/models.js +25 -0
  219. package/esm/core/src/validators.d.ts +14 -0
  220. package/esm/core/src/validators.js +33 -0
  221. package/{valueConverters.d.ts → esm/core/src/valueConverters.d.ts} +13 -12
  222. package/esm/core/src/valueConverters.js +197 -0
  223. package/esm/core/urlBuilder.d.ts +6 -0
  224. package/esm/core/urlBuilder.js +20 -0
  225. package/esm/graphql.js +27 -27
  226. package/esm/postgres/schema-builder.js +4 -4
  227. package/esm/src/context.d.ts +6 -1
  228. package/esm/src/remult3/RepositoryImplementation.d.ts +1 -1
  229. package/esm/src/remult3/RepositoryImplementation.js +27 -4
  230. package/esm/src/shared-tests/db-tests.db-tests.js +57 -0
  231. package/esm/test-servers/shared/Task.d.ts +9 -0
  232. package/esm/test-servers/shared/Task.js +32 -0
  233. package/esm/test.d.ts +5 -0
  234. package/esm/test.js +6 -0
  235. package/package.json +1 -1
  236. package/src/context.d.ts +6 -1
  237. package/src/remult3/RepositoryImplementation.d.ts +1 -1
  238. package/src/remult3/RepositoryImplementation.js +88 -63
  239. package/src/shared-tests/db-tests.db-tests.js +97 -0
  240. package/esm/src/id-entity.d.ts +0 -4
  241. package/esm/src/id-entity.js +0 -8
  242. package/postgres/postgresColumnSyntax.d.ts +0 -2
  243. package/postgres/postgresColumnSyntax.js +0 -34
  244. package/remult-middleware.d.ts +0 -2
  245. package/remult-middleware.js +0 -70
  246. package/server/register-actions-on-server.d.ts +0 -3
  247. package/server/register-actions-on-server.js +0 -50
  248. package/server/register-entities-on-server.d.ts +0 -3
  249. package/server/register-entities-on-server.js +0 -19
  250. package/src/backend-tests/my-test.backend-spec.js +0 -217
  251. package/src/backend-tests/test-http-server.backend-spec.d.ts +0 -6
  252. package/src/backend-tests/test-http-server.backend-spec.js +0 -342
  253. package/src/id-entity.d.ts +0 -4
  254. package/src/id-entity.js +0 -17
  255. package/valueConverters.js +0 -168
@@ -116,8 +116,8 @@ export class PostgresSchemaBuilder {
116
116
  try {
117
117
  let cmd = this.pool.createCommand();
118
118
  const colName = e.$dbNameOf(c(entity));
119
- if ((await cmd.execute(`select 1
120
- FROM information_schema.columns
119
+ if ((await cmd.execute(`select 1
120
+ FROM information_schema.columns
121
121
  WHERE table_name=${cmd.addParameterAndReturnSqlToken(e.$entityName.toLocaleLowerCase())} and column_name=${cmd.addParameterAndReturnSqlToken(colName.toLocaleLowerCase())}` + this.additionalWhere)).rows.length == 0) {
122
122
  let sql = `alter table ${e.$entityName} add column ${postgresColumnSyntax(c(entity), colName)}`;
123
123
  if (PostgresSchemaBuilder.logToConsole)
@@ -133,8 +133,8 @@ export class PostgresSchemaBuilder {
133
133
  try {
134
134
  let cmd = this.pool.createCommand();
135
135
  let e = await dbNamesOf(entity);
136
- let cols = (await cmd.execute(`select column_name
137
- FROM information_schema.columns
136
+ let cols = (await cmd.execute(`select column_name
137
+ FROM information_schema.columns
138
138
  WHERE table_name=${cmd.addParameterAndReturnSqlToken(e.$entityName.toLocaleLowerCase())} ` + this.additionalWhere)).rows.map((x) => x.column_name.toLocaleLowerCase());
139
139
  for (const col of entity.fields) {
140
140
  if (!isDbReadonly(col, e)) {
@@ -8,11 +8,15 @@ export declare class RemultAsyncLocalStorage {
8
8
  private readonly remultObjectStorage;
9
9
  static enable(): void;
10
10
  static disable(): void;
11
- constructor(remultObjectStorage: import('async_hooks').AsyncLocalStorage<Remult>);
11
+ constructor(remultObjectStorage: myAsyncLocalStorage<Remult>);
12
12
  run(remult: Remult, callback: VoidFunction): void;
13
13
  getRemult(): Remult;
14
14
  static instance: RemultAsyncLocalStorage;
15
15
  }
16
+ declare type myAsyncLocalStorage<T> = {
17
+ run<R>(store: T, callback: (...args: any[]) => R, ...args: any[]): R;
18
+ getStore(): T;
19
+ };
16
20
  export declare function isBackend(): boolean;
17
21
  export declare class Remult {
18
22
  /**Return's a `Repository` of the specific entity type
@@ -127,3 +131,4 @@ export interface itemChange {
127
131
  deleted: boolean;
128
132
  }
129
133
  export declare function doTransaction(remult: Remult, what: () => Promise<void>): Promise<void>;
134
+ export {};
@@ -124,7 +124,7 @@ export declare class rowHelperImplementation<T> extends rowHelperBase<T> impleme
124
124
  private _columns;
125
125
  get fields(): FieldsRef<T>;
126
126
  private _saving;
127
- save(): Promise<T>;
127
+ save(onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject?: string[]): Promise<T>;
128
128
  private getIdFilter;
129
129
  delete(): Promise<void>;
130
130
  loadDataFrom(data: any, loadItems?: FieldMetadata[]): Promise<void>;
@@ -190,8 +190,28 @@ export class RepositoryImplementation {
190
190
  }
191
191
  }
192
192
  async update(id, entity) {
193
+ {
194
+ let ref = getEntityRef(entity, false);
195
+ if (ref)
196
+ return (await ref.save());
197
+ }
193
198
  let ref = this.getRefForExistingRow(entity, id);
194
- return (await ref.save());
199
+ if (this.dataProvider.isProxy) {
200
+ return await ref.save(Object.keys(entity));
201
+ }
202
+ else {
203
+ const r = await this.findId(ref.id, { useCache: false });
204
+ if (!r)
205
+ throw new Error('Not Found');
206
+ for (const key in entity) {
207
+ if (Object.prototype.hasOwnProperty.call(entity, key)) {
208
+ let f = ref.fields[key];
209
+ if (f)
210
+ r[key] = f.value;
211
+ }
212
+ }
213
+ return await getEntityRef(r).save();
214
+ }
195
215
  }
196
216
  getRefForExistingRow(entity, id) {
197
217
  let ref = getEntityRef(entity, false);
@@ -909,7 +929,7 @@ export class rowHelperImplementation extends rowHelperBase {
909
929
  }
910
930
  return this._columns;
911
931
  }
912
- async save() {
932
+ async save(onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject) {
913
933
  try {
914
934
  if (this._saving)
915
935
  throw new Error('cannot save while entity is already saving');
@@ -917,7 +937,8 @@ export class rowHelperImplementation extends rowHelperBase {
917
937
  if (this.wasDeleted())
918
938
  throw new Error('cannot save a deleted row');
919
939
  this.isLoading = true;
920
- await this.__validateEntity();
940
+ if (onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject === undefined) // no need
941
+ await this.__validateEntity();
921
942
  let doNotSave = false;
922
943
  for (const col of this.fields) {
923
944
  if (col.metadata.options.saving)
@@ -930,7 +951,9 @@ export class rowHelperImplementation extends rowHelperBase {
930
951
  let d = this.copyDataToObject();
931
952
  let ignoreKeys = [];
932
953
  for (const field of this.metadata.fields) {
933
- if (field.dbReadOnly) {
954
+ if (field.dbReadOnly ||
955
+ (onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject !== undefined &&
956
+ !onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject.includes(field.key))) {
934
957
  d[field.key] = undefined;
935
958
  ignoreKeys.push(field.key);
936
959
  let f = this.fields.find(field);
@@ -1117,3 +1117,60 @@ testAll('test relation to string id', async ({ createEntity }) => {
1117
1117
  expect(await taskRepo.count({ category: cat[1] })).toBe(1);
1118
1118
  expect(await taskRepo.count({ category: { $id: cat[0].id } })).toBe(2);
1119
1119
  }, false, { exclude: [TestDbs.mongo, TestDbs.mongoNoTrans] });
1120
+ testAll("test update doesn't override other values", async ({ createEntity, remult }) => {
1121
+ const catRepo = await createEntity(Categories);
1122
+ const cat = await catRepo.insert({ id: 1, categoryName: 'cat' });
1123
+ const task = class {
1124
+ constructor() {
1125
+ this.id = 0;
1126
+ this.title = '';
1127
+ this.completed = false;
1128
+ }
1129
+ };
1130
+ describeClass(task, Entity('tasks', { allowApiCrud: true }), {
1131
+ id: Fields.integer(),
1132
+ title: Fields.string(),
1133
+ cat: Field(() => Categories),
1134
+ completed: Fields.boolean(),
1135
+ });
1136
+ const taskRepo = await createEntity(task);
1137
+ await taskRepo.insert({ id: 1, cat, title: 'noam' });
1138
+ {
1139
+ const aTask = await taskRepo.findFirst({}, { useCache: false });
1140
+ expect(aTask.title).toBe('noam');
1141
+ expect(aTask.cat.categoryName).toBe('cat');
1142
+ expect(aTask.completed).toBe(false);
1143
+ }
1144
+ await taskRepo.update(1, { completed: true });
1145
+ {
1146
+ const aTask = await taskRepo.findFirst({}, { useCache: false });
1147
+ expect(aTask.id).toBe(1);
1148
+ expect(aTask.title).toBe('noam');
1149
+ expect(aTask.cat.categoryName).toBe('cat');
1150
+ expect(aTask.completed).toBe(true);
1151
+ }
1152
+ }, false);
1153
+ testAll("test update doesn't validate non included fields", async ({ createEntity, remult }) => {
1154
+ const catRepo = await createEntity(Categories);
1155
+ const cat = await catRepo.insert({ id: 1, categoryName: 'cat' });
1156
+ const task = class {
1157
+ constructor() {
1158
+ this.id = 0;
1159
+ this.title = '';
1160
+ this.completed = false;
1161
+ }
1162
+ };
1163
+ describeClass(task, Entity('tasks', { allowApiCrud: true }), {
1164
+ id: Fields.integer(),
1165
+ title: Fields.string({ validate: Validators.required }),
1166
+ cat: Field(() => Categories),
1167
+ completed: Fields.boolean(),
1168
+ });
1169
+ const taskRepo = await createEntity(task);
1170
+ await taskRepo.insert({ id: 1, cat, title: 'noam' });
1171
+ await taskRepo.update(1, { completed: true });
1172
+ {
1173
+ const aTask = await taskRepo.findId(1, { useCache: false });
1174
+ expect(aTask.completed).toBe(true);
1175
+ }
1176
+ }, false);
@@ -0,0 +1,9 @@
1
+ import { Remult } from '../../core/src/context';
2
+ export declare class Task {
3
+ id: string;
4
+ title: string;
5
+ completed: boolean;
6
+ static testForbidden(): void;
7
+ static testStaticRemult(): Promise<number>;
8
+ static testInjectedRemult(remult?: Remult): Promise<number>;
9
+ }
@@ -0,0 +1,32 @@
1
+ import { Entity, Fields } from '../../core/src/remult3';
2
+ import { Validators } from '../../core/src/validators';
3
+ import { BackendMethod } from '../../core/src/server-action';
4
+ import { remult } from '../../core/src/remult-proxy';
5
+ import { isBackend } from '../../core/src/context';
6
+ @Entity("tasks", {
7
+ allowApiCrud: true
8
+ })
9
+ export class Task {
10
+ @Fields.uuid()
11
+ id;
12
+ @Fields.string({
13
+ validate: (r, c) => {
14
+ if (isBackend())
15
+ Validators.required(r, c);
16
+ }
17
+ })
18
+ title = '';
19
+ @Fields.boolean()
20
+ completed = false;
21
+ @BackendMethod({ allowed: false })
22
+ static testForbidden() {
23
+ }
24
+ @BackendMethod({ allowed: true })
25
+ static async testStaticRemult() {
26
+ return await remult.repo(Task).count();
27
+ }
28
+ @BackendMethod({ allowed: true })
29
+ static async testInjectedRemult(remult) {
30
+ return await remult.repo(Task).count();
31
+ }
32
+ }
package/esm/test.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export type ClassType<T> = {
2
+ new (...args: any[]): T;
3
+ };
4
+ export declare function Field1<valueType>(valueType: () => ClassType<valueType>): (target: any, context: ClassFieldDecoratorContext<any, valueType | undefined> | string) => void;
5
+ export declare function createdAt(): (target: any, context: string | ClassFieldDecoratorContext<any, Date>) => void;
package/esm/test.js ADDED
@@ -0,0 +1,6 @@
1
+ export function Field1(valueType) {
2
+ return (target, context) => { };
3
+ }
4
+ export function createdAt() {
5
+ return Field1(() => Date);
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.22.3",
3
+ "version": "0.22.5",
4
4
  "description": "A CRUD framework for full-stack TypeScript",
5
5
  "types": "index.d.ts",
6
6
  "module": "esm/index.js",
package/src/context.d.ts CHANGED
@@ -8,11 +8,15 @@ export declare class RemultAsyncLocalStorage {
8
8
  private readonly remultObjectStorage;
9
9
  static enable(): void;
10
10
  static disable(): void;
11
- constructor(remultObjectStorage: import('async_hooks').AsyncLocalStorage<Remult>);
11
+ constructor(remultObjectStorage: myAsyncLocalStorage<Remult>);
12
12
  run(remult: Remult, callback: VoidFunction): void;
13
13
  getRemult(): Remult;
14
14
  static instance: RemultAsyncLocalStorage;
15
15
  }
16
+ declare type myAsyncLocalStorage<T> = {
17
+ run<R>(store: T, callback: (...args: any[]) => R, ...args: any[]): R;
18
+ getStore(): T;
19
+ };
16
20
  export declare function isBackend(): boolean;
17
21
  export declare class Remult {
18
22
  /**Return's a `Repository` of the specific entity type
@@ -127,3 +131,4 @@ export interface itemChange {
127
131
  deleted: boolean;
128
132
  }
129
133
  export declare function doTransaction(remult: Remult, what: () => Promise<void>): Promise<void>;
134
+ export {};
@@ -124,7 +124,7 @@ export declare class rowHelperImplementation<T> extends rowHelperBase<T> impleme
124
124
  private _columns;
125
125
  get fields(): FieldsRef<T>;
126
126
  private _saving;
127
- save(): Promise<T>;
127
+ save(onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject?: string[]): Promise<T>;
128
128
  private getIdFilter;
129
129
  delete(): Promise<void>;
130
130
  loadDataFrom(data: any, loadItems?: FieldMetadata[]): Promise<void>;
@@ -324,13 +324,33 @@ var RepositoryImplementation = /** @class */ (function () {
324
324
  };
325
325
  RepositoryImplementation.prototype.update = function (id, entity) {
326
326
  return tslib_1.__awaiter(this, void 0, void 0, function () {
327
- var ref;
327
+ var ref_1, ref, r, key, f;
328
328
  return tslib_1.__generator(this, function (_a) {
329
329
  switch (_a.label) {
330
330
  case 0:
331
- ref = this.getRefForExistingRow(entity, id);
332
- return [4 /*yield*/, ref.save()];
331
+ ref_1 = getEntityRef(entity, false);
332
+ if (!ref_1) return [3 /*break*/, 2];
333
+ return [4 /*yield*/, ref_1.save()];
333
334
  case 1: return [2 /*return*/, (_a.sent())];
335
+ case 2:
336
+ ref = this.getRefForExistingRow(entity, id);
337
+ if (!this.dataProvider.isProxy) return [3 /*break*/, 4];
338
+ return [4 /*yield*/, ref.save(Object.keys(entity))];
339
+ case 3: return [2 /*return*/, _a.sent()];
340
+ case 4: return [4 /*yield*/, this.findId(ref.id, { useCache: false })];
341
+ case 5:
342
+ r = _a.sent();
343
+ if (!r)
344
+ throw new Error('Not Found');
345
+ for (key in entity) {
346
+ if (Object.prototype.hasOwnProperty.call(entity, key)) {
347
+ f = ref.fields[key];
348
+ if (f)
349
+ r[key] = f.value;
350
+ }
351
+ }
352
+ return [4 /*yield*/, getEntityRef(r).save()];
353
+ case 6: return [2 /*return*/, _a.sent()];
334
354
  }
335
355
  });
336
356
  });
@@ -1525,7 +1545,7 @@ var rowHelperImplementation = /** @class */ (function (_super) {
1525
1545
  enumerable: false,
1526
1546
  configurable: true
1527
1547
  });
1528
- rowHelperImplementation.prototype.save = function () {
1548
+ rowHelperImplementation.prototype.save = function (onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject) {
1529
1549
  var _a;
1530
1550
  return tslib_1.__awaiter(this, void 0, void 0, function () {
1531
1551
  var doNotSave_1, _b, _c, col, e_25_1, d, ignoreKeys, _d, _e, field, f, updatedRow, isNew, changesOnly, wasChanged, key, element, _f, _g, listener, e_26_1, err_1;
@@ -1533,58 +1553,63 @@ var rowHelperImplementation = /** @class */ (function (_super) {
1533
1553
  return tslib_1.__generator(this, function (_l) {
1534
1554
  switch (_l.label) {
1535
1555
  case 0:
1536
- _l.trys.push([0, , 34, 35]);
1556
+ _l.trys.push([0, , 35, 36]);
1537
1557
  if (this._saving)
1538
1558
  throw new Error('cannot save while entity is already saving');
1539
1559
  this._saving = true;
1540
1560
  if (this.wasDeleted())
1541
1561
  throw new Error('cannot save a deleted row');
1542
1562
  this.isLoading = true;
1563
+ if (!(onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject === undefined)) return [3 /*break*/, 2];
1543
1564
  return [4 /*yield*/, this.__validateEntity()];
1544
1565
  case 1:
1545
1566
  _l.sent();
1546
- doNotSave_1 = false;
1547
1567
  _l.label = 2;
1548
1568
  case 2:
1549
- _l.trys.push([2, 7, 8, 9]);
1550
- _b = tslib_1.__values(this.fields), _c = _b.next();
1569
+ doNotSave_1 = false;
1551
1570
  _l.label = 3;
1552
1571
  case 3:
1553
- if (!!_c.done) return [3 /*break*/, 6];
1572
+ _l.trys.push([3, 8, 9, 10]);
1573
+ _b = tslib_1.__values(this.fields), _c = _b.next();
1574
+ _l.label = 4;
1575
+ case 4:
1576
+ if (!!_c.done) return [3 /*break*/, 7];
1554
1577
  col = _c.value;
1555
- if (!col.metadata.options.saving) return [3 /*break*/, 5];
1578
+ if (!col.metadata.options.saving) return [3 /*break*/, 6];
1556
1579
  return [4 /*yield*/, col.metadata.options.saving(this.instance, col)];
1557
- case 4:
1558
- _l.sent();
1559
- _l.label = 5;
1560
1580
  case 5:
1581
+ _l.sent();
1582
+ _l.label = 6;
1583
+ case 6:
1561
1584
  _c = _b.next();
1562
- return [3 /*break*/, 3];
1563
- case 6: return [3 /*break*/, 9];
1564
- case 7:
1585
+ return [3 /*break*/, 4];
1586
+ case 7: return [3 /*break*/, 10];
1587
+ case 8:
1565
1588
  e_25_1 = _l.sent();
1566
1589
  e_25 = { error: e_25_1 };
1567
- return [3 /*break*/, 9];
1568
- case 8:
1590
+ return [3 /*break*/, 10];
1591
+ case 9:
1569
1592
  try {
1570
1593
  if (_c && !_c.done && (_h = _b.return)) _h.call(_b);
1571
1594
  }
1572
1595
  finally { if (e_25) throw e_25.error; }
1573
1596
  return [7 /*endfinally*/];
1574
- case 9:
1575
- if (!this.info.entityInfo.saving) return [3 /*break*/, 11];
1576
- return [4 /*yield*/, this.info.entityInfo.saving(this.instance, function () { return (doNotSave_1 = true); })];
1577
1597
  case 10:
1578
- _l.sent();
1579
- _l.label = 11;
1598
+ if (!this.info.entityInfo.saving) return [3 /*break*/, 12];
1599
+ return [4 /*yield*/, this.info.entityInfo.saving(this.instance, function () { return (doNotSave_1 = true); })];
1580
1600
  case 11:
1601
+ _l.sent();
1602
+ _l.label = 12;
1603
+ case 12:
1581
1604
  this.__assertValidity();
1582
1605
  d = this.copyDataToObject();
1583
1606
  ignoreKeys = [];
1584
1607
  try {
1585
1608
  for (_d = tslib_1.__values(this.metadata.fields), _e = _d.next(); !_e.done; _e = _d.next()) {
1586
1609
  field = _e.value;
1587
- if (field.dbReadOnly) {
1610
+ if (field.dbReadOnly ||
1611
+ (onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject !== undefined &&
1612
+ !onlyTheseFieldsSentOnlyInTheCaseOfProxySaveWithPartialObject.includes(field.key))) {
1588
1613
  d[field.key] = undefined;
1589
1614
  ignoreKeys.push(field.key);
1590
1615
  f = this.fields.find(field);
@@ -1603,16 +1628,16 @@ var rowHelperImplementation = /** @class */ (function (_super) {
1603
1628
  delete d.id;
1604
1629
  updatedRow = void 0;
1605
1630
  isNew = this.isNew();
1606
- _l.label = 12;
1607
- case 12:
1608
- _l.trys.push([12, 31, , 33]);
1631
+ _l.label = 13;
1632
+ case 13:
1633
+ _l.trys.push([13, 32, , 34]);
1609
1634
  (_a = this._subscribers) === null || _a === void 0 ? void 0 : _a.reportChanged();
1610
- if (!this.isNew()) return [3 /*break*/, 14];
1635
+ if (!this.isNew()) return [3 /*break*/, 15];
1611
1636
  return [4 /*yield*/, this.edp.insert(d)];
1612
- case 13:
1613
- updatedRow = _l.sent();
1614
- return [3 /*break*/, 18];
1615
1637
  case 14:
1638
+ updatedRow = _l.sent();
1639
+ return [3 /*break*/, 19];
1640
+ case 15:
1616
1641
  changesOnly = {};
1617
1642
  wasChanged = false;
1618
1643
  for (key in d) {
@@ -1627,70 +1652,70 @@ var rowHelperImplementation = /** @class */ (function (_super) {
1627
1652
  }
1628
1653
  if (!wasChanged)
1629
1654
  return [2 /*return*/, this.instance];
1630
- if (!doNotSave_1) return [3 /*break*/, 16];
1655
+ if (!doNotSave_1) return [3 /*break*/, 17];
1631
1656
  return [4 /*yield*/, this.edp.find({ where: this.getIdFilter() })];
1632
- case 15:
1657
+ case 16:
1633
1658
  updatedRow = (_l.sent())[0];
1634
- return [3 /*break*/, 18];
1635
- case 16: return [4 /*yield*/, this.edp.update(this.id, changesOnly)];
1636
- case 17:
1659
+ return [3 /*break*/, 19];
1660
+ case 17: return [4 /*yield*/, this.edp.update(this.id, changesOnly)];
1661
+ case 18:
1637
1662
  updatedRow = _l.sent();
1638
- _l.label = 18;
1639
- case 18: return [4 /*yield*/, this.loadDataFrom(updatedRow)];
1640
- case 19:
1641
- _l.sent();
1642
- if (!this.info.entityInfo.saved) return [3 /*break*/, 21];
1643
- return [4 /*yield*/, this.info.entityInfo.saved(this.instance)];
1663
+ _l.label = 19;
1664
+ case 19: return [4 /*yield*/, this.loadDataFrom(updatedRow)];
1644
1665
  case 20:
1645
1666
  _l.sent();
1646
- _l.label = 21;
1667
+ if (!this.info.entityInfo.saved) return [3 /*break*/, 22];
1668
+ return [4 /*yield*/, this.info.entityInfo.saved(this.instance)];
1647
1669
  case 21:
1648
- if (!this.repository.listeners) return [3 /*break*/, 29];
1670
+ _l.sent();
1649
1671
  _l.label = 22;
1650
1672
  case 22:
1651
- _l.trys.push([22, 27, 28, 29]);
1652
- _f = tslib_1.__values(this.repository.listeners.filter(function (x) { return x.saved; })), _g = _f.next();
1673
+ if (!this.repository.listeners) return [3 /*break*/, 30];
1653
1674
  _l.label = 23;
1654
1675
  case 23:
1655
- if (!!_g.done) return [3 /*break*/, 26];
1676
+ _l.trys.push([23, 28, 29, 30]);
1677
+ _f = tslib_1.__values(this.repository.listeners.filter(function (x) { return x.saved; })), _g = _f.next();
1678
+ _l.label = 24;
1679
+ case 24:
1680
+ if (!!_g.done) return [3 /*break*/, 27];
1656
1681
  listener = _g.value;
1657
1682
  return [4 /*yield*/, listener.saved(this.instance, isNew)];
1658
- case 24:
1659
- _l.sent();
1660
- _l.label = 25;
1661
1683
  case 25:
1684
+ _l.sent();
1685
+ _l.label = 26;
1686
+ case 26:
1662
1687
  _g = _f.next();
1663
- return [3 /*break*/, 23];
1664
- case 26: return [3 /*break*/, 29];
1665
- case 27:
1688
+ return [3 /*break*/, 24];
1689
+ case 27: return [3 /*break*/, 30];
1690
+ case 28:
1666
1691
  e_26_1 = _l.sent();
1667
1692
  e_26 = { error: e_26_1 };
1668
- return [3 /*break*/, 29];
1669
- case 28:
1693
+ return [3 /*break*/, 30];
1694
+ case 29:
1670
1695
  try {
1671
1696
  if (_g && !_g.done && (_k = _f.return)) _k.call(_f);
1672
1697
  }
1673
1698
  finally { if (e_26) throw e_26.error; }
1674
1699
  return [7 /*endfinally*/];
1675
- case 29: return [4 /*yield*/, this.repository.remult.liveQueryPublisher.itemChanged(this.repository.metadata.key, [{ id: this.getId(), oldId: this.getOriginalId(), deleted: false }])];
1676
- case 30:
1700
+ case 30: return [4 /*yield*/, this.repository.remult.liveQueryPublisher.itemChanged(this.repository.metadata.key, [{ id: this.getId(), oldId: this.getOriginalId(), deleted: false }])];
1701
+ case 31:
1677
1702
  _l.sent();
1678
1703
  this.saveOriginalData();
1679
1704
  this._isNew = false;
1680
1705
  return [2 /*return*/, this.instance];
1681
- case 31:
1706
+ case 32:
1682
1707
  err_1 = _l.sent();
1683
1708
  return [4 /*yield*/, this.catchSaveErrors(err_1)];
1684
- case 32:
1709
+ case 33:
1685
1710
  _l.sent();
1686
- return [3 /*break*/, 33];
1687
- case 33: return [3 /*break*/, 35];
1688
- case 34:
1711
+ return [3 /*break*/, 34];
1712
+ case 34: return [3 /*break*/, 36];
1713
+ case 35:
1689
1714
  this.isLoading = false;
1690
1715
  this._reportChangedToEntityAndFields();
1691
1716
  this._saving = false;
1692
1717
  return [7 /*endfinally*/];
1693
- case 35: return [2 /*return*/];
1718
+ case 36: return [2 /*return*/];
1694
1719
  }
1695
1720
  });
1696
1721
  });
@@ -2441,3 +2441,100 @@ db_tests_setup_1.testAll('test relation to string id', function (_a) {
2441
2441
  });
2442
2442
  });
2443
2443
  }, false, { exclude: [db_tests_setup_1.TestDbs.mongo, db_tests_setup_1.TestDbs.mongoNoTrans] });
2444
+ db_tests_setup_1.testAll("test update doesn't override other values", function (_a) {
2445
+ var createEntity = _a.createEntity, remult = _a.remult;
2446
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
2447
+ var catRepo, cat, task, taskRepo, aTask, aTask;
2448
+ return tslib_1.__generator(this, function (_b) {
2449
+ switch (_b.label) {
2450
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
2451
+ case 1:
2452
+ catRepo = _b.sent();
2453
+ return [4 /*yield*/, catRepo.insert({ id: 1, categoryName: 'cat' })];
2454
+ case 2:
2455
+ cat = _b.sent();
2456
+ task = /** @class */ (function () {
2457
+ function class_14() {
2458
+ this.id = 0;
2459
+ this.title = '';
2460
+ this.completed = false;
2461
+ }
2462
+ return class_14;
2463
+ }());
2464
+ DecoratorReplacer_1.describeClass(task, remult3_1.Entity('tasks', { allowApiCrud: true }), {
2465
+ id: remult3_1.Fields.integer(),
2466
+ title: remult3_1.Fields.string(),
2467
+ cat: remult3_1.Field(function () { return remult_3_entities_1.Categories; }),
2468
+ completed: remult3_1.Fields.boolean(),
2469
+ });
2470
+ return [4 /*yield*/, createEntity(task)];
2471
+ case 3:
2472
+ taskRepo = _b.sent();
2473
+ return [4 /*yield*/, taskRepo.insert({ id: 1, cat: cat, title: 'noam' })];
2474
+ case 4:
2475
+ _b.sent();
2476
+ return [4 /*yield*/, taskRepo.findFirst({}, { useCache: false })];
2477
+ case 5:
2478
+ aTask = _b.sent();
2479
+ expect(aTask.title).toBe('noam');
2480
+ expect(aTask.cat.categoryName).toBe('cat');
2481
+ expect(aTask.completed).toBe(false);
2482
+ return [4 /*yield*/, taskRepo.update(1, { completed: true })];
2483
+ case 6:
2484
+ _b.sent();
2485
+ return [4 /*yield*/, taskRepo.findFirst({}, { useCache: false })];
2486
+ case 7:
2487
+ aTask = _b.sent();
2488
+ expect(aTask.id).toBe(1);
2489
+ expect(aTask.title).toBe('noam');
2490
+ expect(aTask.cat.categoryName).toBe('cat');
2491
+ expect(aTask.completed).toBe(true);
2492
+ return [2 /*return*/];
2493
+ }
2494
+ });
2495
+ });
2496
+ }, false);
2497
+ db_tests_setup_1.testAll("test update doesn't validate non included fields", function (_a) {
2498
+ var createEntity = _a.createEntity, remult = _a.remult;
2499
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
2500
+ var catRepo, cat, task, taskRepo, aTask;
2501
+ return tslib_1.__generator(this, function (_b) {
2502
+ switch (_b.label) {
2503
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
2504
+ case 1:
2505
+ catRepo = _b.sent();
2506
+ return [4 /*yield*/, catRepo.insert({ id: 1, categoryName: 'cat' })];
2507
+ case 2:
2508
+ cat = _b.sent();
2509
+ task = /** @class */ (function () {
2510
+ function class_15() {
2511
+ this.id = 0;
2512
+ this.title = '';
2513
+ this.completed = false;
2514
+ }
2515
+ return class_15;
2516
+ }());
2517
+ DecoratorReplacer_1.describeClass(task, remult3_1.Entity('tasks', { allowApiCrud: true }), {
2518
+ id: remult3_1.Fields.integer(),
2519
+ title: remult3_1.Fields.string({ validate: validators_1.Validators.required }),
2520
+ cat: remult3_1.Field(function () { return remult_3_entities_1.Categories; }),
2521
+ completed: remult3_1.Fields.boolean(),
2522
+ });
2523
+ return [4 /*yield*/, createEntity(task)];
2524
+ case 3:
2525
+ taskRepo = _b.sent();
2526
+ return [4 /*yield*/, taskRepo.insert({ id: 1, cat: cat, title: 'noam' })];
2527
+ case 4:
2528
+ _b.sent();
2529
+ return [4 /*yield*/, taskRepo.update(1, { completed: true })];
2530
+ case 5:
2531
+ _b.sent();
2532
+ return [4 /*yield*/, taskRepo.findId(1, { useCache: false })];
2533
+ case 6:
2534
+ aTask = _b.sent();
2535
+ expect(aTask.completed).toBe(true);
2536
+ return [2 /*return*/];
2537
+ }
2538
+ });
2539
+ });
2540
+ }, false);
@@ -1,4 +0,0 @@
1
- import { EntityBase } from './remult3';
2
- export declare class IdEntity extends EntityBase {
3
- id: string;
4
- }
@@ -1,8 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { EntityBase, Fields } from './remult3';
3
- export class IdEntity extends EntityBase {
4
- }
5
- __decorate([
6
- Fields.uuid(),
7
- __metadata("design:type", String)
8
- ], IdEntity.prototype, "id", void 0);
@@ -1,2 +0,0 @@
1
- import { FieldMetadata } from '../src/column-interfaces';
2
- export declare function postgresColumnSyntax(x: FieldMetadata, dbName: string): string;