From e7c360d385e210eef344ab55c2695be5d30a1b54 Mon Sep 17 00:00:00 2001 From: sovrgn <boyan.tsolov@vereign.com> Date: Thu, 12 Oct 2023 10:44:59 +0300 Subject: [PATCH] simplify: generic id request dto --- .../src/app/app.controller.ts | 4 ++-- .../app/managers/attestation.controller.ts | 11 ++++----- .../src/app/managers/connection.controller.ts | 8 +++---- .../src/app/managers/proof.controller.ts | 16 ++++++------- .../src/askar-nats/event.handler.service.ts | 24 +++++++++---------- libs/askar/src/askar-rest/rest.controller.ts | 5 ++-- libs/askar/src/askar/agent.service.ts | 3 ++- .../src/dtos/requests/connection.req.dto.ts | 9 ------- .../src/dtos/requests/credential.req.dto.ts | 9 ------- .../{creddef.req.dto.ts => id.req.dto.ts} | 4 ++-- libs/dtos/src/dtos/requests/proof.req.dto.ts | 10 ++++---- libs/dtos/src/dtos/requests/schema.req.dto.ts | 9 ------- libs/dtos/src/events/dtoToEventTransformer.ts | 6 ++--- libs/dtos/src/index.ts | 6 +---- 14 files changed, 44 insertions(+), 80 deletions(-) delete mode 100644 libs/dtos/src/dtos/requests/connection.req.dto.ts delete mode 100644 libs/dtos/src/dtos/requests/credential.req.dto.ts rename libs/dtos/src/dtos/requests/{creddef.req.dto.ts => id.req.dto.ts} (58%) delete mode 100644 libs/dtos/src/dtos/requests/schema.req.dto.ts diff --git a/apps/connection-manager/src/app/app.controller.ts b/apps/connection-manager/src/app/app.controller.ts index 4eefca2f..98d111dc 100644 --- a/apps/connection-manager/src/app/app.controller.ts +++ b/apps/connection-manager/src/app/app.controller.ts @@ -7,8 +7,8 @@ import { ConnectionEvent, CreateInvitationResponseDto, GatewayAcceptedResponseDto, - ConnectionReqDto, makeEvent, + IdReqDto, } from "@ocm-engine/dtos"; @Controller() @@ -21,7 +21,7 @@ export class AppController { async create( @Body() payload: { - data: null | CreateInvitationResponseDto | ConnectionReqDto; + data: null | CreateInvitationResponseDto | IdReqDto; type: ConnectionEvent; source: string; }, diff --git a/apps/gateway/src/app/managers/attestation.controller.ts b/apps/gateway/src/app/managers/attestation.controller.ts index a51fdf1b..ce4577f7 100644 --- a/apps/gateway/src/app/managers/attestation.controller.ts +++ b/apps/gateway/src/app/managers/attestation.controller.ts @@ -2,7 +2,6 @@ import { Body, Controller, Get, Param, Post, UseFilters } from "@nestjs/common"; import { AllExceptionsHandler } from "../exception.handler"; import { AttestationManagerClient } from "@ocm-engine/clients"; import { - CredentialReqDto, CreateCredentialDefinitionRequsetDto, CreateSchemaRequestDto, CRED_DEF_CREATE, @@ -11,13 +10,13 @@ import { CRED_OFFER_ACCEPT, CRED_OFFER_LIST, GatewayAcceptedResponseDto, - SchemaReqDto, IssueCredentialRequestDto, MakeBasicMessageRequestDto, MESSAGE_MAKE, SCHEMA_CREATE, SCHEMA_GET, SCHEMA_LIST, + IdReqDto, } from "@ocm-engine/dtos"; import { ApiBadRequestResponse, @@ -165,8 +164,8 @@ export class AttestationController { "Method will fetch specific schema or return null. The id of the response will be matched when you receive event from the websocket", tags: ["Schema"], }) - async getSchemaById(@Body() schemaRequestDto: SchemaReqDto) { - return this.amClient.sendPayload<SchemaReqDto>({ + async getSchemaById(@Body() schemaRequestDto: IdReqDto) { + return this.amClient.sendPayload<IdReqDto>({ pattern: "schemas", payload: { source: "/schemas-by-id", @@ -504,8 +503,8 @@ export class AttestationController { tags: ["Credentials Offers"], }) acceptCredential(@Param("credential_record_id") credentialRecordId: string) { - const data = new CredentialReqDto(); - data.credentialRecordId = credentialRecordId; + const data = new IdReqDto(); + data.id = credentialRecordId; return this.amClient.sendPayload({ pattern: "credentials", payload: { diff --git a/apps/gateway/src/app/managers/connection.controller.ts b/apps/gateway/src/app/managers/connection.controller.ts index aa29861f..7fd5db4f 100644 --- a/apps/gateway/src/app/managers/connection.controller.ts +++ b/apps/gateway/src/app/managers/connection.controller.ts @@ -15,7 +15,7 @@ import { CONNECTION_LIST, CreateInvitationResponseDto, GatewayAcceptedResponseDto, - ConnectionReqDto, + IdReqDto, } from "@ocm-engine/dtos"; import { AllExceptionsHandler } from "../exception.handler"; import { @@ -238,10 +238,10 @@ export class ConnectionController { tags: ["Connections"], }) async getById(@Param("id") id: string) { - const request = new ConnectionReqDto(); - request.connectionId = id; + const request = new IdReqDto(); + request.id = id; - return this.cmClient.sendPayload<ConnectionReqDto>({ + return this.cmClient.sendPayload<IdReqDto>({ pattern: "connections", payload: { source: "/connections/:id", diff --git a/apps/gateway/src/app/managers/proof.controller.ts b/apps/gateway/src/app/managers/proof.controller.ts index c90bad7c..1bf74b44 100644 --- a/apps/gateway/src/app/managers/proof.controller.ts +++ b/apps/gateway/src/app/managers/proof.controller.ts @@ -2,13 +2,13 @@ import { Body, Controller, Get, Param, Post, UseFilters } from "@nestjs/common"; import { ProofReqDto, GatewayAcceptedResponseDto, - SchemaReqDto, IssueProofRequestDto, PROOF_ACCEPT, PROOF_DECLINE, PROOF_GET, PROOF_ISSUE, PROOF_LIST, + IdReqDto, } from "@ocm-engine/dtos"; import { AllExceptionsHandler } from "../exception.handler"; import { ProofManagerClient } from "@ocm-engine/clients"; @@ -60,7 +60,7 @@ export class ProofController { tags: ["Credentials Proof"], }) proofs() { - return this.pmClient.sendPayload<SchemaReqDto>({ + return this.pmClient.sendPayload<IdReqDto>({ pattern: "proofs", payload: { source: "/credential/proofs", @@ -106,10 +106,10 @@ export class ProofController { tags: ["Credentials Proof"], }) getProofById(@Param("proof_record_id") proofRecordId: string) { - const data = new ProofReqDto(); - data.proofRecordId = proofRecordId; + const data = new IdReqDto(); + data.id = proofRecordId; - return this.pmClient.sendPayload<ProofReqDto>({ + return this.pmClient.sendPayload<IdReqDto>({ pattern: "proofs", payload: { source: "/credentials/proof/:proof_record_id", @@ -275,10 +275,10 @@ export class ProofController { tags: ["Credentials Proof"], }) declineProofRequest(@Param("proof_record_id") proofRecordId: string) { - const data = new ProofReqDto(); - data.proofRecordId = proofRecordId; + const data = new IdReqDto(); + data.id = proofRecordId; - return this.pmClient.sendPayload<ProofReqDto>({ + return this.pmClient.sendPayload<IdReqDto>({ pattern: "proofs", payload: { source: "/credentials/proof/:proof_record_id/decline", diff --git a/libs/askar/src/askar-nats/event.handler.service.ts b/libs/askar/src/askar-nats/event.handler.service.ts index 2c5b4409..ee08bcbb 100644 --- a/libs/askar/src/askar-nats/event.handler.service.ts +++ b/libs/askar/src/askar-nats/event.handler.service.ts @@ -1,7 +1,6 @@ import { Injectable, Logger } from "@nestjs/common"; import { AgentService } from "../askar/agent.service"; import { - CredentialReqDto, ProofReqDto, CloudEventDto, CONNECTION_ACCEPT, @@ -16,8 +15,6 @@ import { CRED_LIST, CRED_OFFER_ACCEPT, CRED_OFFER_LIST, - ConnectionReqDto, - SchemaReqDto, IssueCredentialRequestDto, IssueProofRequestDto, MakeBasicMessageRequestDto, @@ -30,6 +27,7 @@ import { SCHEMA_GET, SCHEMA_LIST, PROOF_DECLINE, + IdReqDto, } from "@ocm-engine/dtos"; import asyncRetry from "async-retry"; @@ -58,8 +56,8 @@ export class EventHandlerService { break; case CONNECTION_GET: - dto = event.data as ConnectionReqDto; - data = await this.agentService.getConnectionById(dto.connectionId); + dto = event.data as IdReqDto; + data = await this.agentService.getConnectionById(dto.id); break; case SCHEMA_CREATE: @@ -71,8 +69,8 @@ export class EventHandlerService { break; case SCHEMA_GET: - dto = event.data as SchemaReqDto; - data = await this.agentService.getSchemaById(dto.schemaId); + dto = event.data as IdReqDto; + data = await this.agentService.getSchemaById(dto.id); break; case CRED_DEF_CREATE: data = await this.agentService.createCredentialDefinition( @@ -95,9 +93,9 @@ export class EventHandlerService { break; case CRED_OFFER_ACCEPT: - dto = event.data as CredentialReqDto; + dto = event.data as IdReqDto; data = await this.agentService.acceptCredential( - dto.credentialRecordId, + dto.id, ); break; @@ -111,8 +109,8 @@ export class EventHandlerService { break; case PROOF_GET: - dto = event.data as ProofReqDto; - data = await this.agentService.getProofById(dto.proofRecordId); + dto = event.data as IdReqDto; + data = await this.agentService.getProofById(dto.id); break; case PROOF_ACCEPT: @@ -122,9 +120,9 @@ export class EventHandlerService { break; case PROOF_DECLINE: - dto = event.data as ProofReqDto; + dto = event.data as IdReqDto; data = await this.agentService.declineProofRequest( - dto.proofRecordId, + dto.id, ); break; diff --git a/libs/askar/src/askar-rest/rest.controller.ts b/libs/askar/src/askar-rest/rest.controller.ts index f8ca05f4..d6e20858 100644 --- a/libs/askar/src/askar-rest/rest.controller.ts +++ b/libs/askar/src/askar-rest/rest.controller.ts @@ -9,6 +9,7 @@ import { CreateSchemaRequestDto, MakeBasicMessageRequestDto, ProofReqDto, + IdReqDto, } from "@ocm-engine/dtos"; import { AllExceptionsHandler } from "./exception.handler"; @@ -79,8 +80,8 @@ export class RestController { } @Get("credential/proof/:proof_record_id") - getProof(@Param("proof_record_id") data: ProofReqDto) { - return this.agentService.getProofById(data.proofRecordId); + getProof(@Param("proof_record_id") data: IdReqDto) { + return this.agentService.getProofById(data.id); } @Post(`/credential/proof/accept`) diff --git a/libs/askar/src/askar/agent.service.ts b/libs/askar/src/askar/agent.service.ts index 9f62532a..a4622aa5 100644 --- a/libs/askar/src/askar/agent.service.ts +++ b/libs/askar/src/askar/agent.service.ts @@ -410,7 +410,8 @@ export class AgentService { if (acceptProofDto.proofUrl) { return this.acceptOobProof(acceptProofDto.proofUrl); } - return this.acceptConnectionProof(acceptProofDto.proofRecordId); + // REVIEW: should the undefined case be covered inside acceptConnectionProof? + return this.acceptConnectionProof(acceptProofDto.proofRecordId as string); }; acceptOobProof = async (url: string) => { diff --git a/libs/dtos/src/dtos/requests/connection.req.dto.ts b/libs/dtos/src/dtos/requests/connection.req.dto.ts deleted file mode 100644 index cd091613..00000000 --- a/libs/dtos/src/dtos/requests/connection.req.dto.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IsNotEmpty, IsString } from "class-validator"; - - -export class ConnectionReqDto { - //@example 6464b521-005a-4379-91e0-a3692b31cafd - @IsNotEmpty() - @IsString() - connectionId: string; -} diff --git a/libs/dtos/src/dtos/requests/credential.req.dto.ts b/libs/dtos/src/dtos/requests/credential.req.dto.ts deleted file mode 100644 index f94a2682..00000000 --- a/libs/dtos/src/dtos/requests/credential.req.dto.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IsNotEmpty, IsString } from "class-validator"; - - -export class CredentialReqDto { - //@example cf8395a5-9a53-4e06-8a5d-04e0fc00ca04 - @IsNotEmpty() - @IsString() - credentialRecordId: string; -} \ No newline at end of file diff --git a/libs/dtos/src/dtos/requests/creddef.req.dto.ts b/libs/dtos/src/dtos/requests/id.req.dto.ts similarity index 58% rename from libs/dtos/src/dtos/requests/creddef.req.dto.ts rename to libs/dtos/src/dtos/requests/id.req.dto.ts index 681e3eec..5873b7f9 100644 --- a/libs/dtos/src/dtos/requests/creddef.req.dto.ts +++ b/libs/dtos/src/dtos/requests/id.req.dto.ts @@ -1,8 +1,8 @@ import { IsNotEmpty, IsString } from "class-validator"; -export class CreddefReqDto { +export class IdReqDto { @IsNotEmpty() @IsString() - credentialDefinitionId: string; + id: string; } diff --git a/libs/dtos/src/dtos/requests/proof.req.dto.ts b/libs/dtos/src/dtos/requests/proof.req.dto.ts index 4b33d363..8e995435 100644 --- a/libs/dtos/src/dtos/requests/proof.req.dto.ts +++ b/libs/dtos/src/dtos/requests/proof.req.dto.ts @@ -2,15 +2,13 @@ import { IsNotEmpty, IsString, ValidateIf } from "class-validator"; export class ProofReqDto { - @ValidateIf((o) => o.proofUrl === undefined) + @ValidateIf((o) => o.proofUrl === undefined, { always: true }) @IsString() - @ValidateIf((o) => o.proofUrl === undefined) @IsNotEmpty() - proofRecordId: string; + proofRecordId: string | undefined; - @ValidateIf((o) => o.proofRecordId === undefined) + @ValidateIf((o) => o.proofRecordId === undefined, { always: true }) @IsString() - @ValidateIf((o) => o.proofRecordId === undefined) @IsNotEmpty() - proofUrl: string; + proofUrl: string | undefined; } \ No newline at end of file diff --git a/libs/dtos/src/dtos/requests/schema.req.dto.ts b/libs/dtos/src/dtos/requests/schema.req.dto.ts deleted file mode 100644 index 4bf2cb6c..00000000 --- a/libs/dtos/src/dtos/requests/schema.req.dto.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IsNotEmpty, IsString } from "class-validator"; - - -export class SchemaReqDto { - //@example "did:indy:LEDNGER:SXM76gQwRnjkgoz2oBnGjd/anoncreds/v0/SCHEMA/test schema/1.0.2" - @IsNotEmpty() - @IsString() - schemaId: string; -} diff --git a/libs/dtos/src/events/dtoToEventTransformer.ts b/libs/dtos/src/events/dtoToEventTransformer.ts index 9d885143..586f96f1 100644 --- a/libs/dtos/src/events/dtoToEventTransformer.ts +++ b/libs/dtos/src/events/dtoToEventTransformer.ts @@ -11,24 +11,22 @@ import { ConnectionUnsupportedTypeError } from "../errors/connection.unsupported import { CreateCredentialDefinitionRequsetDto } from "../dtos/requests/create.credential.definition.request.dto"; import { CreateInvitationResponseDto } from "../dtos/responses/create.invitation.response.dto"; import { CreateSchemaRequestDto } from "../dtos/requests/create.schema.request.dto"; -import { ConnectionReqDto } from "../dtos/requests/connection.req.dto"; import { IssueCredentialRequestDto } from "../dtos/requests/issue.credential.request.dto"; import { IssueProofRequestDto } from "../dtos/requests/issue.proof.request.dto"; -import { CredentialReqDto } from "../dtos/requests/credential.req.dto"; import { MessageRecordDto } from "../dtos/generics/message.record.dto"; import { MakeBasicMessageRequestDto } from "../dtos/requests/make.basic.message.request.dto"; import { ProofReqDto } from "../dtos/requests/proof.req.dto"; import { ProofRecordDto } from "../dtos/generics/proof.record.dto"; +import { IdReqDto } from "../dtos/requests/id.req.dto"; export const makeEvent = (payload: { data: | null | IssueProofRequestDto - | CredentialReqDto | CreateInvitationResponseDto - | ConnectionReqDto | CreateSchemaRequestDto | ProofReqDto + | IdReqDto | CreateSchemaRequestDto | CreateCredentialDefinitionRequsetDto | ProofRecordDto diff --git a/libs/dtos/src/index.ts b/libs/dtos/src/index.ts index 46976e38..df61e7a5 100644 --- a/libs/dtos/src/index.ts +++ b/libs/dtos/src/index.ts @@ -8,12 +8,8 @@ export * from "./dtos/generics/proof.record.dto"; export * from "./dtos/generics/schema.record.dto"; export * from "./dtos/generics/message.record.dto"; - -export * from "./dtos/requests/connection.req.dto"; -export * from "./dtos/requests/creddef.req.dto"; -export * from "./dtos/requests/credential.req.dto"; export * from "./dtos/requests/proof.req.dto"; -export * from "./dtos/requests/schema.req.dto"; +export * from "./dtos/requests/id.req.dto"; export * from "./dtos/requests/create.schema.request.dto"; export * from "./dtos/requests/create.credential.definition.request.dto"; -- GitLab