@boostercloud/framework-provider-azure 0.21.7 → 0.24.0

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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { HasInfrastructure, ProviderLibrary } from '@boostercloud/framework-types';
1
+ import { HasInfrastructure, ProviderLibrary, RocketDescriptor } from '@boostercloud/framework-types';
2
2
  export declare function loadInfrastructurePackage(packageName: string): HasInfrastructure;
3
- export declare const Provider: () => ProviderLibrary;
3
+ export declare const Provider: (rockets?: RocketDescriptor[] | undefined) => ProviderLibrary;
4
4
  export * from './constants';
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ function loadInfrastructurePackage(packageName) {
25
25
  return require(packageName);
26
26
  }
27
27
  exports.loadInfrastructurePackage = loadInfrastructurePackage;
28
- const Provider = () => ({
28
+ const Provider = (rockets) => ({
29
29
  // ProviderEventsLibrary
30
30
  events: {
31
31
  rawToEnvelopes: events_adapter_1.rawEventsToEnvelopes,
@@ -42,7 +42,7 @@ const Provider = () => ({
42
42
  rawToEnvelopes: undefined,
43
43
  fetchSubscriptions: undefined,
44
44
  store: read_model_adapter_1.storeReadModel.bind(null, cosmosClient),
45
- delete: undefined,
45
+ delete: read_model_adapter_1.deleteReadModel.bind(null, cosmosClient),
46
46
  deleteSubscription: undefined,
47
47
  deleteAllSubscriptions: undefined,
48
48
  },
@@ -78,7 +78,7 @@ const Provider = () => ({
78
78
  ` - It has been specified in your "devDependencies" section of your "package.json" file. You can do so by running 'npm install --save-dev ${infrastructurePackageName}'\n` +
79
79
  ` - Or it has been installed globally. You can do so by running 'npm install -g ${infrastructurePackageName}'`);
80
80
  }
81
- return infrastructure.Infrastructure();
81
+ return infrastructure.Infrastructure(rockets);
82
82
  },
83
83
  });
84
84
  exports.Provider = Provider;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rawGraphQLRequestToEnvelope = void 0;
4
4
  async function rawGraphQLRequestToEnvelope(context, logger) {
5
+ var _a, _b;
5
6
  logger.debug('Received GraphQL request: ', context.req);
6
7
  const requestID = context.executionContext.invocationId;
7
8
  const connectionID = undefined; // TODO: Add this when sockets are supported
@@ -14,6 +15,7 @@ async function rawGraphQLRequestToEnvelope(context, logger) {
14
15
  return {
15
16
  requestID,
16
17
  eventType,
18
+ token: (_b = (_a = context.req) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.authorization,
17
19
  value: graphQLValue,
18
20
  };
19
21
  }
@@ -2,3 +2,4 @@ import { CosmosClient } from '@azure/cosmos';
2
2
  import { BoosterConfig, Logger, ReadModelInterface, ReadOnlyNonEmptyArray, UUID } from '@boostercloud/framework-types';
3
3
  export declare function fetchReadModel(db: CosmosClient, config: BoosterConfig, logger: Logger, readModelName: string, readModelID: UUID): Promise<ReadOnlyNonEmptyArray<ReadModelInterface>>;
4
4
  export declare function storeReadModel(db: CosmosClient, config: BoosterConfig, logger: Logger, readModelName: string, readModel: ReadModelInterface): Promise<void>;
5
+ export declare function deleteReadModel(db: CosmosClient, config: BoosterConfig, logger: Logger, readModelName: string, readModel: ReadModelInterface): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storeReadModel = exports.fetchReadModel = void 0;
3
+ exports.deleteReadModel = exports.storeReadModel = exports.fetchReadModel = void 0;
4
4
  const framework_types_1 = require("@boostercloud/framework-types");
5
5
  const constants_1 = require("../constants");
6
6
  async function fetchReadModel(db, config, logger, readModelName, readModelID) {
@@ -75,3 +75,13 @@ async function storeReadModel(db, config, logger, readModelName, readModel) {
75
75
  await updateReadModel(readModel, db, config, readModelName, logger);
76
76
  }
77
77
  exports.storeReadModel = storeReadModel;
78
+ async function deleteReadModel(db, config, logger, readModelName, readModel) {
79
+ logger.debug(`[ReadModelAdapter#deleteReadModel] Entering to Read model deleted. ID = ${readModel.id}`);
80
+ await db
81
+ .database(config.resourceNames.applicationStack)
82
+ .container(config.resourceNames.forReadModel(readModelName))
83
+ .item(readModel.id, readModel.id)
84
+ .delete();
85
+ logger.debug(`[ReadModelAdapter#deleteReadModel] Read model deleted. ID = ${readModel.id}`);
86
+ }
87
+ exports.deleteReadModel = deleteReadModel;
@@ -1,3 +1,3 @@
1
1
  import { CosmosClient } from '@azure/cosmos';
2
- import { BoosterConfig, Logger, FilterFor } from '@boostercloud/framework-types';
3
- export declare function searchReadModel(cosmosDb: CosmosClient, config: BoosterConfig, logger: Logger, readModelName: string, filters: FilterFor<unknown>): Promise<Array<any>>;
2
+ import { BoosterConfig, Logger, FilterFor, ReadModelListResult } from '@boostercloud/framework-types';
3
+ export declare function searchReadModel(cosmosDb: CosmosClient, config: BoosterConfig, logger: Logger, readModelName: string, filters: FilterFor<unknown>, limit?: number, afterCursor?: Record<string, string> | undefined, paginatedVersion?: boolean): Promise<Array<any> | ReadModelListResult<any>>;
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.searchReadModel = void 0;
4
4
  const framework_types_1 = require("@boostercloud/framework-types");
5
- async function searchReadModel(cosmosDb, config, logger, readModelName, filters) {
5
+ async function searchReadModel(cosmosDb, config, logger, readModelName, filters, limit, afterCursor, paginatedVersion = false) {
6
6
  const filterExpression = buildFilterExpression(filters);
7
+ const queryDefinition = `SELECT * FROM c ${filterExpression !== '' ? `WHERE ${filterExpression}` : filterExpression}`;
8
+ const queryWithPagination = queryDefinition + (paginatedVersion && limit ? ` OFFSET ${(afterCursor === null || afterCursor === void 0 ? void 0 : afterCursor.id) || 0} LIMIT ${limit}` : '');
7
9
  const querySpec = {
8
- query: `SELECT * FROM c ${filterExpression !== '' ? `WHERE ${filterExpression}` : filterExpression}`,
10
+ query: queryWithPagination,
9
11
  parameters: buildExpressionAttributeValues(filters),
10
12
  };
11
13
  logger.debug('Running search with the following params: \n', querySpec);
@@ -14,8 +16,16 @@ async function searchReadModel(cosmosDb, config, logger, readModelName, filters)
14
16
  .container(config.resourceNames.forReadModel(readModelName))
15
17
  .items.query(querySpec)
16
18
  .fetchAll();
17
- logger.debug('Search result: ', resources);
18
- return resources !== null && resources !== void 0 ? resources : [];
19
+ if (paginatedVersion) {
20
+ return {
21
+ items: resources !== null && resources !== void 0 ? resources : [],
22
+ count: resources.length,
23
+ cursor: { id: ((limit ? limit : 1) + ((afterCursor === null || afterCursor === void 0 ? void 0 : afterCursor.id) ? parseInt(afterCursor === null || afterCursor === void 0 ? void 0 : afterCursor.id) : 0)).toString() },
24
+ };
25
+ }
26
+ else {
27
+ return resources !== null && resources !== void 0 ? resources : [];
28
+ }
19
29
  }
20
30
  exports.searchReadModel = searchReadModel;
21
31
  function buildFilterExpression(filters, usedPlaceholders = []) {
@@ -59,8 +69,9 @@ function buildOperation(propName, filter = {}, usedPlaceholders, nested) {
59
69
  return `CONTAINS(${propName}, ${holder(index)})`;
60
70
  case 'beginsWith':
61
71
  return `STARTSWITH(${propName}, ${holder(index)})`;
62
- case 'includes':
63
- return `CONTAINS(${propName}, ${holder(index)})`;
72
+ case 'includes': {
73
+ return `ARRAY_CONTAINS(${propName}, ${holder(index)}, true)`;
74
+ }
64
75
  default:
65
76
  if (typeof value === 'object') {
66
77
  return buildOperation(operation, value, usedPlaceholders, propName);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boostercloud/framework-provider-azure",
3
- "version": "0.21.7",
3
+ "version": "0.24.0",
4
4
  "description": "Handle Booster's integration with Azure",
5
5
  "keywords": [
6
6
  "framework-provider-azure"
@@ -22,7 +22,7 @@
22
22
  "dependencies": {
23
23
  "@azure/cosmos": "3.7.3",
24
24
  "@azure/functions": "^1.2.2",
25
- "@boostercloud/framework-types": "^0.21.7",
25
+ "@boostercloud/framework-types": "^0.24.0",
26
26
  "chai": "4.2.0",
27
27
  "chai-as-promised": "7.1.1",
28
28
  "mocha": "8.4.0",
@@ -41,5 +41,5 @@
41
41
  "bugs": {
42
42
  "url": "https://github.com/boostercloud/booster/issues"
43
43
  },
44
- "gitHead": "f6ee6dd00e4744e968a3a845c3ae2238c8daa169"
44
+ "gitHead": "fba7f9d0959f73c187dc22ddc43f83a2abb0e103"
45
45
  }