summaryrefslogtreecommitdiff
path: root/src/misc/antenna-cache.ts
blob: a23eeb45ec4666593d0e81cb6f17836f907ec769 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { Antennas } from '@/models/index';
import { Antenna } from '@/models/entities/antenna';
import { subsdcriber } from '../db/redis';

let antennasFetched = false;
let antennas: Antenna[] = [];

export async function getAntennas() {
	if (!antennasFetched) {
		antennas = await Antennas.find();
		antennasFetched = true;
	}

	return antennas;
}

subsdcriber.on('message', async (_, data) => {
	const obj = JSON.parse(data);

	if (obj.channel === 'internal') {
		const { type, body } = obj.message;
		switch (type) {
			case 'antennaCreated':
				antennas.push(body);
				break;
			case 'antennaUpdated':
				antennas[antennas.findIndex(a => a.id === body.id)] = body;
				break;
			case 'antennaDeleted':
				antennas = antennas.filter(a => a.id !== body.id);
				break;
			default:
				break;
		}
	}
});