Coverage for microservice_websocket/app/utils/session.py: 100%
22 statements
« prev ^ index » next coverage.py v7.0.0, created at 2022-12-20 14:31 +0000
« prev ^ index » next coverage.py v7.0.0, created at 2022-12-20 14:31 +0000
1from beanie.operators import And, Eq
3from ..services.database import Node, Reading
4from .exceptions import NotFoundException
7async def get_session(nodeID: int, sessionID: int | None) -> list[Reading]:
8 node: Node | None = await Node.find_one(Node.nodeID == nodeID)
9 if node is None:
10 raise NotFoundException("Node")
12 if sessionID is None:
13 latest_reading: Reading | None = await (
14 Reading.find(Reading.node == node.id).sort("-sessionID").first_or_none()
15 )
16 if latest_reading is None:
17 return []
19 sessionID = latest_reading.sessionID
21 readings: list[Reading] = await Reading.find(
22 And(
23 Eq(Reading.node, node.id),
24 Eq(Reading.sessionID, sessionID),
25 )
26 ).to_list()
28 return [x for x in readings]
31async def get_sessions_id(nodeID: int) -> list[int]:
32 node: Node | None = await Node.find_one(Node.nodeID == nodeID)
33 if node is None:
34 raise NotFoundException("Node")
36 sessions: list[Reading] = await Reading.find(Reading.node == node.id).to_list()
38 sessions_id = [x.sessionID for x in sessions]
40 # Remove duplicates
41 sessions_id = list(set(sessions_id))
43 return sessions_id