Fixed incorrect grouping, in eventmessages

This commit is contained in:
2024-01-24 22:08:53 +01:00
parent 7901712c4c
commit dcaecba393
3 changed files with 48 additions and 31 deletions

View File

@@ -370,12 +370,16 @@ def get_all_eventmessages(
) -> PlainTextResponse: ) -> PlainTextResponse:
# SQL sorts eventmessages by timestamp, so we don't need to sort them here # SQL sorts eventmessages by timestamp, so we don't need to sort them here
eventmessages = sql_crud.get_eventmessages(db, skip=skip, limit=limit) eventmessages = sql_crud.get_eventmessages(db, skip=skip, limit=limit)
result: dict[int, dict[int, List[Eventmessage]]] = OrderedDict() cresult: List[OrderedDict[int, OrderedDict[int, List[Eventmessage]]]] = []
for msg in eventmessages: cresult_idx = 0
cresult.append(OrderedDict())
for idx, msg in enumerate(eventmessages):
# Use the group_type_to_label from config.py to get the group name and msg_type name # Use the group_type_to_label from config.py to get the group name and msg_type name
group = group_type_to_label.get(msg.group, None) group = group_type_to_label.get(msg.group, None)
group_name = group.get("name", None) if group is not None else str(msg.group) group_name = (
str(group.get("name", None)) if group is not None else str(msg.group)
)
msg_type_name = ( msg_type_name = (
group.get(msg.msg_type, None) if group is not None else str(msg.msg_type) group.get(msg.msg_type, None) if group is not None else str(msg.msg_type)
) )
@@ -386,14 +390,26 @@ def get_all_eventmessages(
des_name = sql_crud.get_entity_by_did(db, msg.des_did) des_name = sql_crud.get_entity_by_did(db, msg.des_did)
des_name = des_name if des_name is None else des_name.name des_name = des_name if des_name is None else des_name.name
# Initialize the result array and dictionary result = cresult[cresult_idx]
if result.get(group_name) is None:
result[group_name] = OrderedDict() if result.get("group_name") is None:
if result[group_name].get(msg.group_id) is None: # Initialize the result array and dictionary
result[group_name][msg.group_id] = [] result["group_name"] = group_name
elif result["group_name"] != group_name:
# If the group name changed, create a new result array and dictionary
cresult_idx += 1
cresult.append(OrderedDict())
result = cresult[cresult_idx]
result["group_name"] = group_name
if result.get("groups") is None:
result["groups"] = OrderedDict()
if result["groups"].get(msg.group_id) is None:
result["groups"][msg.group_id] = []
# Append the eventmessage to the result array # Append the eventmessage to the result array
result_arr = result[group_name][msg.group_id] result_arr = result["groups"][msg.group_id]
result_arr.append( result_arr.append(
Eventmessage( Eventmessage(
id=msg.id, id=msg.id,
@@ -411,7 +427,7 @@ def get_all_eventmessages(
).dict() ).dict()
) )
return PlainTextResponse(content=json.dumps(result, indent=4), status_code=200) return PlainTextResponse(content=json.dumps(cresult, indent=4), status_code=200)
############################## ##############################

View File

@@ -101,7 +101,7 @@ class Eventmessage(Base):
## Queryable body ## ## Queryable body ##
# Primary Key # Primary Key
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
timestamp = Column(Integer, unique=True, index=True) timestamp = Column(Integer, index=True)
group = Column(Integer, index=True) group = Column(Integer, index=True)
group_id = Column(Integer, index=True) group_id = Column(Integer, index=True)
msg_type = Column(Integer, index=True) # message type for the label msg_type = Column(Integer, index=True) # message type for the label

View File

@@ -122,49 +122,50 @@ def test_create_services(api_client: ApiClient) -> None:
random.seed(77) random.seed(77)
def create_eventmessages(num: int = 2) -> list[EventmessageCreate]: def create_eventmessages(num: int = 4) -> list[EventmessageCreate]:
res = [] res = []
starttime = int(time.time()) starttime = int(time.time())
for i in range(num): for idx in range(num):
group_id = i % 5 + random.getrandbits(6) i2 = idx + 1
group_id = i2 % 5 + random.getrandbits(6) + 1
em_req_send = EventmessageCreate( em_req_send = EventmessageCreate(
timestamp=starttime + i * 10, timestamp=starttime + i2 * 10,
group=i % 5, group=i2 % 5,
group_id=group_id, group_id=group_id,
msg_type=1, msg_type=1,
src_did=f"did:sov:test:12{i}", src_did=f"did:sov:test:12{i2}",
des_did=f"did:sov:test:12{i+1}", des_did=f"did:sov:test:12{i2+1}",
msg={}, msg={},
) )
res.append(em_req_send) res.append(em_req_send)
em_req_rec = EventmessageCreate( em_req_rec = EventmessageCreate(
timestamp=starttime + (i * 10) + 2, timestamp=starttime + (i2 * 10) + 2,
group=i % 5, group=i2 % 5,
group_id=group_id, group_id=group_id,
msg_type=2, msg_type=2,
src_did=f"did:sov:test:12{i}", src_did=f"did:sov:test:12{i2}",
des_did=f"did:sov:test:12{i+1}", des_did=f"did:sov:test:12{i2+1}",
msg={}, msg={},
) )
res.append(em_req_rec) res.append(em_req_rec)
group_id = i % 5 + random.getrandbits(6) group_id = i2 % 5 + random.getrandbits(6)
em_res_send = EventmessageCreate( em_res_send = EventmessageCreate(
timestamp=starttime + i * 10 + 4, timestamp=starttime + i2 * 10 + 4,
group=i % 5, group=i2 % 5,
group_id=group_id, group_id=group_id,
msg_type=3, msg_type=3,
src_did=f"did:sov:test:12{i+1}", src_did=f"did:sov:test:12{i2+1}",
des_did=f"did:sov:test:12{i}", des_did=f"did:sov:test:12{i2}",
msg={}, msg={},
) )
res.append(em_res_send) res.append(em_res_send)
em_res_rec = EventmessageCreate( em_res_rec = EventmessageCreate(
timestamp=starttime + (i * 10) + 8, timestamp=starttime + (i2 * 10) + 8,
group=i % 5, group=i2 % 5,
group_id=group_id, group_id=group_id,
msg_type=4, msg_type=4,
src_did=f"did:sov:test:12{i+1}", src_did=f"did:sov:test:12{i2+1}",
des_did=f"did:sov:test:12{i}", des_did=f"did:sov:test:12{i2}",
msg={}, msg={},
) )
res.append(em_res_rec) res.append(em_res_rec)