Skip to content

Commit fe8ed1f

Browse files
committed
feat: add usecase for fetching tokens
1 parent 7b0bb79 commit fe8ed1f

File tree

13 files changed

+198
-4
lines changed

13 files changed

+198
-4
lines changed

packages/runtime/src/Runtime.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {
3030
TokenController,
3131
Transport
3232
} from "@nmshd/transport";
33+
import { TagController } from "@nmshd/transport/src/modules/tags/TagController";
3334
import { Container, Scope } from "@nmshd/typescript-ioc";
3435
import { buildInformation } from "./buildInformation";
3536
import { DatabaseSchemaUpgrader } from "./DatabaseSchemaUpgrader";
@@ -250,6 +251,10 @@ export abstract class Runtime<TConfig extends RuntimeConfig = RuntimeConfig> {
250251
.factory(() => this.getAccountController().relationshipTemplates)
251252
.scope(Scope.Request);
252253

254+
Container.bind(TagController)
255+
.factory(() => this.getAccountController().tags)
256+
.scope(Scope.Request);
257+
253258
Container.bind(RelationshipsController)
254259
.factory(() => this.getAccountController().relationships)
255260
.scope(Scope.Request);

packages/runtime/src/extensibility/TransportServices.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
MessagesFacade,
99
RelationshipsFacade,
1010
RelationshipTemplatesFacade,
11+
TagsFacade,
1112
TokensFacade
1213
} from "./facades/transport";
1314

@@ -21,6 +22,7 @@ export class TransportServices {
2122
@Inject public readonly account: AccountFacade,
2223
@Inject public readonly devices: DevicesFacade,
2324
@Inject public readonly challenges: ChallengesFacade,
24-
@Inject public readonly identityDeletionProcesses: IdentityDeletionProcessesFacade
25+
@Inject public readonly identityDeletionProcesses: IdentityDeletionProcessesFacade,
26+
@Inject public readonly tags: TagsFacade
2527
) {}
2628
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Result } from "@js-soft/ts-utils";
2+
import { BackboneGetTag } from "@nmshd/transport/src/modules/tags/backbone/BackboneGetTag";
3+
import { Inject } from "@nmshd/typescript-ioc";
4+
import { GetTagsUseCase } from "../../..";
5+
6+
export class TagsFacade {
7+
public constructor(@Inject private readonly getTagsUseCase: GetTagsUseCase) {}
8+
9+
public async getTags(): Promise<Result<BackboneGetTag>> {
10+
return await this.getTagsUseCase.execute();
11+
}
12+
}

packages/runtime/src/extensibility/facades/transport/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export * from "./DevicesFacade";
44
export * from "./FilesFacade";
55
export * from "./IdentityDeletionProcessesFacade";
66
export * from "./MessagesFacade";
7-
export * from "./RelationshipTemplatesFacade";
87
export * from "./RelationshipsFacade";
8+
export * from "./RelationshipTemplatesFacade";
9+
export * from "./TagsFacade";
910
export * from "./TokensFacade";

packages/runtime/src/useCases/transport/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export * from "./devices";
44
export * from "./files";
55
export * from "./identityDeletionProcesses";
66
export * from "./messages";
7-
export * from "./relationshipTemplates";
87
export * from "./relationships";
8+
export * from "./relationshipTemplates";
9+
export * from "./tags";
910
export * from "./tokens";
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Result } from "@js-soft/ts-utils";
2+
import { TagController } from "@nmshd/transport/src/modules/tags/TagController";
3+
import { BackboneGetTag } from "@nmshd/transport/src/modules/tags/backbone/BackboneGetTag";
4+
import { Inject } from "@nmshd/typescript-ioc";
5+
import { UseCase } from "../../common";
6+
7+
export class GetTagsUseCase extends UseCase<void, BackboneGetTag> {
8+
public constructor(@Inject private readonly tagController: TagController) {
9+
super();
10+
}
11+
12+
protected async executeInternal(): Promise<Result<BackboneGetTag>> {
13+
return Result.ok(await this.tagController.getTags());
14+
}
15+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./GetTags";

packages/transport/src/core/TransportController.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ export enum ControllerName {
2929
RelationshipTemplator = "RelationshipTemplator",
3030
Secret = "Secret",
3131
Sync = "Sync",
32-
Token = "Token"
32+
Token = "Token",
33+
Tag = "Tag"
3334
}
3435

3536
export class TransportController {

packages/transport/src/modules/accounts/AccountController.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { SecretController } from "../secrets/SecretController";
3131
import { ChangedItems } from "../sync/ChangedItems";
3232
import { SyncController } from "../sync/SyncController";
3333
import { SynchronizedCollection } from "../sync/SynchronizedCollection";
34+
import { TagController } from "../tags/TagController";
3435
import { TokenController } from "../tokens/TokenController";
3536
import { IdentityController } from "./IdentityController";
3637
import { IdentityDeletionProcessController } from "./IdentityDeletionProcessController";
@@ -63,6 +64,7 @@ export class AccountController {
6364
public relationshipTemplates: RelationshipTemplateController;
6465
private synchronization: SyncController;
6566
public tokens: TokenController;
67+
public tags: TagController;
6668

6769
private relationshipSecrets: RelationshipSecretController;
6870
private readonly _log: ILogger;
@@ -213,6 +215,7 @@ export class AccountController {
213215
this.relationshipTemplates = await new RelationshipTemplateController(this, this.relationshipSecrets).init();
214216
this.messages = await new MessageController(this).init();
215217
this.tokens = await new TokenController(this).init();
218+
this.tags = await new TagController(this).init();
216219

217220
this.synchronization = await new SyncController(this, this.dependencyOverrides, this.unpushedDatawalletModifications, this.config.datawalletEnabled).init();
218221

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { AccountController, ControllerName, TransportController } from "../..";
2+
import { BackboneGetTag } from "./backbone/BackboneGetTag";
3+
import { TagClient } from "./backbone/TagClient";
4+
5+
export class TagController extends TransportController {
6+
private client: TagClient;
7+
8+
public constructor(parent: AccountController) {
9+
super(ControllerName.Tag, parent);
10+
}
11+
12+
public override async init(): Promise<this> {
13+
await super.init();
14+
15+
this.client = new TagClient(this.config, this.parent.authenticator, this.transport.correlator);
16+
17+
return this;
18+
}
19+
20+
public async getTags(): Promise<BackboneGetTag> {
21+
const tags = (await this.client.getTags()).value;
22+
return tags;
23+
}
24+
}

0 commit comments

Comments
 (0)