Added nested create_eventmessages
All checks were successful
checks-impure / test (pull_request) Successful in 26s
checks / test (pull_request) Successful in 1m15s

This commit is contained in:
2024-01-18 18:10:22 +01:00
parent 36004c6151
commit 17df0a6ac1
10 changed files with 304 additions and 34 deletions

View File

@@ -1,12 +1,15 @@
import logging
import time
from typing import Any, List
import typing
from typing import Any, List, Optional
import httpx
from fastapi import APIRouter, BackgroundTasks, Depends, Query
from fastapi.responses import HTMLResponse
from fastapi.responses import HTMLResponse, JSONResponse
from sqlalchemy.orm import Session
from clan_cli.config import ap_url, c1_url, c2_url, dlg_url, msg_type_to_label
from ...errors import ClanError
from .. import sql_crud, sql_db, sql_models
from ..schemas import (
@@ -98,10 +101,8 @@ def get_service_by_uuid(
skip: int = 0,
limit: int = 100,
db: Session = Depends(sql_db.get_db),
) -> sql_models.Service:
) -> Optional[sql_models.Service]:
service = sql_crud.get_service_by_uuid(db, uuid=uuid)
if service is None:
raise ClanError(f"Service with uuid '{uuid}' not found")
return service
@@ -163,10 +164,8 @@ def get_all_entities(
def get_entity_by_did(
entity_did: str = "did:sov:test:120",
db: Session = Depends(sql_db.get_db),
) -> sql_models.Entity:
) -> Optional[sql_models.Entity]:
entity = sql_crud.get_entity_by_name_or_did(db, name=entity_did)
if entity is None:
raise ClanError(f"Entity with did '{entity_did}' not found")
return entity
@@ -335,16 +334,46 @@ def create_eventmessage(
return sql_crud.create_eventmessage(db, eventmsg)
@typing.no_type_check
@router.get(
"/api/v1/event_messages",
response_model=List[Eventmessage],
response_class=JSONResponse,
tags=[Tags.eventmessages],
)
def get_all_eventmessages(
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
) -> List[sql_models.Eventmessage]:
) -> JSONResponse:
eventmessages = sql_crud.get_eventmessages(db, skip=skip, limit=limit)
return eventmessages
result: dict[int, dict[int, List[Eventmessage]]] = {}
for msg in eventmessages:
msg_name = msg_type_to_label.get(msg.msg_type, None)
src_name = sql_crud.get_entity_by_did(db, msg.src_did)
src_name = src_name if src_name is None else src_name.name
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
if result.get(msg.group) is None:
result[msg.group] = {}
if result[msg.group].get(msg.group_id) is None:
result[msg.group][msg.group_id] = []
result[msg.group][msg.group_id].append(
Eventmessage(
id=msg.id,
timestamp=msg.timestamp,
group=msg.group,
group_id=msg.group_id,
msg_type=msg.msg_type,
msg_type_name=msg_name,
src_did=msg.src_did,
src_name=src_name,
des_did=msg.des_did,
des_name=des_name,
msg=msg.msg,
).dict()
)
return JSONResponse(content=result, status_code=200)
##############################
@@ -354,8 +383,6 @@ def get_all_eventmessages(
##############################
@router.get("/emulate", response_class=HTMLResponse)
def get_emulated_enpoints() -> HTMLResponse:
from clan_cli.config import ap_url, c1_url, c2_url, dlg_url
html_content = f"""
<html>
<head>