@forestadmin-experimental/datasource-cosmos 1.6.2 → 1.6.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/collection.d.ts +5 -0
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +52 -16
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/model-builder/model.d.ts +34 -11
- package/dist/model-builder/model.d.ts.map +1 -1
- package/dist/model-builder/model.js +145 -85
- package/dist/utils/aggregation-converter.d.ts +6 -0
- package/dist/utils/aggregation-converter.d.ts.map +1 -1
- package/dist/utils/aggregation-converter.js +21 -7
- package/dist/utils/pagination-cache.d.ts +116 -0
- package/dist/utils/pagination-cache.d.ts.map +1 -0
- package/dist/utils/pagination-cache.js +157 -0
- package/dist/utils/partition-key-extractor.d.ts +19 -0
- package/dist/utils/partition-key-extractor.d.ts.map +1 -0
- package/dist/utils/partition-key-extractor.js +61 -0
- package/dist/utils/query-converter.d.ts +20 -0
- package/dist/utils/query-converter.d.ts.map +1 -1
- package/dist/utils/query-converter.js +19 -2
- package/dist/utils/query-validation-error.d.ts +21 -0
- package/dist/utils/query-validation-error.d.ts.map +1 -0
- package/dist/utils/query-validation-error.js +29 -0
- package/dist/utils/query-validator.d.ts +66 -0
- package/dist/utils/query-validator.d.ts.map +1 -0
- package/dist/utils/query-validator.js +218 -0
- package/dist/utils/retry-handler.d.ts +101 -0
- package/dist/utils/retry-handler.d.ts.map +1 -0
- package/dist/utils/retry-handler.js +210 -0
- package/package.json +1 -1
package/dist/collection.d.ts
CHANGED
|
@@ -21,5 +21,10 @@ export default class CosmosCollection extends BaseCollection {
|
|
|
21
21
|
update(caller: Caller, filter: Filter, patch: RecordData): Promise<void>;
|
|
22
22
|
delete(caller: Caller, filter: Filter): Promise<void>;
|
|
23
23
|
aggregate(caller: Caller, filter: Filter, aggregation: Aggregation, limit?: number): Promise<AggregateResult[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Get the partition key field name in Forest Admin notation (with -> for nested paths)
|
|
26
|
+
* Converts Cosmos DB path like "/tenantId" or "/address/city" to "tenantId" or "address->city"
|
|
27
|
+
*/
|
|
28
|
+
private getPartitionKeyFieldName;
|
|
24
29
|
}
|
|
25
30
|
//# sourceMappingURL=collection.d.ts.map
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,WAAW,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,eAAe,EACf,UAAU,EACV,UAAU,EACX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAMhD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAK;IAEvD,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC;IAErC,OAAO,CAAC,cAAc,CAAiB;gBAGrC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IA6B5B;;;OAGG;IACI,kCAAkC,CAAC,qBAAqB,EAAE,MAAM,EAAE,GAAG,IAAI;IAgB1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBjE,IAAI,CACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC;IA4ElB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BxE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrD,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,EAAE,CAAC;IAgC7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;CAMjC"}
|
package/dist/collection.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
7
|
const aggregation_converter_1 = __importDefault(require("./utils/aggregation-converter"));
|
|
8
8
|
const model_to_collection_schema_converter_1 = __importDefault(require("./utils/model-to-collection-schema-converter"));
|
|
9
|
+
const partition_key_extractor_1 = require("./utils/partition-key-extractor");
|
|
9
10
|
const query_converter_1 = __importDefault(require("./utils/query-converter"));
|
|
10
11
|
class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
11
12
|
constructor(datasource, model, logger, nativeDriver) {
|
|
@@ -13,8 +14,17 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
13
14
|
throw new Error('Invalid (null) model instance.');
|
|
14
15
|
super(model.name, datasource, nativeDriver);
|
|
15
16
|
this.internalModel = model;
|
|
16
|
-
this.queryConverter = new query_converter_1.default();
|
|
17
17
|
const modelSchema = model_to_collection_schema_converter_1.default.convert(this.internalModel, logger);
|
|
18
|
+
// Extract schema field names for query validation
|
|
19
|
+
const schemaFields = Object.keys(modelSchema.fields);
|
|
20
|
+
// Initialize query converter with schema validation
|
|
21
|
+
this.queryConverter = new query_converter_1.default({
|
|
22
|
+
schemaFields,
|
|
23
|
+
validationOptions: {
|
|
24
|
+
// Allow unknown fields since schema might not include all nested paths
|
|
25
|
+
allowUnknownFields: true,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
18
28
|
if (this.internalModel.enableCount !== false)
|
|
19
29
|
this.enableCount();
|
|
20
30
|
this.addFields(modelSchema.fields);
|
|
@@ -78,9 +88,11 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
78
88
|
}
|
|
79
89
|
// Build query with projection to only fetch needed fields
|
|
80
90
|
const querySpec = this.queryConverter.getSqlQuerySpec(filter.conditionTree, filteredSort, projection);
|
|
91
|
+
// Extract partition key from filter for single-partition query optimization
|
|
92
|
+
const partitionKey = (0, partition_key_extractor_1.extractPartitionKeyFromFilter)(filter.conditionTree, this.internalModel.getPartitionKeyPath());
|
|
81
93
|
try {
|
|
82
|
-
// Execute the query with pagination
|
|
83
|
-
const recordsResponse = await this.internalModel.query(querySpec, filter.page?.skip, filter.page?.limit);
|
|
94
|
+
// Execute the query with pagination and partition key optimization
|
|
95
|
+
const recordsResponse = await this.internalModel.query(querySpec, filter.page?.skip, filter.page?.limit, partitionKey);
|
|
84
96
|
return recordsResponse;
|
|
85
97
|
}
|
|
86
98
|
catch (error) {
|
|
@@ -102,13 +114,19 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
102
114
|
}
|
|
103
115
|
async update(caller, filter, patch) {
|
|
104
116
|
try {
|
|
105
|
-
//
|
|
106
|
-
const
|
|
107
|
-
const
|
|
108
|
-
|
|
117
|
+
// Fetch id and partition key field for efficient point operations
|
|
118
|
+
const partitionKeyField = this.getPartitionKeyFieldName();
|
|
119
|
+
const projection = new datasource_toolkit_1.Projection('id', partitionKeyField);
|
|
120
|
+
const records = await this.list(caller, filter, projection);
|
|
121
|
+
if (records.length === 0) {
|
|
109
122
|
return; // Nothing to update
|
|
110
123
|
}
|
|
111
|
-
|
|
124
|
+
// Extract id and partition key pairs for point operations
|
|
125
|
+
const itemsWithPartitionKeys = records.map(record => ({
|
|
126
|
+
id: record.id,
|
|
127
|
+
partitionKey: record[partitionKeyField],
|
|
128
|
+
}));
|
|
129
|
+
await this.internalModel.update(itemsWithPartitionKeys, patch);
|
|
112
130
|
}
|
|
113
131
|
catch (error) {
|
|
114
132
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
@@ -121,13 +139,19 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
121
139
|
}
|
|
122
140
|
async delete(caller, filter) {
|
|
123
141
|
try {
|
|
124
|
-
//
|
|
125
|
-
const
|
|
126
|
-
const
|
|
127
|
-
|
|
142
|
+
// Fetch id and partition key field for efficient point operations
|
|
143
|
+
const partitionKeyField = this.getPartitionKeyFieldName();
|
|
144
|
+
const projection = new datasource_toolkit_1.Projection('id', partitionKeyField);
|
|
145
|
+
const records = await this.list(caller, filter, projection);
|
|
146
|
+
if (records.length === 0) {
|
|
128
147
|
return; // Nothing to delete
|
|
129
148
|
}
|
|
130
|
-
|
|
149
|
+
// Extract id and partition key pairs for point operations
|
|
150
|
+
const itemsWithPartitionKeys = records.map(record => ({
|
|
151
|
+
id: record.id,
|
|
152
|
+
partitionKey: record[partitionKeyField],
|
|
153
|
+
}));
|
|
154
|
+
await this.internalModel.delete(itemsWithPartitionKeys);
|
|
131
155
|
}
|
|
132
156
|
catch (error) {
|
|
133
157
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
@@ -142,8 +166,10 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
142
166
|
try {
|
|
143
167
|
// Build aggregation query
|
|
144
168
|
const querySpec = aggregation_converter_1.default.buildAggregationQuery(aggregation, filter.conditionTree, limit);
|
|
145
|
-
//
|
|
146
|
-
const
|
|
169
|
+
// Extract partition key from filter for single-partition query optimization
|
|
170
|
+
const partitionKey = (0, partition_key_extractor_1.extractPartitionKeyFromFilter)(filter.conditionTree, this.internalModel.getPartitionKeyPath());
|
|
171
|
+
// Execute aggregation query with partition key optimization
|
|
172
|
+
const rawResults = await this.internalModel.aggregateQuery(querySpec, partitionKey);
|
|
147
173
|
// Process results into Forest Admin format
|
|
148
174
|
return aggregation_converter_1.default.processAggregationResults(rawResults, aggregation);
|
|
149
175
|
}
|
|
@@ -156,6 +182,16 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
156
182
|
throw wrappedError;
|
|
157
183
|
}
|
|
158
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Get the partition key field name in Forest Admin notation (with -> for nested paths)
|
|
187
|
+
* Converts Cosmos DB path like "/tenantId" or "/address/city" to "tenantId" or "address->city"
|
|
188
|
+
*/
|
|
189
|
+
getPartitionKeyFieldName() {
|
|
190
|
+
return this.internalModel
|
|
191
|
+
.getPartitionKeyPath()
|
|
192
|
+
.replace(/^\//, '') // Remove leading slash
|
|
193
|
+
.replace(/\//g, '->'); // Convert nested paths to arrow notation
|
|
194
|
+
}
|
|
159
195
|
}
|
|
160
196
|
/**
|
|
161
197
|
* Maximum nesting depth for sortable fields
|
|
@@ -164,4 +200,4 @@ class CosmosCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
164
200
|
*/
|
|
165
201
|
CosmosCollection.MAX_SORTABLE_NESTING_DEPTH = 2;
|
|
166
202
|
exports.default = CosmosCollection;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBV3lDO0FBR3pDLDBGQUFpRTtBQUNqRSx3SEFBMEU7QUFDMUUsNkVBQWdGO0FBQ2hGLDhFQUFxRDtBQUVyRCxNQUFxQixnQkFBaUIsU0FBUSxtQ0FBYztJQVkxRCxZQUNFLFVBQXNCLEVBQ3RCLEtBQWtCLEVBQ2xCLE1BQWMsRUFDZCxZQUEwQjtRQUUxQixJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUU5RCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFFM0IsTUFBTSxXQUFXLEdBQUcsOENBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV2RSxrREFBa0Q7UUFDbEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx5QkFBYyxDQUFDO1lBQ3ZDLFlBQVk7WUFDWixpQkFBaUIsRUFBRTtnQkFDakIsdUVBQXVFO2dCQUN2RSxrQkFBa0IsRUFBRSxJQUFJO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZD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
|
package/dist/index.d.ts
CHANGED
|
@@ -49,8 +49,16 @@ export { default as CosmosDataSource } from './datasource';
|
|
|
49
49
|
export { default as ArrayCollection } from './array-collection';
|
|
50
50
|
export { default as TypeConverter } from './utils/type-converter';
|
|
51
51
|
export { default as ModelCosmos } from './model-builder/model';
|
|
52
|
+
export { configurePaginationCache, getSharedPaginationCache } from './model-builder/model';
|
|
53
|
+
export { configureRetryOptions, getSharedRetryOptions } from './model-builder/model';
|
|
54
|
+
export { default as PaginationCache } from './utils/pagination-cache';
|
|
55
|
+
export { withRetry, createRetryWrapper, isRateLimitError, isTransientError, } from './utils/retry-handler';
|
|
56
|
+
export { default as QueryValidator, QueryValidationError, QueryValidationErrorCode, } from './utils/query-validator';
|
|
52
57
|
export type { CosmosSchema } from './model-builder/model';
|
|
53
58
|
export type { VirtualArrayCollectionConfig } from './introspection/introspector';
|
|
59
|
+
export type { PaginationCacheOptions } from './utils/pagination-cache';
|
|
60
|
+
export type { QueryValidatorOptions } from './utils/query-validator';
|
|
61
|
+
export type { RetryOptions } from './utils/retry-handler';
|
|
54
62
|
export type { CollectionDefinition, FieldDefinition, ManualSchemaConfig, } from './types/manual-schema';
|
|
55
63
|
/**
|
|
56
64
|
* Create a Cosmos DB datasource with an existing CosmosClient instance
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAU,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAE,oBAAoB,EAA2B,MAAM,yBAAyB,CAAC;AACxF,OAAqB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC;AAED,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,iBAAiB,CAqBnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,uBAAuB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACzD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GACA,iBAAiB,CAqFnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GACA,iBAAiB,CAOnB"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAU,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAE,oBAAoB,EAA2B,MAAM,yBAAyB,CAAC;AACxF,OAAqB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACjC;AAED,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,iBAAiB,CAqBnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,uBAAuB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACzD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GACA,iBAAiB,CAqFnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,GACA,iBAAiB,CAOnB"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createCosmosDataSourceForEmulator = exports.createCosmosDataSource = exports.createCosmosDataSourceWithExistingClient = exports.ModelCosmos = exports.TypeConverter = exports.ArrayCollection = exports.CosmosDataSource = exports.CosmosCollection = void 0;
|
|
6
|
+
exports.createCosmosDataSourceForEmulator = exports.createCosmosDataSource = exports.createCosmosDataSourceWithExistingClient = exports.QueryValidationErrorCode = exports.QueryValidationError = exports.QueryValidator = exports.isTransientError = exports.isRateLimitError = exports.createRetryWrapper = exports.withRetry = exports.PaginationCache = exports.getSharedRetryOptions = exports.configureRetryOptions = exports.getSharedPaginationCache = exports.configurePaginationCache = exports.ModelCosmos = exports.TypeConverter = exports.ArrayCollection = exports.CosmosDataSource = exports.CosmosCollection = void 0;
|
|
7
7
|
const cosmos_1 = require("@azure/cosmos");
|
|
8
8
|
const datasource_1 = __importDefault(require("./datasource"));
|
|
9
9
|
const builder_1 = require("./introspection/builder");
|
|
@@ -20,6 +20,23 @@ var type_converter_1 = require("./utils/type-converter");
|
|
|
20
20
|
Object.defineProperty(exports, "TypeConverter", { enumerable: true, get: function () { return __importDefault(type_converter_1).default; } });
|
|
21
21
|
var model_1 = require("./model-builder/model");
|
|
22
22
|
Object.defineProperty(exports, "ModelCosmos", { enumerable: true, get: function () { return __importDefault(model_1).default; } });
|
|
23
|
+
var model_2 = require("./model-builder/model");
|
|
24
|
+
Object.defineProperty(exports, "configurePaginationCache", { enumerable: true, get: function () { return model_2.configurePaginationCache; } });
|
|
25
|
+
Object.defineProperty(exports, "getSharedPaginationCache", { enumerable: true, get: function () { return model_2.getSharedPaginationCache; } });
|
|
26
|
+
var model_3 = require("./model-builder/model");
|
|
27
|
+
Object.defineProperty(exports, "configureRetryOptions", { enumerable: true, get: function () { return model_3.configureRetryOptions; } });
|
|
28
|
+
Object.defineProperty(exports, "getSharedRetryOptions", { enumerable: true, get: function () { return model_3.getSharedRetryOptions; } });
|
|
29
|
+
var pagination_cache_1 = require("./utils/pagination-cache");
|
|
30
|
+
Object.defineProperty(exports, "PaginationCache", { enumerable: true, get: function () { return __importDefault(pagination_cache_1).default; } });
|
|
31
|
+
var retry_handler_1 = require("./utils/retry-handler");
|
|
32
|
+
Object.defineProperty(exports, "withRetry", { enumerable: true, get: function () { return retry_handler_1.withRetry; } });
|
|
33
|
+
Object.defineProperty(exports, "createRetryWrapper", { enumerable: true, get: function () { return retry_handler_1.createRetryWrapper; } });
|
|
34
|
+
Object.defineProperty(exports, "isRateLimitError", { enumerable: true, get: function () { return retry_handler_1.isRateLimitError; } });
|
|
35
|
+
Object.defineProperty(exports, "isTransientError", { enumerable: true, get: function () { return retry_handler_1.isTransientError; } });
|
|
36
|
+
var query_validator_1 = require("./utils/query-validator");
|
|
37
|
+
Object.defineProperty(exports, "QueryValidator", { enumerable: true, get: function () { return __importDefault(query_validator_1).default; } });
|
|
38
|
+
Object.defineProperty(exports, "QueryValidationError", { enumerable: true, get: function () { return query_validator_1.QueryValidationError; } });
|
|
39
|
+
Object.defineProperty(exports, "QueryValidationErrorCode", { enumerable: true, get: function () { return query_validator_1.QueryValidationErrorCode; } });
|
|
23
40
|
/**
|
|
24
41
|
* Create a Cosmos DB datasource with an existing CosmosClient instance
|
|
25
42
|
* @param client Existing CosmosClient instance
|
|
@@ -150,4 +167,4 @@ function createCosmosDataSourceForEmulator(databaseName, options) {
|
|
|
150
167
|
return createCosmosDataSource(endpoint, key, databaseName, options);
|
|
151
168
|
}
|
|
152
169
|
exports.createCosmosDataSourceForEmulator = createCosmosDataSourceForEmulator;
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMENBQWtFO0FBR2xFLDhEQUE0QztBQUM1QyxxREFBd0Y7QUFDeEYsZ0ZBQTBGO0FBRTFGLDZFQUE4RTtBQUM5RSw4RkFBb0U7QUE4Q3BFLDJDQUEyRDtBQUFsRCwrSEFBQSxPQUFPLE9BQW9CO0FBQ3BDLDJDQUEyRDtBQUFsRCwrSEFBQSxPQUFPLE9BQW9CO0FBQ3BDLHVEQUFnRTtBQUF2RCxvSUFBQSxPQUFPLE9BQW1CO0FBQ25DLHlEQUFrRTtBQUF6RCxnSUFBQSxPQUFPLE9BQWlCO0FBQ2pDLCtDQUErRDtBQUF0RCxxSEFBQSxPQUFPLE9BQWU7QUFDL0IsK0NBQTJGO0FBQWxGLGlIQUFBLHdCQUF3QixPQUFBO0FBQUUsaUhBQUEsd0JBQXdCLE9BQUE7QUFDM0QsK0NBQXFGO0FBQTVFLDhHQUFBLHFCQUFxQixPQUFBO0FBQUUsOEdBQUEscUJBQXFCLE9BQUE7QUFDckQsNkRBQXNFO0FBQTdELG9JQUFBLE9BQU8sT0FBbUI7QUFDbkMsdURBSytCO0FBSjdCLDBHQUFBLFNBQVMsT0FBQTtBQUNULG1IQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGlIQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGlIQUFBLGdCQUFnQixPQUFBO0FBRWxCLDJEQUlpQztBQUgvQixrSUFBQSxPQUFPLE9BQWtCO0FBQ3pCLHVIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJIQUFBLHdCQUF3QixPQUFBO0FBYTFCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQWdCLHdDQUF3QyxDQUN0RCxNQUFvQixFQUNwQixZQUFxQixFQUNyQixPQUE4QjtJQUU5QixPQUFPLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUM5QixJQUFJLGdCQUFnQixDQUFDO1FBRXJCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLE9BQU8sR0FBRyxPQUFPLENB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
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Container, CosmosClient, SqlQuerySpec } from '@azure/cosmos';
|
|
2
2
|
import { RecordData } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
import { OverrideTypeConverter } from '../introspection/builder';
|
|
4
|
+
import PaginationCache, { PaginationCacheOptions } from '../utils/pagination-cache';
|
|
5
|
+
import { RetryOptions, configureRetryOptions, getSharedRetryOptions } from '../utils/retry-handler';
|
|
6
|
+
export { RetryOptions, configureRetryOptions, getSharedRetryOptions };
|
|
4
7
|
export interface CosmosSchema {
|
|
5
8
|
[key: string]: {
|
|
6
9
|
type: string;
|
|
@@ -8,6 +11,21 @@ export interface CosmosSchema {
|
|
|
8
11
|
indexed?: boolean;
|
|
9
12
|
};
|
|
10
13
|
}
|
|
14
|
+
export interface ItemWithPartitionKey {
|
|
15
|
+
id: string;
|
|
16
|
+
partitionKey: string | number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get or create the shared pagination cache instance
|
|
20
|
+
* @param options Optional configuration options (only used on first call)
|
|
21
|
+
*/
|
|
22
|
+
export declare function getSharedPaginationCache(options?: PaginationCacheOptions): PaginationCache;
|
|
23
|
+
/**
|
|
24
|
+
* Configure the shared pagination cache with custom options
|
|
25
|
+
* Must be called before any queries are made
|
|
26
|
+
* @param options Pagination cache configuration
|
|
27
|
+
*/
|
|
28
|
+
export declare function configurePaginationCache(options: PaginationCacheOptions): void;
|
|
11
29
|
export default class ModelCosmos {
|
|
12
30
|
name: string;
|
|
13
31
|
/**
|
|
@@ -34,24 +52,29 @@ export default class ModelCosmos {
|
|
|
34
52
|
* Container reference for direct operations
|
|
35
53
|
*/
|
|
36
54
|
private container;
|
|
55
|
+
/**
|
|
56
|
+
* Pagination cache for efficient cursor-based pagination
|
|
57
|
+
*/
|
|
58
|
+
private paginationCache;
|
|
59
|
+
/**
|
|
60
|
+
* Retry options for handling rate limiting (429 errors)
|
|
61
|
+
*/
|
|
62
|
+
private retryOptions;
|
|
37
63
|
overrideTypeConverter?: OverrideTypeConverter;
|
|
38
64
|
enableCount?: boolean;
|
|
39
65
|
constructor(cosmosClient: CosmosClient, name: string, databaseName: string, containerName: string, partitionKeyPath: string, schema: CosmosSchema, overrideTypeConverter?: OverrideTypeConverter, enableCount?: boolean);
|
|
40
66
|
getCosmosClient(): CosmosClient;
|
|
41
67
|
create(data: RecordData[]): Promise<RecordData[]>;
|
|
42
|
-
update(
|
|
43
|
-
delete(
|
|
44
|
-
query(querySpec: SqlQuerySpec, offset?: number, limit?: number): Promise<RecordData[]>;
|
|
45
|
-
aggregateQuery(querySpec: SqlQuerySpec): Promise<RecordData[]>;
|
|
46
|
-
count(querySpec?: SqlQuerySpec): Promise<number>;
|
|
47
|
-
/**
|
|
48
|
-
* Get items by their IDs (requires scanning as we don't have partition keys)
|
|
49
|
-
*/
|
|
50
|
-
private getItemsByIds;
|
|
68
|
+
update(items: ItemWithPartitionKey[], patch: RecordData): Promise<void>;
|
|
69
|
+
delete(items: ItemWithPartitionKey[]): Promise<void>;
|
|
70
|
+
query(querySpec: SqlQuerySpec, offset?: number, limit?: number, partitionKey?: string | number): Promise<RecordData[]>;
|
|
71
|
+
aggregateQuery(querySpec: SqlQuerySpec, partitionKey?: string | number): Promise<RecordData[]>;
|
|
72
|
+
count(querySpec?: SqlQuerySpec, partitionKey?: string | number): Promise<number>;
|
|
51
73
|
/**
|
|
52
|
-
*
|
|
74
|
+
* Convert a SELECT query to a COUNT query
|
|
75
|
+
* Extracts the WHERE clause and creates a COUNT query with the same filters
|
|
53
76
|
*/
|
|
54
|
-
private
|
|
77
|
+
private convertToCountQuery;
|
|
55
78
|
/**
|
|
56
79
|
* Generate a unique ID for new items
|
|
57
80
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model-builder/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model-builder/model.ts"],"names":[],"mappings":"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"}
|