diff --git a/server/src/config/eventEmitter.ts b/server/src/config/eventEmitter.ts new file mode 100644 index 0000000..ea1baf4 --- /dev/null +++ b/server/src/config/eventEmitter.ts @@ -0,0 +1,5 @@ +import { EventEmitter } from "events"; + +class DomainEventEmitter extends EventEmitter {} + +export const domainEventEmitter = new DomainEventEmitter(); diff --git a/server/src/event/ttnMessageReceivedEvent.ts b/server/src/event/ttnMessageReceivedEvent.ts new file mode 100644 index 0000000..b6b6945 --- /dev/null +++ b/server/src/event/ttnMessageReceivedEvent.ts @@ -0,0 +1,14 @@ +export const TtnMessageReceivedEventName = "TtnMessageReceived"; +export type TtnMessageReceivedEvent = { + lp_ttn_end_device_uplinks_id: string; + wifis: { + mac: string; + rssi: number; + }[]; + ttnGateways: { + rssi: number; + latitude: number; + longitude: number; + altitude: number; + }[]; +}; diff --git a/server/src/eventHandler/ttnMessageReceivedEventHandler.ts b/server/src/eventHandler/ttnMessageReceivedEventHandler.ts new file mode 100644 index 0000000..90c0007 --- /dev/null +++ b/server/src/eventHandler/ttnMessageReceivedEventHandler.ts @@ -0,0 +1,13 @@ +import { domainEventEmitter } from "../config/eventEmitter"; +import { + TtnMessageReceivedEvent, + TtnMessageReceivedEventName, +} from "../event/ttnMessageReceivedEvent"; + +domainEventEmitter.on( + TtnMessageReceivedEventName, + async (event: TtnMessageReceivedEvent) => { + console.log(event); + // TODO Hendrik 🚀 + } +); diff --git a/server/src/index.ts b/server/src/index.ts index 8104843..0731bf6 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1,6 +1,7 @@ import dotenv from "dotenv"; import express from "express"; import "reflect-metadata"; +import "./eventHandler/ttnMessageReceivedEventHandler"; const cors = require("cors"); import locationRoutes from "./controller/locationController";