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:13
Type Parameters
S
S extends Service<ServiceClassTypes>
Parameters
fn
CommandFunction<S, any, any, any, any, any, any, any, any>
inputPayloadSchema
undefined | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>
inputParameterSchema
undefined | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>
outputPayloadSchema
undefined | Schema<any, any, any, ""> | ZodType<any, ZodTypeDef, any>
beforeGuards
Record<string, CommandBeforeGuardHook<S, any, any, any, any, any, any, any>>
Returns
(
this,context,payload,parameter):Promise<unknown>
Parameters
this
S
context
configs
{ getConfig: ConfigGetterFunction; removeConfig: ConfigDeleteFunction; setConfig: ConfigSetterFunction; }
the config store
configs.getConfig
get a config value from the config store
configs.removeConfig
delete a config value from the config store
configs.setConfig
set a config value in the config store
emit
EmitCustomMessageFunction<EmptyObject>
emit a custom message
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
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
get a secret from the secret store
secrets.removeSecret
delete a secret from the secret store
secrets.setSecret
set a secret in the secret store
service
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
// 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
get a state value from the state store
states.removeState
delete a state value from the state store
states.setState
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>
