@twin.org/entity-storage-service 0.0.1-next.9 → 0.0.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.
@@ -224,7 +224,7 @@ async function entityStorageRemove(httpRequestContext, componentName, request) {
224
224
  async function entityStorageList(httpRequestContext, componentName, request) {
225
225
  core.Guards.object(ROUTES_SOURCE, "request", request);
226
226
  const component = core.ComponentFactory.get(componentName);
227
- const result = await component.query(apiModels.HttpParameterHelper.objectFromString(request.query?.conditions), apiModels.HttpParameterHelper.objectFromString(request.query?.sortProperties), apiModels.HttpParameterHelper.objectFromString(request.query?.properties), request.query?.cursor, core.Coerce.number(request.query?.pageSize), httpRequestContext.userIdentity, httpRequestContext.nodeIdentity);
227
+ const result = await component.query(apiModels.HttpParameterHelper.objectFromString(request.query?.conditions), request.query?.orderBy, request.query?.orderByDirection, apiModels.HttpParameterHelper.objectFromString(request.query?.properties), request.query?.cursor, core.Coerce.number(request.query?.pageSize), httpRequestContext.userIdentity, httpRequestContext.nodeIdentity);
228
228
  return {
229
229
  body: result
230
230
  };
@@ -256,23 +256,15 @@ class EntityStorageService {
256
256
  * @internal
257
257
  */
258
258
  _includeUserIdentity;
259
- /**
260
- * The primary key for the entity.
261
- * @internal
262
- */
263
- _primaryKey;
264
259
  /**
265
260
  * Create a new instance of EntityStorageService.
266
261
  * @param options The dependencies for the entity storage service.
267
- * @param options.config The configuration for the service.
268
- * @param options.entityStorageType The entity storage type.
269
262
  */
270
263
  constructor(options) {
271
264
  core.Guards.string(this.CLASS_NAME, "options.entityStorageType", options.entityStorageType);
272
265
  this._entityStorage = entityStorageModels.EntityStorageConnectorFactory.get(options.entityStorageType);
273
266
  this._includeNodeIdentity = options.config?.includeNodeIdentity ?? true;
274
267
  this._includeUserIdentity = options.config?.includeUserIdentity ?? true;
275
- this._primaryKey = entity.EntitySchemaHelper.getPrimaryKey(this._entityStorage.getSchema());
276
268
  }
277
269
  /**
278
270
  * Set an entity.
@@ -343,7 +335,8 @@ class EntityStorageService {
343
335
  /**
344
336
  * Query all the entities which match the conditions.
345
337
  * @param conditions The conditions to match for the entities.
346
- * @param sortProperties The optional sort order.
338
+ * @param orderBy The order for the results.
339
+ * @param orderByDirection The direction for the order, defaults to ascending.
347
340
  * @param properties The optional properties to return, defaults to all.
348
341
  * @param cursor The cursor to request the next page of entities.
349
342
  * @param pageSize The suggested number of entities to return in each chunk, in some scenarios can return a different amount.
@@ -352,7 +345,7 @@ class EntityStorageService {
352
345
  * @returns All the entities for the storage matching the conditions,
353
346
  * and a cursor which can be used to request more entities.
354
347
  */
355
- async query(conditions, sortProperties, properties, cursor, pageSize, userIdentity, nodeIdentity) {
348
+ async query(conditions, orderBy, orderByDirection, properties, cursor, pageSize, userIdentity, nodeIdentity) {
356
349
  const finalConditions = {
357
350
  conditions: [],
358
351
  logicalOperator: entity.LogicalOperator.And
@@ -376,7 +369,9 @@ class EntityStorageService {
376
369
  if (!core.Is.empty(conditions)) {
377
370
  finalConditions.conditions.push(conditions);
378
371
  }
379
- const result = await this._entityStorage.query(finalConditions.conditions.length > 0 ? finalConditions : undefined, sortProperties, properties, cursor, pageSize);
372
+ const result = await this._entityStorage.query(finalConditions.conditions.length > 0 ? finalConditions : undefined, core.Is.stringValue(orderBy)
373
+ ? [{ property: orderBy, sortDirection: orderByDirection ?? entity.SortDirection.Ascending }]
374
+ : undefined, properties, cursor, pageSize);
380
375
  for (const entity of result.entities) {
381
376
  core.ObjectHelper.propertyDelete(entity, "nodeIdentity");
382
377
  core.ObjectHelper.propertyDelete(entity, "userIdentity");
@@ -1,7 +1,7 @@
1
1
  import { HttpParameterHelper } from '@twin.org/api-models';
2
2
  import { StringHelper, Guards, ComponentFactory, Coerce, ObjectHelper, Is, NotFoundError } from '@twin.org/core';
3
3
  import { HttpStatusCode } from '@twin.org/web';
4
- import { EntitySchemaHelper, LogicalOperator, ComparisonOperator } from '@twin.org/entity';
4
+ import { LogicalOperator, ComparisonOperator, SortDirection, EntitySchemaHelper } from '@twin.org/entity';
5
5
  import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
6
6
 
7
7
  // Copyright 2024 IOTA Stiftung.
@@ -222,7 +222,7 @@ async function entityStorageRemove(httpRequestContext, componentName, request) {
222
222
  async function entityStorageList(httpRequestContext, componentName, request) {
223
223
  Guards.object(ROUTES_SOURCE, "request", request);
224
224
  const component = ComponentFactory.get(componentName);
225
- const result = await component.query(HttpParameterHelper.objectFromString(request.query?.conditions), HttpParameterHelper.objectFromString(request.query?.sortProperties), HttpParameterHelper.objectFromString(request.query?.properties), request.query?.cursor, Coerce.number(request.query?.pageSize), httpRequestContext.userIdentity, httpRequestContext.nodeIdentity);
225
+ const result = await component.query(HttpParameterHelper.objectFromString(request.query?.conditions), request.query?.orderBy, request.query?.orderByDirection, HttpParameterHelper.objectFromString(request.query?.properties), request.query?.cursor, Coerce.number(request.query?.pageSize), httpRequestContext.userIdentity, httpRequestContext.nodeIdentity);
226
226
  return {
227
227
  body: result
228
228
  };
@@ -254,23 +254,15 @@ class EntityStorageService {
254
254
  * @internal
255
255
  */
256
256
  _includeUserIdentity;
257
- /**
258
- * The primary key for the entity.
259
- * @internal
260
- */
261
- _primaryKey;
262
257
  /**
263
258
  * Create a new instance of EntityStorageService.
264
259
  * @param options The dependencies for the entity storage service.
265
- * @param options.config The configuration for the service.
266
- * @param options.entityStorageType The entity storage type.
267
260
  */
268
261
  constructor(options) {
269
262
  Guards.string(this.CLASS_NAME, "options.entityStorageType", options.entityStorageType);
270
263
  this._entityStorage = EntityStorageConnectorFactory.get(options.entityStorageType);
271
264
  this._includeNodeIdentity = options.config?.includeNodeIdentity ?? true;
272
265
  this._includeUserIdentity = options.config?.includeUserIdentity ?? true;
273
- this._primaryKey = EntitySchemaHelper.getPrimaryKey(this._entityStorage.getSchema());
274
266
  }
275
267
  /**
276
268
  * Set an entity.
@@ -341,7 +333,8 @@ class EntityStorageService {
341
333
  /**
342
334
  * Query all the entities which match the conditions.
343
335
  * @param conditions The conditions to match for the entities.
344
- * @param sortProperties The optional sort order.
336
+ * @param orderBy The order for the results.
337
+ * @param orderByDirection The direction for the order, defaults to ascending.
345
338
  * @param properties The optional properties to return, defaults to all.
346
339
  * @param cursor The cursor to request the next page of entities.
347
340
  * @param pageSize The suggested number of entities to return in each chunk, in some scenarios can return a different amount.
@@ -350,7 +343,7 @@ class EntityStorageService {
350
343
  * @returns All the entities for the storage matching the conditions,
351
344
  * and a cursor which can be used to request more entities.
352
345
  */
353
- async query(conditions, sortProperties, properties, cursor, pageSize, userIdentity, nodeIdentity) {
346
+ async query(conditions, orderBy, orderByDirection, properties, cursor, pageSize, userIdentity, nodeIdentity) {
354
347
  const finalConditions = {
355
348
  conditions: [],
356
349
  logicalOperator: LogicalOperator.And
@@ -374,7 +367,9 @@ class EntityStorageService {
374
367
  if (!Is.empty(conditions)) {
375
368
  finalConditions.conditions.push(conditions);
376
369
  }
377
- const result = await this._entityStorage.query(finalConditions.conditions.length > 0 ? finalConditions : undefined, sortProperties, properties, cursor, pageSize);
370
+ const result = await this._entityStorage.query(finalConditions.conditions.length > 0 ? finalConditions : undefined, Is.stringValue(orderBy)
371
+ ? [{ property: orderBy, sortDirection: orderByDirection ?? SortDirection.Ascending }]
372
+ : undefined, properties, cursor, pageSize);
378
373
  for (const entity of result.entities) {
379
374
  ObjectHelper.propertyDelete(entity, "nodeIdentity");
380
375
  ObjectHelper.propertyDelete(entity, "userIdentity");
@@ -1,6 +1,6 @@
1
- import { type SortDirection, type EntityCondition } from "@twin.org/entity";
1
+ import { type EntityCondition, SortDirection } from "@twin.org/entity";
2
2
  import { type IEntityStorageComponent } from "@twin.org/entity-storage-models";
3
- import type { IEntityStorageConfig } from "./models/IEntityStorageConfig";
3
+ import type { IEntityStorageServiceConstructorOptions } from "./models/IEntityStorageServiceConstructorOptions";
4
4
  /**
5
5
  * Class for performing entity service operations.
6
6
  */
@@ -12,13 +12,8 @@ export declare class EntityStorageService<T = any> implements IEntityStorageComp
12
12
  /**
13
13
  * Create a new instance of EntityStorageService.
14
14
  * @param options The dependencies for the entity storage service.
15
- * @param options.config The configuration for the service.
16
- * @param options.entityStorageType The entity storage type.
17
15
  */
18
- constructor(options: {
19
- entityStorageType: string;
20
- config?: IEntityStorageConfig;
21
- });
16
+ constructor(options: IEntityStorageServiceConstructorOptions);
22
17
  /**
23
18
  * Set an entity.
24
19
  * @param entity The entity to set.
@@ -47,7 +42,8 @@ export declare class EntityStorageService<T = any> implements IEntityStorageComp
47
42
  /**
48
43
  * Query all the entities which match the conditions.
49
44
  * @param conditions The conditions to match for the entities.
50
- * @param sortProperties The optional sort order.
45
+ * @param orderBy The order for the results.
46
+ * @param orderByDirection The direction for the order, defaults to ascending.
51
47
  * @param properties The optional properties to return, defaults to all.
52
48
  * @param cursor The cursor to request the next page of entities.
53
49
  * @param pageSize The suggested number of entities to return in each chunk, in some scenarios can return a different amount.
@@ -56,10 +52,7 @@ export declare class EntityStorageService<T = any> implements IEntityStorageComp
56
52
  * @returns All the entities for the storage matching the conditions,
57
53
  * and a cursor which can be used to request more entities.
58
54
  */
59
- query(conditions?: EntityCondition<T>, sortProperties?: {
60
- property: keyof T;
61
- sortDirection: SortDirection;
62
- }[], properties?: (keyof T)[], cursor?: string, pageSize?: number, userIdentity?: string, nodeIdentity?: string): Promise<{
55
+ query(conditions?: EntityCondition<T>, orderBy?: keyof T, orderByDirection?: SortDirection, properties?: (keyof T)[], cursor?: string, pageSize?: number, userIdentity?: string, nodeIdentity?: string): Promise<{
63
56
  /**
64
57
  * The entities, which can be partial if a limited keys list was provided.
65
58
  */
@@ -2,4 +2,5 @@ export * from "./entityStorageRoutes";
2
2
  export * from "./entityStorageService";
3
3
  export * from "./models/IEntityStorageConfig";
4
4
  export * from "./models/IEntityStorageRoutesExamples";
5
+ export * from "./models/IEntityStorageServiceConstructorOptions";
5
6
  export * from "./restEntryPoints";
@@ -0,0 +1,14 @@
1
+ import type { IEntityStorageConfig } from "./IEntityStorageConfig";
2
+ /**
3
+ * Options for the Entity Storage Service constructor.
4
+ */
5
+ export interface IEntityStorageServiceConstructorOptions {
6
+ /**
7
+ * The type of the entity storage.
8
+ */
9
+ entityStorageType: string;
10
+ /**
11
+ * The configuration for the service.
12
+ */
13
+ config?: IEntityStorageConfig;
14
+ }
package/docs/changelog.md CHANGED
@@ -1,5 +1,109 @@
1
1
  # @twin.org/entity-storage-service - Changelog
2
2
 
3
- ## v0.0.1-next.9
3
+ ## 0.0.1 (2025-07-04)
4
+
5
+
6
+ ### Features
7
+
8
+ * add production release automation ([1eb4c8e](https://github.com/twinfoundation/entity-storage/commit/1eb4c8ee3eb099defdfc2d063ae44935276dcae8))
9
+ * release to production ([a309051](https://github.com/twinfoundation/entity-storage/commit/a3090519adebf7943232b4df12e4c6bd5afe7eed))
10
+ * update dependencies ([7ccc0c4](https://github.com/twinfoundation/entity-storage/commit/7ccc0c429125d073dc60b3de6cf101abc8cc6cba))
11
+ * use shared store mechanism ([#34](https://github.com/twinfoundation/entity-storage/issues/34)) ([68b6b71](https://github.com/twinfoundation/entity-storage/commit/68b6b71e7a96d7d016cd57bfff36775b56bf3f93))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * query params force coercion ([dd6aa87](https://github.com/twinfoundation/entity-storage/commit/dd6aa87efdfb60bab7d6756a86888863c45c51a7))
17
+
18
+
19
+ ### Dependencies
20
+
21
+ * The following workspace dependencies were updated
22
+ * dependencies
23
+ * @twin.org/entity-storage-models bumped from ^0.0.0 to ^0.0.1
24
+ * devDependencies
25
+ * @twin.org/entity-storage-connector-memory bumped from ^0.0.0 to ^0.0.1
26
+
27
+ ## [0.0.1-next.31](https://github.com/twinfoundation/entity-storage/compare/entity-storage-service-v0.0.1-next.30...entity-storage-service-v0.0.1-next.31) (2025-06-20)
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * query params force coercion ([dd6aa87](https://github.com/twinfoundation/entity-storage/commit/dd6aa87efdfb60bab7d6756a86888863c45c51a7))
33
+
34
+
35
+ ### Dependencies
36
+
37
+ * The following workspace dependencies were updated
38
+ * dependencies
39
+ * @twin.org/entity-storage-models bumped from 0.0.1-next.30 to 0.0.1-next.31
40
+ * devDependencies
41
+ * @twin.org/entity-storage-connector-memory bumped from 0.0.1-next.30 to 0.0.1-next.31
42
+
43
+ ## [0.0.1-next.30](https://github.com/twinfoundation/entity-storage/compare/entity-storage-service-v0.0.1-next.29...entity-storage-service-v0.0.1-next.30) (2025-06-12)
44
+
45
+
46
+ ### Features
47
+
48
+ * update dependencies ([7ccc0c4](https://github.com/twinfoundation/entity-storage/commit/7ccc0c429125d073dc60b3de6cf101abc8cc6cba))
49
+
50
+
51
+ ### Dependencies
52
+
53
+ * The following workspace dependencies were updated
54
+ * dependencies
55
+ * @twin.org/entity-storage-models bumped from 0.0.1-next.29 to 0.0.1-next.30
56
+ * devDependencies
57
+ * @twin.org/entity-storage-connector-memory bumped from 0.0.1-next.29 to 0.0.1-next.30
58
+
59
+ ## [0.0.1-next.29](https://github.com/twinfoundation/entity-storage/compare/entity-storage-service-v0.0.1-next.28...entity-storage-service-v0.0.1-next.29) (2025-04-17)
60
+
61
+
62
+ ### Features
63
+
64
+ * use shared store mechanism ([#34](https://github.com/twinfoundation/entity-storage/issues/34)) ([68b6b71](https://github.com/twinfoundation/entity-storage/commit/68b6b71e7a96d7d016cd57bfff36775b56bf3f93))
65
+
66
+
67
+ ### Dependencies
68
+
69
+ * The following workspace dependencies were updated
70
+ * dependencies
71
+ * @twin.org/entity-storage-models bumped from 0.0.1-next.28 to 0.0.1-next.29
72
+ * devDependencies
73
+ * @twin.org/entity-storage-connector-memory bumped from 0.0.1-next.28 to 0.0.1-next.29
74
+
75
+ ## [0.0.1-next.28](https://github.com/twinfoundation/entity-storage/compare/entity-storage-service-v0.0.1-next.27...entity-storage-service-v0.0.1-next.28) (2025-04-09)
76
+
77
+
78
+ ### Miscellaneous Chores
79
+
80
+ * **entity-storage-service:** Synchronize repo versions
81
+
82
+
83
+ ### Dependencies
84
+
85
+ * The following workspace dependencies were updated
86
+ * dependencies
87
+ * @twin.org/entity-storage-models bumped from 0.0.1-next.27 to 0.0.1-next.28
88
+ * devDependencies
89
+ * @twin.org/entity-storage-connector-memory bumped from 0.0.1-next.27 to 0.0.1-next.28
90
+
91
+ ## [0.0.1-next.27](https://github.com/twinfoundation/entity-storage/compare/entity-storage-service-v0.0.1-next.26...entity-storage-service-v0.0.1-next.27) (2025-03-28)
92
+
93
+
94
+ ### Miscellaneous Chores
95
+
96
+ * **entity-storage-service:** Synchronize repo versions
97
+
98
+
99
+ ### Dependencies
100
+
101
+ * The following workspace dependencies were updated
102
+ * dependencies
103
+ * @twin.org/entity-storage-models bumped from 0.0.1-next.26 to 0.0.1-next.27
104
+ * devDependencies
105
+ * @twin.org/entity-storage-connector-memory bumped from 0.0.1-next.26 to 0.0.1-next.27
106
+
107
+ ## v0.0.1-next.26
4
108
 
5
109
  - Initial Release