Cómo añadir un nuevo evento a Volkswagen (timeline)
1. Añadir el tipo de evento
Ve a src/types/index.ts y añade el tipo de evento que quieras. Por ejemplo, si quieres añadir un evento de tipo NEW_EVENT:
export type EventCode =
| 'TRANSACTION_CREATED'
| 'TRANSACTION_STATUS_CHANGED'
...
| 'NEW_EVENT';
2. Añadir el evento original al diccionario de eventos
Ve a src/helper/enums.ts y añade el evento original a eventsDictionary. Por ejemplo, si quieres añadir un evento de tipo NEW_EVENT que originalmente es swipoo.test.1.new.event:
export const eventsDictionary: {
[key: string]: EventCode;
} = {
'swipoo.transaction.1.event.transaction.created': 'TRANSACTION_CREATED',
'swipoo.transaction.1.event.status.changed': 'TRANSACTION_STATUS_CHANGED',
...,
'swipoo.test.1.new.event': 'NEW_EVENT',
};
3. Añade el evento original al listener de nats
Ve a src/services/natsSub.ts y añade el evento original al listener de nats. Por ejemplo, si quieres añadir un evento de tipo NEW_EVENT que originalmente es swipoo.test.1.new.event:
const eventTypesToListen = [
'swipoo.transaction.1.event.transaction.created',
'swipoo.transaction.1.event.status.changed',
...,
'swipoo.test.1.new.event',
];
4. Crear el parseador de ese tipo de evento
Ve a src/helper/parsers.ts y añade el parseador del evento. El nombre hará referencia al tipo de evento que has añadido en el paso 1. Por ejemplo, si quieres añadir un evento de tipo NEW_EVENT:
export const newEventParser = (): string => 'Se ha creado un nuevo evento';
Ten en cuenta que en esta función tendrás acceso a los atributos y meta del evento original. Por ejemplo, si el evento original es:
{
"attributes": {
"id": "1234567890",
"name": "Nuevo evento"
},
"meta": {
"host": "backend"
}
}
Podrás acceder a los atributos y meta del evento original de la siguiente manera:
export const newEventParser = ({
id,
name,
host,
}: Partial<EventAttrAndMeta>): string =>
`Se ha creado un nuevo evento con id ${id} y nombre ${name} en el host ${host}`;
5. Añadir el parseador al diccionario de parseadores
Ve a src/helper/eventParsers.ts y añade el parseador al diccionario de parseadores. Por ejemplo, si quieres añadir un parseador siguiendo los ejemplos anteriores:
const eventParser = (
eventCode: EventCode,
eventParams: Partial<EventAttrAndMeta>
): string => {
const functionsByEventCode: FunctionsByEventCode = {
TRANSACTION_CREATED: PARSERS.transactionCreatedParser,
TRANSACTION_STATUS_CHANGED: PARSERS.transactionStatusChangeParser,
...,
NEW_EVENT: PARSERS.newEventParser,
};
6. Añadir el test para el parseador que acabas de crear
Ve a src/helper/eventParser.spec.ts y añade el test para el parseador que acabas de crear