diff --git a/packages/backend/src/helpers/telemetry/index.ts b/packages/backend/src/helpers/telemetry/index.ts index 6c3e78f2..7a85646b 100644 --- a/packages/backend/src/helpers/telemetry/index.ts +++ b/packages/backend/src/helpers/telemetry/index.ts @@ -2,6 +2,7 @@ import Analytics, { apiObject } from '@rudderstack/rudder-sdk-node'; import organizationId from './organization-id'; import instanceId from './instance-id'; import appConfig from '../../config/app'; +import Step from '../../models/step'; const WRITE_KEY = '284Py4VgK2MsNYV7xlKzyrALx0v'; const DATA_PLANE_URL = 'https://telemetry.automatisch.io/v1/batch'; @@ -31,11 +32,28 @@ class Telemetry { }); } - // Example implementation of telemetry methods. - // TODO: Revise properties for the step. - // stepUpdated(key: string, appKey: string) { - // this.track('Step updated', { key, appKey }); - // } + stepCreated(step: Step) { + this.track('stepCreated', { + stepId: step.id, + flowId: step.flowId, + createdAt: step.createdAt, + updatedAt: step.updatedAt, + }); + } + + stepUpdated(step: Step) { + this.track('stepUpdated', { + stepId: step.id, + flowId: step.flowId, + key: step.key, + appKey: step.appKey, + type: step.type, + position: step.position, + status: step.status, + createdAt: step.createdAt, + updatedAt: step.updatedAt, + }); + } } const telemetry = new Telemetry(); diff --git a/packages/backend/src/models/step.ts b/packages/backend/src/models/step.ts index 9590126e..9af2c596 100644 --- a/packages/backend/src/models/step.ts +++ b/packages/backend/src/models/step.ts @@ -1,15 +1,17 @@ +import { QueryContext, ModelOptions } from 'objection'; import Base from './base'; import Flow from './flow'; import Connection from './connection'; import ExecutionStep from './execution-step'; import type { IStep } from '@automatisch/types'; +import Telemetry from '../helpers/telemetry'; class Step extends Base { id!: string; flowId!: string; key?: string; appKey?: string; - type!: IStep["type"]; + type!: IStep['type']; connectionId?: string; status = 'incomplete'; position!: number; @@ -63,6 +65,16 @@ class Step extends Base { }, }, }); + + async $afterInsert(queryContext: QueryContext) { + await super.$afterInsert(queryContext); + Telemetry.stepCreated(this); + } + + async $afterUpdate(opt: ModelOptions, queryContext: QueryContext) { + await super.$afterUpdate(opt, queryContext); + Telemetry.stepUpdated(this); + } } export default Step;