rads-db 3.0.2 → 3.0.4

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.
package/dist/index.cjs CHANGED
@@ -1017,7 +1017,7 @@ function generateMethods(schema, validators, options) {
1017
1017
  typeName: key,
1018
1018
  handle: schema[key].handle
1019
1019
  };
1020
- const driverInstance = getDriverInstance(schema, key, opts.driver, drivers);
1020
+ const driverInstance = getDriverInstance(schema, key, getDriverConstructor(opts, schema, key), drivers);
1021
1021
  db[handle] = getRadsDbMethods(key, computedContext, driverInstance);
1022
1022
  }
1023
1023
  for (const f of opts.features) {
@@ -1026,18 +1026,13 @@ function generateMethods(schema, validators, options) {
1026
1026
  }
1027
1027
  return db;
1028
1028
  }
1029
- function getDriverInstance(schema, key, driver, driverInstances) {
1029
+ function getDriverInstance(schema, key, driverConstructor, driverInstances) {
1030
1030
  if (!driverInstances[key]) {
1031
- driverInstances[key] = getDriverInstanceInner(schema, key, driver);
1031
+ driverInstances[key] = getDriverInstanceInner(schema, key, driverConstructor);
1032
1032
  }
1033
1033
  return driverInstances[key];
1034
1034
  }
1035
- function getDriverInstanceInner(schema, key, drivers) {
1036
- const driverName = schema[key].decorators.entity.driver || "default";
1037
- const driverConstructor = drivers[driverName];
1038
- if (!driverConstructor) {
1039
- throw new Error(`Missing driver "${driverName}" for entity "${key}"`);
1040
- }
1035
+ function getDriverInstanceInner(schema, key, driverConstructor) {
1041
1036
  const driverInstance = driverConstructor(schema, key);
1042
1037
  addDryRunSupport(driverInstance, key);
1043
1038
  async function getAll(args, ctx) {
@@ -1142,6 +1137,17 @@ function normalizeOptions(options) {
1142
1137
  driver = { default: driver };
1143
1138
  return { computed: {}, features: [], ...options, driver };
1144
1139
  }
1140
+ function getDriverConstructor(options, schema, key) {
1141
+ let driverName = "default";
1142
+ if (!options.noCustomDrivers) {
1143
+ driverName = schema[key].decorators.entity.driver || driverName;
1144
+ }
1145
+ const driverConstructor = options.driver[driverName];
1146
+ if (!driverConstructor) {
1147
+ throw new Error(`Missing driver "${driverName}" for entity "${key}"`);
1148
+ }
1149
+ return driverConstructor;
1150
+ }
1145
1151
 
1146
1152
  const restApi = (options) => (schema, entity) => {
1147
1153
  const opts = {
package/dist/index.d.ts CHANGED
@@ -86,6 +86,7 @@ interface EntityMethods<E, EN extends keyof EntityMeta, W> {
86
86
  }
87
87
 
88
88
  type MaybePromise<T> = Promise<T> | T;
89
+ type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>;
89
90
  type ValidateFieldDecoratorArgs<T> = T extends string ? ValidateStringDecoratorArgs : T extends number ? ValidateNumberDecoratorArgs : ValidateAnyDecoratorArgs;
90
91
  interface ValidateEntityDecoratorArgs {
91
92
  }
@@ -182,6 +183,9 @@ interface CreateRadsDbArgs {
182
183
  context?: Record<string, any> & Omit<RadsRequestContext, 'dryRun' | 'silent'>;
183
184
  features?: RadsFeature[];
184
185
  }
186
+ type CreateRadsDbArgsNormalized = RequiredFields<CreateRadsDbArgs, 'computed' | 'features'> & {
187
+ driver: CreateRadsArgsDrivers;
188
+ };
185
189
  type CreateRadsDbClientArgs = Omit<CreateRadsDbArgs, 'noComputed' | 'noCustomDrivers' | 'driver'> & {
186
190
  driver?: RestDriverOptions;
187
191
  };
@@ -359,7 +363,7 @@ declare function field(meta?: FieldDecoratorArgs): (a: any, b?: ClassFieldDecora
359
363
  declare function precomputed(meta?: ComputedDecoratorArgs): (a: any, b?: ClassFieldDecoratorContext | ClassDecoratorContext) => void;
360
364
  declare function computed(meta?: ComputedDecoratorArgs): (a: any, b?: ClassFieldDecoratorContext | ClassDecoratorContext) => void;
361
365
 
362
- declare function getDriverInstance(schema: Schema, key: string, driver: CreateRadsArgsDrivers, driverInstances: Record<string, Driver>): Driver;
366
+ declare function getDriverInstance(schema: Schema, key: string, driverConstructor: DriverConstructor, driverInstances: Record<string, Driver>): Driver;
363
367
 
364
368
  /**
365
369
  * Creates instance of rads db - object that provides access to all entities.
@@ -373,4 +377,4 @@ declare function createRadsDb(args?: CreateRadsDbArgs): RadsDb;
373
377
  */
374
378
  declare function createRadsDbClient(args?: CreateRadsDbClientArgs): RadsDb;
375
379
 
376
- export { Change, ComputedContext, ComputedContextGlobal, ComputedDecoratorArgs, CreateRadsArgsDrivers, CreateRadsDbArgs, CreateRadsDbClientArgs, DeepPartial, Driver, DriverConstructor, EntityDecoratorArgs, EntityMethods, FieldDecoratorArgs, FieldDefinition, FileSystemNode, FileUploadArgs, FileUploadDriver, GenerateClientNormalizedOptions, GenerateClientOptions, GetAggArgs, GetAggArgsAgg, GetAggArgsAny, GetAggResponse, GetArgs, GetArgsAny, GetArgsInclude, GetManyArgs, GetManyArgsAny, GetManyResponse, GetResponse, GetResponseInclude, GetResponseIncludeSelect, GetResponseNoInclude, GetRestRoutesArgs, GetRestRoutesOptions, GetRestRoutesResponse, MinimalDriver, PutArgs, PutEffect, RadsFeature, RadsRequestContext, RadsUiSlotDefinition, RadsUiSlotName, RadsVitePluginOptions, Relation, RestDriverOptions, RestFileUploadDriverOptions, Schema, SchemaValidators, TypeDefinition, UiDecoratorArgs, UiFieldDecoratorArgs, ValidateEntityDecoratorArgs, ValidateFieldDecoratorArgs, ValidateStringDecoratorArgs, VerifyManyArgs, VerifyManyArgsAny, VerifyManyResponse, computed, createRadsDb, createRadsDbClient, entity, field, getDriverInstance, precomputed, ui, validate };
380
+ export { Change, ComputedContext, ComputedContextGlobal, ComputedDecoratorArgs, CreateRadsArgsDrivers, CreateRadsDbArgs, CreateRadsDbArgsNormalized, CreateRadsDbClientArgs, DeepPartial, Driver, DriverConstructor, EntityDecoratorArgs, EntityMethods, FieldDecoratorArgs, FieldDefinition, FileSystemNode, FileUploadArgs, FileUploadDriver, GenerateClientNormalizedOptions, GenerateClientOptions, GetAggArgs, GetAggArgsAgg, GetAggArgsAny, GetAggResponse, GetArgs, GetArgsAny, GetArgsInclude, GetManyArgs, GetManyArgsAny, GetManyResponse, GetResponse, GetResponseInclude, GetResponseIncludeSelect, GetResponseNoInclude, GetRestRoutesArgs, GetRestRoutesOptions, GetRestRoutesResponse, MinimalDriver, PutArgs, PutEffect, RadsFeature, RadsRequestContext, RadsUiSlotDefinition, RadsUiSlotName, RadsVitePluginOptions, Relation, RequiredFields, RestDriverOptions, RestFileUploadDriverOptions, Schema, SchemaValidators, TypeDefinition, UiDecoratorArgs, UiFieldDecoratorArgs, ValidateEntityDecoratorArgs, ValidateFieldDecoratorArgs, ValidateStringDecoratorArgs, VerifyManyArgs, VerifyManyArgsAny, VerifyManyResponse, computed, createRadsDb, createRadsDbClient, entity, field, getDriverInstance, precomputed, ui, validate };
package/dist/index.mjs CHANGED
@@ -1009,7 +1009,7 @@ function generateMethods(schema, validators, options) {
1009
1009
  typeName: key,
1010
1010
  handle: schema[key].handle
1011
1011
  };
1012
- const driverInstance = getDriverInstance(schema, key, opts.driver, drivers);
1012
+ const driverInstance = getDriverInstance(schema, key, getDriverConstructor(opts, schema, key), drivers);
1013
1013
  db[handle] = getRadsDbMethods(key, computedContext, driverInstance);
1014
1014
  }
1015
1015
  for (const f of opts.features) {
@@ -1018,18 +1018,13 @@ function generateMethods(schema, validators, options) {
1018
1018
  }
1019
1019
  return db;
1020
1020
  }
1021
- function getDriverInstance(schema, key, driver, driverInstances) {
1021
+ function getDriverInstance(schema, key, driverConstructor, driverInstances) {
1022
1022
  if (!driverInstances[key]) {
1023
- driverInstances[key] = getDriverInstanceInner(schema, key, driver);
1023
+ driverInstances[key] = getDriverInstanceInner(schema, key, driverConstructor);
1024
1024
  }
1025
1025
  return driverInstances[key];
1026
1026
  }
1027
- function getDriverInstanceInner(schema, key, drivers) {
1028
- const driverName = schema[key].decorators.entity.driver || "default";
1029
- const driverConstructor = drivers[driverName];
1030
- if (!driverConstructor) {
1031
- throw new Error(`Missing driver "${driverName}" for entity "${key}"`);
1032
- }
1027
+ function getDriverInstanceInner(schema, key, driverConstructor) {
1033
1028
  const driverInstance = driverConstructor(schema, key);
1034
1029
  addDryRunSupport(driverInstance, key);
1035
1030
  async function getAll(args, ctx) {
@@ -1134,6 +1129,17 @@ function normalizeOptions(options) {
1134
1129
  driver = { default: driver };
1135
1130
  return { computed: {}, features: [], ...options, driver };
1136
1131
  }
1132
+ function getDriverConstructor(options, schema, key) {
1133
+ let driverName = "default";
1134
+ if (!options.noCustomDrivers) {
1135
+ driverName = schema[key].decorators.entity.driver || driverName;
1136
+ }
1137
+ const driverConstructor = options.driver[driverName];
1138
+ if (!driverConstructor) {
1139
+ throw new Error(`Missing driver "${driverName}" for entity "${key}"`);
1140
+ }
1141
+ return driverConstructor;
1142
+ }
1137
1143
 
1138
1144
  const restApi = (options) => (schema, entity) => {
1139
1145
  const opts = {
@@ -501,7 +501,7 @@ async function createDatabaseIfNotExists(options, client) {
501
501
  await client.databases.createIfNotExists({
502
502
  id: options.databaseName
503
503
  });
504
- await client.database(options.databaseName).containers.create({
504
+ await client.database(options.databaseName).containers.createIfNotExists({
505
505
  id: options.containerName,
506
506
  partitionKey: "/_partition"
507
507
  });
@@ -322,7 +322,7 @@ function getWhereNameOperatorPair(whereKey) {
322
322
  async function createDatabaseIfNotExists(options, client) {
323
323
  try {
324
324
  await client.databases.createIfNotExists({ id: options.databaseName });
325
- await client.database(options.databaseName).containers.create({ id: options.containerName, partitionKey: "/_partition" });
325
+ await client.database(options.databaseName).containers.createIfNotExists({ id: options.containerName, partitionKey: "/_partition" });
326
326
  } catch (e) {
327
327
  console.error("Error initializing CosmosDb: ", e);
328
328
  }
@@ -56,9 +56,7 @@ var _default = options => {
56
56
  handle: cacheEntityName,
57
57
  handlePlural: `${cacheEntityName}s`
58
58
  };
59
- cacheDrivers[handle] = (0, _radsDb.getDriverInstance)(schema, cacheEntityName, {
60
- default: normalizedOptions[typeName].driver
61
- }, drivers);
59
+ cacheDrivers[handle] = (0, _radsDb.getDriverInstance)(schema, cacheEntityName, normalizedOptions[typeName].driver, drivers);
62
60
  cacheStatus[handle] = {
63
61
  preloadStatus: normalizedOptions[typeName].preload ? "neverLoaded" : void 0
64
62
  };
@@ -38,12 +38,7 @@ export default (options) => {
38
38
  handle: cacheEntityName,
39
39
  handlePlural: `${cacheEntityName}s`
40
40
  };
41
- cacheDrivers[handle] = getDriverInstance(
42
- schema,
43
- cacheEntityName,
44
- { default: normalizedOptions[typeName].driver },
45
- drivers
46
- );
41
+ cacheDrivers[handle] = getDriverInstance(schema, cacheEntityName, normalizedOptions[typeName].driver, drivers);
47
42
  cacheStatus[handle] = { preloadStatus: normalizedOptions[typeName].preload ? "neverLoaded" : void 0 };
48
43
  }
49
44
  db.cache = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rads-db",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "files": [
5
5
  "dist",
6
6
  "drivers",