feat: reworked ttn webhook endpoint logic
This commit is contained in:
@ -1,7 +1,21 @@
|
||||
import { inject, injectable } from "tsyringe";
|
||||
import { WifiScan } from "../models/wifiScan";
|
||||
import { getLocationForWifiMemoized } from "../proxy/wigle";
|
||||
import { WifiScanRepository } from "../repositories/wifiScanRepository";
|
||||
|
||||
interface CreateWifiScanParams {
|
||||
lp_ttn_end_device_uplinks_id: string;
|
||||
mac: string;
|
||||
rssi: number;
|
||||
}
|
||||
|
||||
interface UpdateWifiScanParams {
|
||||
wifi_scan_id: string;
|
||||
mac?: string;
|
||||
rssi?: number;
|
||||
latitude?: number;
|
||||
longitude?: number;
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class WifiScanService {
|
||||
constructor(
|
||||
@ -16,16 +30,28 @@ export class WifiScanService {
|
||||
return this.repository.findById(id);
|
||||
}
|
||||
|
||||
public async createWifiScan(data: Partial<WifiScan>) {
|
||||
return this.repository.create(data);
|
||||
public async createWifiScan(data: CreateWifiScanParams) {
|
||||
const apiResponse = await getLocationForWifiMemoized(data.mac);
|
||||
|
||||
if (apiResponse !== undefined && apiResponse.results.length > 0)
|
||||
return this.repository.create({
|
||||
...data,
|
||||
latitude: apiResponse.results[0].trilat,
|
||||
longitude: apiResponse.results[0].trilong,
|
||||
});
|
||||
}
|
||||
|
||||
public async createWifiScans(data: Partial<WifiScan>[]) {
|
||||
return this.repository.createMany(data);
|
||||
public async createWifiScans(data: CreateWifiScanParams[]) {
|
||||
let wifiScans = await Promise.all(
|
||||
data.map(async (wifi) => {
|
||||
return await this.createWifiScan(wifi);
|
||||
})
|
||||
);
|
||||
return wifiScans.filter((wifi) => wifi !== undefined);
|
||||
}
|
||||
|
||||
public async updateWifiScan(id: string, data: Partial<WifiScan>) {
|
||||
return this.repository.update(id, data);
|
||||
public async updateWifiScan(data: UpdateWifiScanParams) {
|
||||
return this.repository.update(data.wifi_scan_id, data);
|
||||
}
|
||||
|
||||
public async deleteWifiScan(id: string) {
|
||||
|
Reference in New Issue
Block a user