Browse Source

signal backend

main
gsd 4 months ago
parent
commit
5249be2ea8
  1. 25
      dbService.py
  2. 6
      entities/PacketSignal.py
  3. 9
      webExtensions/packetEndpoint.py

25
dbService.py

@ -2,6 +2,7 @@ from typing import List
from pymongo.asynchronous.database import AsyncDatabase
from typing import List
from entities.PacketGroup import PacketGroup
from entities.PacketSignal import PacketSignal
class NodeDbService:
def __init__(self, dbStore):
@ -92,6 +93,30 @@ class PacketDbService:
def __init__(self, dbStore):
self.dbStore:AsyncDatabase = dbStore
async def findPacketsSignals(self,
after: float = -1,
before: float = -1,
nums: List[int] = []):
pipeline = []
match = {}
if after != -1 or before != -1:
match["ts"] = {}
if after != -1:
match["ts"]["$gt"] = after
if before != -1:
match["ts"]["$lt"] = before
if nums:
if type(nums) != list:
nums = [nums]
match["from"] = {"$in":nums}
pipeline.append({"$match":match})
collection = self.dbStore['packet']
c = await collection.aggregate(pipeline)
l = await c.to_list()
return [PacketSignal(p) for p in l]
async def findPacketsAndGroupCount(self,
after: float = -1,
before: float = -1,

6
entities/PacketSignal.py

@ -0,0 +1,6 @@
__slots__ = ["from", "rx_snr", "rx_rssi", "ts", "hop_start", "hop_limit"]
class PacketSignal:
def __init__(self, data):
for slot in __slots__:
setattr(self, slot, data.get(slot, None))

9
webExtensions/packetEndpoint.py

@ -27,3 +27,12 @@ class WebExtension:
packetsSumNode:bool = Query(False)):
gl = await self.core.dbService.findPacketsAndGroupCount(after, before, nums, portnums, packetsPerNode, packetsSumNode)
return gl
@self.app.get(f"{self.core.context}/packet/signal")
@self.core.authManager.authRequest()
async def findPacketsAndGroupCount(request: Request,
after: float = Query(-1),
before: float = Query(-1),
nums: List[int] = Query([])):
gl = await self.core.dbService.findPacketsSignals(after, before, nums)
return gl
Loading…
Cancel
Save