Skip to content

Commit

Permalink
bug(api): api compiles
Browse files Browse the repository at this point in the history
  • Loading branch information
tatarco committed Nov 12, 2024
1 parent 809389a commit 48cf5ea
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 22 deletions.
11 changes: 6 additions & 5 deletions apps/api/src/app/bridge/usecases/sync/sync.usecase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ import {
UpsertWorkflowPreferencesCommand,
} from '@novu/application-generic';
import {
JSONSchemaDto,
WorkflowCreationSourceEnum,
WorkflowOriginEnum,
WorkflowTypeEnum,
WorkflowPreferencesPartial,
WorkflowTypeEnum,
} from '@novu/shared';
import { DiscoverOutput, DiscoverStepOutput, DiscoverWorkflowOutput, GetActionEnum } from '@novu/framework/internal';

Expand Down Expand Up @@ -208,10 +209,10 @@ export class Sync {
__source: WorkflowCreationSourceEnum.BRIDGE,
steps: this.mapSteps(workflow.steps),
controls: {
schema: workflow.controls?.schema,
schema: workflow.controls?.schema as JSONSchemaDto,
},
rawData: workflow as unknown as Record<string, unknown>,
payloadSchema: workflow.payload?.schema,
payloadSchema: workflow.payload?.schema as JSONSchemaDto,
active: isWorkflowActive,
description: this.getWorkflowDescription(workflow),
data: this.castToAnyNotSupportedParam(workflow)?.data,
Expand All @@ -237,10 +238,10 @@ export class Sync {
workflowId: workflow.workflowId,
steps: this.mapSteps(workflow.steps, workflowExist),
controls: {
schema: workflow.controls?.schema,
schema: workflow.controls?.schema as JSONSchemaDto,
},
rawData: workflow,
payloadSchema: workflow.payload?.schema,
payloadSchema: workflow.payload?.schema as unknown as JSONSchemaDto,
type: WorkflowTypeEnum.BRIDGE,
description: this.getWorkflowDescription(workflow),
data: this.castToAnyNotSupportedParam(workflow)?.data,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ActionStepEnum, actionStepSchemas, ChannelStepEnum, channelStepSchemas } from '@novu/framework/internal';
import { ControlSchemas } from '@novu/shared';
import { ControlSchemas, JSONSchemaDto } from '@novu/shared';
import { EmailStepControlSchema, EmailStepUiSchema, inAppControlSchema, InAppUiSchema } from './schemas';

export const PERMISSIVE_EMPTY_SCHEMA = {
Expand All @@ -19,22 +19,22 @@ export const stepTypeToDefaultDashboardControlSchema: Record<ChannelStepEnum | A
uiSchema: EmailStepUiSchema,
},
[ChannelStepEnum.SMS]: {
schema: channelStepSchemas[ChannelStepEnum.SMS].output,
schema: channelStepSchemas[ChannelStepEnum.SMS].output as unknown as JSONSchemaDto,
},
[ChannelStepEnum.PUSH]: {
schema: channelStepSchemas[ChannelStepEnum.PUSH].output,
schema: channelStepSchemas[ChannelStepEnum.PUSH].output as unknown as JSONSchemaDto,
},
[ChannelStepEnum.CHAT]: {
schema: channelStepSchemas[ChannelStepEnum.CHAT].output,
schema: channelStepSchemas[ChannelStepEnum.CHAT].output as unknown as JSONSchemaDto,
},

[ActionStepEnum.DELAY]: {
schema: actionStepSchemas[ActionStepEnum.DELAY].output,
schema: actionStepSchemas[ActionStepEnum.DELAY].output as unknown as JSONSchemaDto,
},
[ActionStepEnum.DIGEST]: {
schema: actionStepSchemas[ActionStepEnum.DIGEST].output,
schema: actionStepSchemas[ActionStepEnum.DIGEST].output as unknown as JSONSchemaDto,
},
[ActionStepEnum.CUSTOM]: {
schema: PERMISSIVE_EMPTY_SCHEMA,
schema: PERMISSIVE_EMPTY_SCHEMA as unknown as JSONSchemaDto,
},
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Injectable } from '@nestjs/common';
import { JSONSchema } from 'json-schema-to-ts';
import { NotificationStepEntity } from '@novu/dal';
import { JSONSchemaDto } from '@novu/shared';
import { computeResultSchema } from '../../shared';
Expand All @@ -22,31 +21,37 @@ export class BuildAvailableVariableSchemaUsecase {
payload: payloadSchema,
},
additionalProperties: false,
} as const satisfies JSONSchema;
} as const satisfies JSONSchemaDto;
}
}
function buildPreviousStepsSchema(previousSteps: NotificationStepEntity[] | undefined, payloadSchema?: JSONSchema) {
type StepExternalId = string;
let previousStepsProperties: Record<StepExternalId, JSONSchema> = {};

previousStepsProperties = (previousSteps || []).reduce(
function buildPreviousStepsProperties(
previousSteps: NotificationStepEntity[] | undefined,
payloadSchema?: JSONSchemaDto
) {
return (previousSteps || []).reduce(
(acc, step) => {
if (step.stepId && step.template?.type) {
acc[step.stepId] = computeResultSchema(step.template.type, payloadSchema);
}

return acc;
},
{} as Record<StepExternalId, JSONSchema>
{} as Record<string, JSONSchemaDto>
);
}

function buildPreviousStepsSchema(
previousSteps: NotificationStepEntity[] | undefined,
payloadSchema?: JSONSchemaDto
): JSONSchemaDto {
return {
type: 'object',
properties: previousStepsProperties,
properties: buildPreviousStepsProperties(previousSteps, payloadSchema),
required: [],
additionalProperties: false,
description: 'Previous Steps Results',
} as const satisfies JSONSchema;
} as const satisfies JSONSchemaDto;
}
const buildSubscriberSchema = () =>
({
Expand All @@ -67,6 +72,5 @@ const buildSubscriberSchema = () =>
description: 'The last time the subscriber was online (optional)',
},
},
required: ['firstName', 'lastName', 'email', 'subscriberId'],
additionalProperties: false,
}) as const satisfies JSONSchemaDto;

0 comments on commit 48cf5ea

Please sign in to comment.