@sphereon/ssi-sdk.data-store 0.18.2-unstable.64 → 0.18.2-unstable.67

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.
@@ -8,7 +8,6 @@ export declare class StateEntity extends BaseEntity {
8
8
  updatedAt: Date;
9
9
  completedAt?: Date;
10
10
  tenantId?: string;
11
- ttl: number;
12
11
  }
13
12
  export declare const stateEntityFrom: (args: NonPersistedXStateStoreEvent) => StateEntity;
14
13
  //# sourceMappingURL=StateEntity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateEntity.d.ts","sourceRoot":"","sources":["../../../src/entities/xstatePersistence/StateEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA6E,MAAM,SAAS,CAAA;AAC9G,OAAO,EAAC,4BAA4B,EAAC,MAAM,aAAa,CAAC;AAEzD,qBACa,WAAY,SAAQ,UAAU;IAEvC,EAAE,EAAG,MAAM,CAAA;IAGX,KAAK,EAAG,MAAM,CAAA;IAGd,IAAI,EAAG,MAAM,CAAA;IAGb,SAAS,EAAG,IAAI,CAAA;IAGhB,SAAS,EAAG,IAAI,CAAA;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,GAAG,EAAG,MAAM,CAAA;CACf;AAED,eAAO,MAAM,eAAe,SAAU,4BAA4B,KAAG,WAQpE,CAAA"}
1
+ {"version":3,"file":"StateEntity.d.ts","sourceRoot":"","sources":["../../../src/entities/xstatePersistence/StateEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA6E,MAAM,SAAS,CAAA;AAC9G,OAAO,EAAC,4BAA4B,EAAC,MAAM,aAAa,CAAC;AAEzD,qBACa,WAAY,SAAQ,UAAU;IAEvC,EAAE,EAAG,MAAM,CAAA;IAGX,KAAK,EAAG,MAAM,CAAA;IAGd,IAAI,EAAG,MAAM,CAAA;IAGb,SAAS,EAAG,IAAI,CAAA;IAGhB,SAAS,EAAG,IAAI,CAAA;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,eAAe,SAAU,4BAA4B,KAAG,WAOpE,CAAA"}
@@ -34,17 +34,13 @@ __decorate([
34
34
  __metadata("design:type", Date)
35
35
  ], StateEntity.prototype, "updatedAt", void 0);
36
36
  __decorate([
37
- (0, typeorm_1.Column)({ name: 'completed_at', type: 'date', nullable: true }),
37
+ (0, typeorm_1.Column)({ name: 'completed_at', type: 'datetime', nullable: true }),
38
38
  __metadata("design:type", Date)
39
39
  ], StateEntity.prototype, "completedAt", void 0);
40
40
  __decorate([
41
41
  (0, typeorm_1.Column)({ name: 'tenant_id', type: 'varchar', nullable: true }),
42
42
  __metadata("design:type", String)
43
43
  ], StateEntity.prototype, "tenantId", void 0);
44
- __decorate([
45
- (0, typeorm_1.Column)({ name: 'ttl', default: 0 }),
46
- __metadata("design:type", Number)
47
- ], StateEntity.prototype, "ttl", void 0);
48
44
  StateEntity = __decorate([
49
45
  (0, typeorm_1.Entity)('StateEntity')
50
46
  ], StateEntity);
@@ -55,7 +51,6 @@ const stateEntityFrom = (args) => {
55
51
  stateEntity.type = args.type;
56
52
  stateEntity.completedAt = args.completedAt;
57
53
  stateEntity.tenantId = args.tenantId;
58
- stateEntity.ttl = args.ttl;
59
54
  return stateEntity;
60
55
  };
61
56
  exports.stateEntityFrom = stateEntityFrom;
@@ -1 +1 @@
1
- {"version":3,"file":"StateEntity.js","sourceRoot":"","sources":["../../../src/entities/xstatePersistence/StateEntity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA8G;AAIvG,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,oBAAU;CAwB1C,CAAA;AAvBG;IAAC,IAAA,gCAAsB,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;uCACpC;AAEX;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;0CAC7B;AAEd;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;yCAC7B;AAEb;IAAC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;8BAC9C,IAAI;8CAAA;AAEhB;IAAC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;8BAC9C,IAAI;8CAAA;AAEhB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACjD,IAAI;gDAAA;AAElB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC9C;AAEjB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;wCACxB;AAvBH,WAAW;IADvB,IAAA,gBAAM,EAAC,aAAa,CAAC;GACT,WAAW,CAwBvB;AAxBY,kCAAW;AA0BjB,MAAM,eAAe,GAAG,CAAC,IAAkC,EAAe,EAAE;IAC/E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IACrC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC9B,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IAC5B,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;IAC1C,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IACpC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;IAC1B,OAAO,WAAW,CAAA;AACtB,CAAC,CAAA;AARY,QAAA,eAAe,mBAQ3B"}
1
+ {"version":3,"file":"StateEntity.js","sourceRoot":"","sources":["../../../src/entities/xstatePersistence/StateEntity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA8G;AAIvG,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,oBAAU;CAqB1C,CAAA;AApBG;IAAC,IAAA,gCAAsB,EAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;uCACpC;AAEX;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;0CAC7B;AAEd;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;yCAC7B;AAEb;IAAC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;8BAC9C,IAAI;8CAAA;AAEhB;IAAC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;8BAC9C,IAAI;8CAAA;AAEhB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACrD,IAAI;gDAAA;AAElB;IAAC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC9C;AApBR,WAAW;IADvB,IAAA,gBAAM,EAAC,aAAa,CAAC;GACT,WAAW,CAqBvB;AArBY,kCAAW;AAuBjB,MAAM,eAAe,GAAG,CAAC,IAAkC,EAAe,EAAE;IAC/E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IACrC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAC9B,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IAC5B,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;IAC1C,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IACpC,OAAO,WAAW,CAAA;AACtB,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B"}
@@ -1,3 +1,4 @@
1
+ import { ObjectLiteral } from "typeorm";
1
2
  export type SaveStateArgs = {
2
3
  state: string;
3
4
  type: string;
@@ -5,11 +6,17 @@ export type SaveStateArgs = {
5
6
  updatedAt?: Date;
6
7
  completedAt?: Date;
7
8
  tenantId?: string;
8
- ttl: number;
9
9
  };
10
10
  export type GetStateArgs = Pick<SaveStateArgs, 'type'>;
11
+ export type FindStatesArgs = Partial<SaveStateArgs>;
12
+ export type GetStatesArgs = {
13
+ filter: FindStatesArgs;
14
+ };
11
15
  export type NonPersistedXStateStoreEvent = SaveStateArgs;
12
- export type DeleteStateArgs = Pick<SaveStateArgs, 'type'>;
16
+ export type DeleteStateArgs = {
17
+ where: string;
18
+ parameters?: ObjectLiteral;
19
+ };
13
20
  export type VoidResult = void;
14
21
  export type State = {
15
22
  state: string;
@@ -18,6 +25,5 @@ export type State = {
18
25
  updatedAt: Date;
19
26
  completedAt?: Date;
20
27
  tenantId?: string;
21
- ttl: number;
22
28
  };
23
29
  //# sourceMappingURL=IAbstractXStateStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IAbstractXStateStore.d.ts","sourceRoot":"","sources":["../../../src/types/xstatePersistence/IAbstractXStateStore.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AAEtD,MAAM,MAAM,4BAA4B,GAAG,aAAa,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AAEzD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAA;AAE7B,MAAM,MAAM,KAAK,GAAG;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;CACd,CAAA"}
1
+ {"version":3,"file":"IAbstractXStateStore.d.ts","sourceRoot":"","sources":["../../../src/types/xstatePersistence/IAbstractXStateStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AAEtD,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AAEnD,MAAM,MAAM,aAAa,GAAG;IACxB,MAAM,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,aAAa,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,aAAa,CAAA;CAAE,CAAA;AAE3E,MAAM,MAAM,UAAU,GAAG,IAAI,CAAA;AAE7B,MAAM,MAAM,KAAK,GAAG;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA"}
@@ -1,7 +1,8 @@
1
- import { DeleteStateArgs, GetStateArgs, SaveStateArgs, State, VoidResult } from "../types";
1
+ import { DeleteStateArgs, GetStateArgs, GetStatesArgs, SaveStateArgs, State, VoidResult } from "../types";
2
2
  export declare abstract class IAbstractXStateStore {
3
3
  abstract saveState(state: SaveStateArgs): Promise<State>;
4
4
  abstract getState(args: GetStateArgs): Promise<State>;
5
+ abstract getStates(args?: GetStatesArgs): Promise<Array<State>>;
5
6
  abstract deleteState(args: DeleteStateArgs): Promise<VoidResult>;
6
7
  }
7
8
  //# sourceMappingURL=IAbstractXStateStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IAbstractXStateStore.d.ts","sourceRoot":"","sources":["../../src/xstatePersistence/IAbstractXStateStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAEzF,8BAAsB,oBAAoB;IACtC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IACrD,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;CACnE"}
1
+ {"version":3,"file":"IAbstractXStateStore.d.ts","sourceRoot":"","sources":["../../src/xstatePersistence/IAbstractXStateStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAExG,8BAAsB,oBAAoB;IACtC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;CACnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"IAbstractXStateStore.js","sourceRoot":"","sources":["../../src/xstatePersistence/IAbstractXStateStore.ts"],"names":[],"mappings":";;;AAEA,MAAsB,oBAAoB;CAIzC;AAJD,oDAIC"}
1
+ {"version":3,"file":"IAbstractXStateStore.js","sourceRoot":"","sources":["../../src/xstatePersistence/IAbstractXStateStore.ts"],"names":[],"mappings":";;;AAEA,MAAsB,oBAAoB;CAKzC;AALD,oDAKC"}
@@ -1,12 +1,13 @@
1
1
  import { OrPromise } from "@sphereon/ssi-types";
2
2
  import { DataSource } from "typeorm";
3
- import { DeleteStateArgs, GetStateArgs, SaveStateArgs, State, VoidResult } from "../types";
3
+ import { DeleteStateArgs, GetStateArgs, GetStatesArgs, SaveStateArgs, State, VoidResult } from "../types";
4
4
  import { IAbstractXStateStore } from "./IAbstractXStateStore";
5
5
  export declare class XStateStore extends IAbstractXStateStore {
6
6
  private readonly dbConnection;
7
7
  constructor(dbConnection: OrPromise<DataSource>);
8
8
  saveState(state: SaveStateArgs): Promise<State>;
9
9
  getState(args: GetStateArgs): Promise<State>;
10
+ getStates(args?: GetStatesArgs): Promise<Array<State>>;
10
11
  deleteState(args: DeleteStateArgs): Promise<VoidResult>;
11
12
  private stateFrom;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XStateStore.d.ts","sourceRoot":"","sources":["../../src/xstatePersistence/XStateStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAC,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,WAAY,SAAQ,oBAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;gBAExC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC;IAKzC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAM/C,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IAa5C,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAO7D,OAAO,CAAC,SAAS,CAUhB;CACJ"}
1
+ {"version":3,"file":"XStateStore.d.ts","sourceRoot":"","sources":["../../src/xstatePersistence/XStateStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAC,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzG,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAI5D,qBAAa,WAAY,SAAQ,oBAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;gBAExC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC;IAKzC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAM/C,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IAa5C,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAUtD,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAU7D,OAAO,CAAC,SAAS,CAShB;CACJ"}
@@ -27,8 +27,7 @@ class XStateStore extends IAbstractXStateStore_1.IAbstractXStateStore {
27
27
  createdAt: state.createdAt,
28
28
  updatedAt: state.updatedAt,
29
29
  completedAt: state.completedAt,
30
- tenantId: state.tenantId,
31
- ttl: state.ttl
30
+ tenantId: state.tenantId
32
31
  };
33
32
  };
34
33
  this.dbConnection = dbConnection;
@@ -54,12 +53,23 @@ class XStateStore extends IAbstractXStateStore_1.IAbstractXStateStore {
54
53
  return this.stateFrom(result);
55
54
  });
56
55
  }
56
+ getStates(args) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ const connection = yield this.dbConnection; // TODO apply everywhere
59
+ debug('Getting states', args);
60
+ const result = yield connection.getRepository(StateEntity_1.StateEntity).find(Object.assign({}, ((args === null || args === void 0 ? void 0 : args.filter) && { where: args === null || args === void 0 ? void 0 : args.filter })));
61
+ return result.map((event) => this.stateFrom(event));
62
+ });
63
+ }
57
64
  deleteState(args) {
58
65
  return __awaiter(this, void 0, void 0, function* () {
59
66
  const connection = yield this.dbConnection;
60
- debug(`Executing deleteState query with type: ${args.type}`);
61
- yield connection.getRepository(StateEntity_1.StateEntity)
62
- .delete({ type: args.type });
67
+ debug(`Executing deleteState query with where clause: ${args.where} and params: ${JSON.stringify(args.parameters)}`);
68
+ yield connection.createQueryBuilder()
69
+ .delete()
70
+ .from(StateEntity_1.StateEntity)
71
+ .where(args.where, args.parameters)
72
+ .execute();
63
73
  });
64
74
  }
65
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"XStateStore.js","sourceRoot":"","sources":["../../src/xstatePersistence/XStateStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,kDAAyB;AAGzB,2EAAsE;AAEtE,iEAA4D;AAE5D,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,oCAAoC,CAAC,CAAA;AAEzD,MAAa,WAAY,SAAQ,2CAAoB;IAGjD,YAAY,YAAmC;QAC3C,KAAK,EAAE,CAAA;QA8BH,cAAS,GAAG,CAAC,KAAkB,EAAS,EAAE;YAC9C,OAAO;gBACH,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,GAAG,EAAE,KAAK,CAAC,GAAG;aACjB,CAAA;QACL,CAAC,CAAA;QAvCG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACpC,CAAC;IAEK,SAAS,CAAC,KAAoB;;YAChC,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA;YACtD,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjE,OAAO,UAAU,CAAC,aAAa,CAAC,yBAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;KAAA;IAEK,QAAQ,CAAC,IAAkB;;YAC7B,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA;YACtD,KAAK,CAAC,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC1D,MAAM,MAAM,GAAuB,MAAM,UAAU,CAAC,aAAa,CAAC,yBAAW,CAAC;iBACzE,OAAO,CAAC;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC7B,CAAC,CAAA;YACN,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;aACxE;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC;KAAA;IAEK,WAAW,CAAC,IAAqB;;YACnC,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA;YACtD,KAAK,CAAC,0CAA0C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC5D,MAAM,UAAU,CAAC,aAAa,CAAC,yBAAW,CAAC;iBACtC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,CAAC;KAAA;CAaJ;AA7CD,kCA6CC"}
1
+ {"version":3,"file":"XStateStore.js","sourceRoot":"","sources":["../../src/xstatePersistence/XStateStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,kDAAyB;AAGzB,2EAAsE;AAEtE,iEAA4D;AAE5D,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,oCAAoC,CAAC,CAAA;AAEzD,MAAa,WAAY,SAAQ,2CAAoB;IAGjD,YAAY,YAAmC;QAC3C,KAAK,EAAE,CAAA;QA2CH,cAAS,GAAG,CAAC,KAAkB,EAAS,EAAE;YAC9C,OAAO;gBACH,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aAC3B,CAAA;QACL,CAAC,CAAA;QAnDG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IACpC,CAAC;IAEK,SAAS,CAAC,KAAoB;;YAChC,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA;YACtD,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjE,OAAO,UAAU,CAAC,aAAa,CAAC,yBAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;KAAA;IAEK,QAAQ,CAAC,IAAkB;;YAC7B,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA;YACtD,KAAK,CAAC,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC1D,MAAM,MAAM,GAAuB,MAAM,UAAU,CAAC,aAAa,CAAC,yBAAW,CAAC;iBACzE,OAAO,CAAC;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC7B,CAAC,CAAA;YACN,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;aACxE;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC;KAAA;IAEK,SAAS,CAAC,IAAoB;;YAChC,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA,CAAC,wBAAwB;YAC/E,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YAC7B,MAAM,MAAM,GAAuB,MAAM,UAAU,CAAC,aAAa,CAAC,yBAAW,CAAC,CAAC,IAAI,mBAC5E,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,KAAI,EAAE,KAAK,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,EAAE,CAAC,EAC9C,CAAA;YAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QACpE,CAAC;KAAA;IAEK,WAAW,CAAC,IAAqB;;YACnC,MAAM,UAAU,GAAe,MAAM,IAAI,CAAC,YAAY,CAAA;YACtD,KAAK,CAAC,kDAAkD,IAAI,CAAC,KAAK,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACpH,MAAM,UAAU,CAAC,kBAAkB,EAAE;iBAChC,MAAM,EAAE;iBACR,IAAI,CAAC,yBAAW,CAAC;iBACjB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;iBAClC,OAAO,EAAE,CAAA;QAClB,CAAC;KAAA;CAYJ;AAzDD,kCAyDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.data-store",
3
- "version": "0.18.2-unstable.64+f7b86bff",
3
+ "version": "0.18.2-unstable.67+3c9bd888",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,8 +13,8 @@
13
13
  "typeorm-postgres:migration:run": "pnpm run typeorm -- migration:run -c migration-postgres"
14
14
  },
15
15
  "dependencies": {
16
- "@sphereon/ssi-sdk.core": "0.18.2-unstable.64+f7b86bff",
17
- "@sphereon/ssi-types": "0.18.2-unstable.64+f7b86bff",
16
+ "@sphereon/ssi-sdk.core": "0.18.2-unstable.67+3c9bd888",
17
+ "@sphereon/ssi-types": "0.18.2-unstable.67+3c9bd888",
18
18
  "@veramo/core": "4.2.0",
19
19
  "class-validator": "^0.14.0",
20
20
  "debug": "^4.3.4",
@@ -43,5 +43,5 @@
43
43
  "PostgreSQL",
44
44
  "Contact Store"
45
45
  ],
46
- "gitHead": "f7b86bffd58fd6c0c642fe529febeb432c183b96"
46
+ "gitHead": "3c9bd88842928319f8e8c72d0b17c82b7c84010e"
47
47
  }
@@ -29,8 +29,7 @@ describe('Database entities tests', (): void => {
29
29
  state: 'test_state',
30
30
  type: 'b40b8474-58a2-4b23-9fde-bd6ee1902cdb',
31
31
  completedAt: new Date(),
32
- tenantId: 'test_tenant_id',
33
- ttl: 30000
32
+ tenantId: 'test_tenant_id'
34
33
  }
35
34
 
36
35
  const xstateEventEntity: StateEntity = stateEntityFrom(xstateEvent)
@@ -41,7 +40,6 @@ describe('Database entities tests', (): void => {
41
40
  expect(fromDb?.type).toEqual(xstateEvent.type)
42
41
  expect(fromDb?.state).toEqual(xstateEvent.state)
43
42
  expect(fromDb?.tenantId).toEqual(xstateEvent.tenantId)
44
- expect(fromDb?.ttl).toEqual(xstateEvent.ttl)
45
43
  expect(fromDb?.completedAt).toEqual(xstateEvent.completedAt)
46
44
  })
47
45
  })
@@ -10,7 +10,7 @@ describe('Database entities tests', (): void => {
10
10
  dbConnection = await new DataSource({
11
11
  type: 'sqlite',
12
12
  database: ':memory:',
13
- //logging: 'all',
13
+ logging: 'all',
14
14
  migrationsRun: false,
15
15
  migrations: DataStoreXStateStoreMigrations,
16
16
  synchronize: false,
@@ -32,21 +32,37 @@ describe('Database entities tests', (): void => {
32
32
  createdAt: new Date(),
33
33
  updatedAt: new Date(),
34
34
  completedAt: new Date(),
35
- tenantId: 'test_tenant_id',
36
- ttl: 30000
35
+ tenantId: 'test_tenant_id'
37
36
  }
38
37
 
39
38
  const savedXStoreEvent: State = await xstateStore.saveState(xstateEvent)
40
39
  expect(savedXStoreEvent).toBeDefined()
41
40
  })
42
41
 
43
- it('should save an xstate event', async (): Promise<void> => {
42
+ it('should get all state events', async (): Promise<void> => {
44
43
  const xstateEvent: NonPersistedXStateStoreEvent = {
45
44
  state: 'test_state',
46
45
  type: 'b40b8474-58a2-4b23-9fde-bd6ee1902cdb',
47
46
  completedAt: new Date(),
48
- tenantId: 'test_tenant_id',
49
- ttl: 30000
47
+ tenantId: 'test_tenant_id'
48
+ }
49
+
50
+ const stateEvent1: NonPersistedXStateStoreEvent = await xstateStore.saveState({...xstateEvent})
51
+ expect(stateEvent1).toBeDefined()
52
+
53
+ const stateEvent2: NonPersistedXStateStoreEvent = await xstateStore.saveState({...xstateEvent})
54
+ expect(stateEvent2).toBeDefined()
55
+
56
+ const result: Array<State> = await xstateStore.getStates()
57
+ expect(result).toHaveLength(2)
58
+ })
59
+
60
+ it('should retrieve an xstate event', async (): Promise<void> => {
61
+ const xstateEvent: NonPersistedXStateStoreEvent = {
62
+ state: 'test_state',
63
+ type: 'b40b8474-58a2-4b23-9fde-bd6ee1902cdb',
64
+ completedAt: new Date(),
65
+ tenantId: 'test_tenant_id'
50
66
  }
51
67
 
52
68
  const savedXStoreEvent1: State = await xstateStore.saveState(xstateEvent)
@@ -56,11 +72,49 @@ describe('Database entities tests', (): void => {
56
72
  expect(result).toBeDefined()
57
73
  })
58
74
 
59
- it('should return no xstate event if filter does not match', async (): Promise<void> => {
75
+ it('should return an error if type filter does not match', async (): Promise<void> => {
60
76
  const args: GetStateArgs = {
61
77
  type: 'unknown_event'
62
78
  }
63
79
 
64
80
  await expect(xstateStore.getState(args)).rejects.toEqual(Error('No state found for type: unknown_event'))
65
81
  })
82
+
83
+ it('should delete the expired records', async () => {
84
+ const now = new Date()
85
+ const newestXstateEvent: NonPersistedXStateStoreEvent = {
86
+ state: 'test_state',
87
+ type: 'test_type_1',
88
+ createdAt: now,
89
+ completedAt: new Date(),
90
+ tenantId: 'test_tenant_id'
91
+ }
92
+ const middleXstateEvent: NonPersistedXStateStoreEvent = {
93
+ state: 'test_state',
94
+ type: 'test_type_2',
95
+ createdAt: new Date(+now - 30000),
96
+ completedAt: new Date(),
97
+ tenantId: 'test_tenant_id'
98
+ }
99
+
100
+ const oldestXstateEvent: NonPersistedXStateStoreEvent = {
101
+ state: 'test_state',
102
+ type: 'test_type_3',
103
+ createdAt: new Date(+now - 60000),
104
+ completedAt: new Date(),
105
+ tenantId: 'test_tenant_id'
106
+ }
107
+
108
+ await xstateStore.saveState(oldestXstateEvent)
109
+ await xstateStore.saveState(middleXstateEvent)
110
+ await xstateStore.saveState(newestXstateEvent)
111
+
112
+ await xstateStore.deleteState({
113
+ where: `created_at < datetime('now', :ttl)`, parameters: { ttl: '-30 seconds' }
114
+ })
115
+
116
+ await expect(xstateStore.getState({ type: 'test_type_1'})).resolves.toBeDefined()
117
+ await expect(xstateStore.getState({ type: 'test_type_2'})).resolves.toBeDefined()
118
+ await expect(xstateStore.getState({ type: 'test_type_3'})).rejects.toEqual(Error('No state found for type: test_type_3'))
119
+ })
66
120
  })
@@ -18,14 +18,11 @@ export class StateEntity extends BaseEntity {
18
18
  @UpdateDateColumn({ name: 'updated_at', nullable: false })
19
19
  updatedAt!: Date
20
20
 
21
- @Column({ name: 'completed_at', type: 'date', nullable: true })
21
+ @Column({ name: 'completed_at', type: 'datetime', nullable: true })
22
22
  completedAt?: Date
23
23
 
24
24
  @Column({ name: 'tenant_id', type: 'varchar', nullable: true })
25
25
  tenantId?: string
26
-
27
- @Column({ name: 'ttl', default: 0 })
28
- ttl!: number
29
26
  }
30
27
 
31
28
  export const stateEntityFrom = (args: NonPersistedXStateStoreEvent): StateEntity => {
@@ -34,6 +31,5 @@ export const stateEntityFrom = (args: NonPersistedXStateStoreEvent): StateEntity
34
31
  stateEntity.type = args.type
35
32
  stateEntity.completedAt = args.completedAt
36
33
  stateEntity.tenantId = args.tenantId
37
- stateEntity.ttl = args.ttl
38
34
  return stateEntity
39
35
  }
@@ -1,3 +1,5 @@
1
+ import {ObjectLiteral} from "typeorm";
2
+
1
3
  export type SaveStateArgs = {
2
4
  state: string
3
5
  type: string
@@ -5,14 +7,19 @@ export type SaveStateArgs = {
5
7
  updatedAt?: Date
6
8
  completedAt?: Date
7
9
  tenantId?: string
8
- ttl: number
9
10
  }
10
11
 
11
12
  export type GetStateArgs = Pick<SaveStateArgs, 'type'>
12
13
 
14
+ export type FindStatesArgs = Partial<SaveStateArgs>
15
+
16
+ export type GetStatesArgs = {
17
+ filter: FindStatesArgs
18
+ }
19
+
13
20
  export type NonPersistedXStateStoreEvent = SaveStateArgs
14
21
 
15
- export type DeleteStateArgs = Pick<SaveStateArgs, 'type'>
22
+ export type DeleteStateArgs = { where: string, parameters?: ObjectLiteral }
16
23
 
17
24
  export type VoidResult = void
18
25
 
@@ -23,5 +30,4 @@ export type State = {
23
30
  updatedAt: Date
24
31
  completedAt?: Date
25
32
  tenantId?: string
26
- ttl: number
27
33
  }
@@ -1,7 +1,8 @@
1
- import {DeleteStateArgs, GetStateArgs, SaveStateArgs, State, VoidResult} from "../types";
1
+ import {DeleteStateArgs, GetStateArgs, GetStatesArgs, SaveStateArgs, State, VoidResult} from "../types";
2
2
 
3
3
  export abstract class IAbstractXStateStore {
4
4
  abstract saveState(state: SaveStateArgs): Promise<State>
5
5
  abstract getState(args: GetStateArgs): Promise<State>
6
+ abstract getStates(args?: GetStatesArgs): Promise<Array<State>>
6
7
  abstract deleteState(args: DeleteStateArgs): Promise<VoidResult>
7
8
  }
@@ -3,7 +3,7 @@ import Debug from 'debug'
3
3
  import {DataSource} from "typeorm";
4
4
 
5
5
  import {StateEntity} from "../entities/xstatePersistence/StateEntity";
6
- import {DeleteStateArgs, GetStateArgs, SaveStateArgs, State, VoidResult,} from "../types";
6
+ import {DeleteStateArgs, GetStateArgs, GetStatesArgs, SaveStateArgs, State, VoidResult,} from "../types";
7
7
  import {IAbstractXStateStore} from "./IAbstractXStateStore";
8
8
 
9
9
  const debug = Debug('sphereon:ssi-sdk:xstatePersistence')
@@ -35,11 +35,24 @@ export class XStateStore extends IAbstractXStateStore {
35
35
  return this.stateFrom(result)
36
36
  }
37
37
 
38
+ async getStates(args?: GetStatesArgs): Promise<Array<State>> {
39
+ const connection: DataSource = await this.dbConnection // TODO apply everywhere
40
+ debug('Getting states', args)
41
+ const result: Array<StateEntity> = await connection.getRepository(StateEntity).find({
42
+ ...(args?.filter && { where: args?.filter }),
43
+ })
44
+
45
+ return result.map((event: StateEntity) => this.stateFrom(event))
46
+ }
47
+
38
48
  async deleteState(args: DeleteStateArgs): Promise<VoidResult> {
39
49
  const connection: DataSource = await this.dbConnection
40
- debug(`Executing deleteState query with type: ${args.type}`)
41
- await connection.getRepository(StateEntity)
42
- .delete({ type: args.type })
50
+ debug(`Executing deleteState query with where clause: ${args.where} and params: ${JSON.stringify(args.parameters)}`)
51
+ await connection.createQueryBuilder()
52
+ .delete()
53
+ .from(StateEntity)
54
+ .where(args.where, args.parameters)
55
+ .execute()
43
56
  }
44
57
 
45
58
  private stateFrom = (state: StateEntity): State => {
@@ -49,8 +62,7 @@ export class XStateStore extends IAbstractXStateStore {
49
62
  createdAt: state.createdAt,
50
63
  updatedAt: state.updatedAt,
51
64
  completedAt: state.completedAt,
52
- tenantId: state.tenantId,
53
- ttl: state.ttl
65
+ tenantId: state.tenantId
54
66
  }
55
67
  }
56
68
  }