Skip to content

@purista/core v2.0.5


PURISTA API / @purista/core / getCommandFunctionWithValidation

Function: getCommandFunctionWithValidation()

getCommandFunctionWithValidation<S>(fn, inputPayloadSchema, inputParameterSchema, outputPayloadSchema, beforeGuards): (this, context, payload, parameter) => Promise<unknown>

Defined in: packages/core/src/CommandDefinitionBuilder/getCommandFunctionWithValidation.impl.ts:7

Type Parameters

S extends Service<ServiceClassTypes>

Parameters

fn

CommandFunction<S, any, any, any, any, any, any, any, any>

inputPayloadSchema

undefined | SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

inputParameterSchema

undefined | SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

outputPayloadSchema

undefined | SchemaObject | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>

beforeGuards

Record<string, CommandBeforeGuardHook<S, any, any, any, any, any, any, any>>

Returns

Function

Parameters

this

S

context

configs

{ getConfig: ConfigGetterFunction; removeConfig: ConfigDeleteFunction; setConfig: ConfigSetterFunction; }

the config store

configs.getConfig

ConfigGetterFunction

get a config value from the config store

configs.removeConfig

ConfigDeleteFunction

delete a config value from the config store

configs.setConfig

ConfigSetterFunction

set a config value in the config store

emit

EmitCustomMessageFunction<EmptyObject>

emit a custom message

logger

Logger

the logger instance

message

Readonly<{ contentEncoding: string; contentType: string; correlationId: string; eventName: string; id: string; messageType: Command; otp: string; payload: { parameter: unknown; payload: unknown; }; principalId: string; receiver: EBMessageAddress; sender: { instanceId: string; serviceName: string; serviceTarget: string; serviceVersion: string; }; tenantId: string; timestamp: number; traceId: string; }>

the original message

resources

EmptyObject

Provides resources defined in service builder and set via config during service creation

secrets

{ getSecret: SecretGetterFunction; removeSecret: SecretDeleteFunction; setSecret: SecretSetterFunction; }

the secret store

secrets.getSecret

SecretGetterFunction

get a secret from the secret store

secrets.removeSecret

SecretDeleteFunction

delete a secret from the secret store

secrets.setSecret

SecretSetterFunction

set a secret in the secret store

service

EmptyObject

Invokes a command and returns the result. It is recommended to validate the result against a schema which only contains the data you actually need.

Example

typescript
// define your invocation in command builder
.canInvoke('ServiceA', '1', 'test', responseOutputSchema, payloadSchema, parameterSchema)
.setCommandFunction(async function (context, payload, _parameter) {
   const inputPayload = { my: 'input' }
   const inputParameter = { search: 'for_me' }
   const result = await context.service.ServiceA[1].test(inputPayload,inputParameter)
})
startActiveSpan

<F>(name, opts, context, fn) => Promise<F>

wrap given function in an opentelemetry active span

states

{ getState: StateGetterFunction; removeState: StateDeleteFunction; setState: StateSetterFunction; }

the state store

states.getState

StateGetterFunction

get a state value from the state store

states.removeState

StateDeleteFunction

delete a state value from the state store

states.setState

StateSetterFunction

set a state value in the state store

wrapInSpan

<F>(name, opts, fn, context?) => Promise<F>

wrap given function in an opentelemetry span

payload

unknown

parameter

unknown

Returns

Promise<unknown>