remult 3.3.0-next.1 → 3.3.1

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 (38) hide show
  1. package/esm/graphql.js +1 -1
  2. package/esm/remult-knex/index.js +10 -3
  3. package/esm/remult-mongo.js +7 -3
  4. package/esm/server/get-remult-admin-html.js +125 -111
  5. package/esm/server/remult-admin.js +2 -0
  6. package/esm/server/remult-api-server.js +1 -1
  7. package/esm/src/data-api.js +30 -19
  8. package/esm/src/data-providers/rest-data-provider.js +48 -37
  9. package/esm/src/data-providers/sql-database.js +14 -3
  10. package/esm/src/live-query/SubscriptionChannel.js +52 -4
  11. package/esm/src/remult-proxy.js +4 -4
  12. package/esm/src/remult3/RepositoryImplementation.js +53 -25
  13. package/esm/src/server-action.js +2 -2
  14. package/esm/src/valueConverters.js +9 -5
  15. package/graphql.js +1 -1
  16. package/index.d.ts +1 -1
  17. package/package.json +1 -1
  18. package/remult-knex/index.js +18 -9
  19. package/remult-mongo.js +6 -2
  20. package/server/get-remult-admin-html.js +1 -1
  21. package/server/remult-admin.d.ts +2 -0
  22. package/server/remult-admin.js +2 -1
  23. package/server/remult-api-server.js +1 -0
  24. package/src/data-api.d.ts +4 -4
  25. package/src/data-api.js +50 -30
  26. package/src/data-interfaces.d.ts +6 -6
  27. package/src/data-providers/rest-data-provider.d.ts +4 -4
  28. package/src/data-providers/rest-data-provider.js +48 -37
  29. package/src/data-providers/sql-database.js +14 -3
  30. package/src/live-query/SubscriptionChannel.d.ts +52 -4
  31. package/src/live-query/SubscriptionChannel.js +52 -4
  32. package/src/remult-proxy.js +4 -4
  33. package/src/remult3/RepositoryImplementation.d.ts +11 -10
  34. package/src/remult3/RepositoryImplementation.js +237 -177
  35. package/src/remult3/remult3.d.ts +25 -23
  36. package/src/server-action.js +2 -2
  37. package/src/valueConverters.d.ts +3 -1
  38. package/src/valueConverters.js +9 -6
package/esm/graphql.js CHANGED
@@ -360,7 +360,7 @@ export function remultGraphql(options) {
360
360
  [toCamelCase(getMetaType(meta))]: y,
361
361
  });
362
362
  },
363
- }, arg1.id, arg1.patch);
363
+ }, { get: () => undefined }, arg1.id, arg1.patch);
364
364
  })(args, req);
365
365
  }
366
366
  // update many
@@ -208,7 +208,7 @@ class KnexEntityDataProvider {
208
208
  wrapIdentifier: r.wrapIdentifier,
209
209
  };
210
210
  }
211
- async update(id, data) {
211
+ async update(id, data, options) {
212
212
  const e = await this.init();
213
213
  let f = new FilterConsumerBridgeToKnexRequest(e, this.rawSqlWrapIdentifier);
214
214
  Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(id)).__applyToConsumer(f);
@@ -228,6 +228,8 @@ class KnexEntityDataProvider {
228
228
  await this.getEntityFrom(e)
229
229
  .update(updateObject)
230
230
  .where((b) => where.forEach((w) => w(b)));
231
+ if (options?.select === 'none')
232
+ return undefined;
231
233
  return getRowAfterUpdate(this.entity, this, data, id, 'update');
232
234
  }
233
235
  async delete(id) {
@@ -239,7 +241,7 @@ class KnexEntityDataProvider {
239
241
  .delete()
240
242
  .where((b) => where.forEach((w) => w(b)));
241
243
  }
242
- async insert(data) {
244
+ async insert(data, options) {
243
245
  const e = await this.init();
244
246
  let insertObject = {};
245
247
  for (const x of this.entity.fields) {
@@ -254,7 +256,8 @@ class KnexEntityDataProvider {
254
256
  }
255
257
  }
256
258
  let insert = this.getEntityFrom(e).insert(insertObject);
257
- if (isAutoIncrement(this.entity.idMetadata.field)) {
259
+ if (isAutoIncrement(this.entity.idMetadata.field) &&
260
+ !(options?.select === 'none')) {
258
261
  let newId;
259
262
  if (this.knex.client.config.client === 'mysql2' ||
260
263
  this.knex.client.config.client === 'mysql') {
@@ -265,12 +268,16 @@ class KnexEntityDataProvider {
265
268
  let result = await insert.returning(this.entity.idMetadata.field.dbName);
266
269
  newId = result[0][this.entity.idMetadata.field.dbName];
267
270
  }
271
+ if (options?.select === 'none')
272
+ return undefined;
268
273
  return this.find({
269
274
  where: new Filter((x) => x.isEqualTo(this.entity.idMetadata.field, newId)),
270
275
  }).then((y) => y[0]);
271
276
  }
272
277
  else
273
278
  await insert;
279
+ if (options?.select === 'none')
280
+ return undefined;
274
281
  return getRowAfterUpdate(this.entity, this, data, undefined, 'insert');
275
282
  }
276
283
  }
@@ -5,7 +5,7 @@ import { remult as remultContext } from './src/remult-proxy.js';
5
5
  import { getRepository } from './src/remult3/RepositoryImplementation.js';
6
6
  import { getRepositoryInternals } from './src/remult3/repository-internals.js';
7
7
  import { getRowAfterUpdate } from './src/data-providers/sql-database.js';
8
- import { GroupByCountMember, GroupByOperators } from './src/remult3/remult3.js';
8
+ import { GroupByCountMember, GroupByOperators, } from './src/remult3/remult3.js';
9
9
  export class MongoDataProvider {
10
10
  db;
11
11
  client;
@@ -246,7 +246,7 @@ class MongoEntityDataProvider {
246
246
  .map((x) => this.translateFromDb(x, e, options.select))
247
247
  .toArray());
248
248
  }
249
- async update(id, data) {
249
+ async update(id, data, options) {
250
250
  let { collection, e } = await this.collection();
251
251
  let f = new FilterConsumerBridgeToMongo(e);
252
252
  Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(id)).__applyToConsumer(f);
@@ -262,6 +262,8 @@ class MongoEntityDataProvider {
262
262
  let r = await collection.updateOne(await f.resolveWhere(), {
263
263
  $set: newR,
264
264
  }, { session: this.session });
265
+ if (options?.select === 'none')
266
+ return undefined;
265
267
  return getRowAfterUpdate(this.entity, this, data, id, 'update');
266
268
  }
267
269
  async delete(id) {
@@ -272,11 +274,13 @@ class MongoEntityDataProvider {
272
274
  session: this.session,
273
275
  });
274
276
  }
275
- async insert(data) {
277
+ async insert(data, options) {
276
278
  let { collection, e } = await this.collection();
277
279
  let r = await collection.insertOne(await this.translateToDb(data, e), {
278
280
  session: this.session,
279
281
  });
282
+ if (options?.select === 'none')
283
+ return undefined;
280
284
  return await this.translateFromDb(await collection.findOne({ _id: r.insertedId }, { session: this.session }), e);
281
285
  }
282
286
  async collection() {