add event msg with populate and the right table in swagger

This commit is contained in:
Georg-Stahn
2024-01-08 20:19:07 +01:00
parent 5bd84b8532
commit 8fba3e6a5e
18 changed files with 1079 additions and 8 deletions

View File

@@ -12,6 +12,8 @@ from .. import sql_crud, sql_db, sql_models
from ..schemas import (
Entity,
EntityCreate,
Eventmessage,
EventmessageCreate,
Resolution,
Service,
ServiceCreate,
@@ -262,3 +264,29 @@ async def get_all_resolutions(
id=1,
)
]
#########################
# #
# Eventmessage #
# #
#########################
@router.post("/api/v1/send_msg", response_model=Eventmessage, tags=[Tags.eventmessages])
async def create_eventmessage(
eventmsg: EventmessageCreate, db: Session = Depends(sql_db.get_db)
) -> EventmessageCreate:
return sql_crud.create_eventmessage(db, eventmsg)
@router.get(
"/api/v1/event_messages",
response_model=List[Eventmessage],
tags=[Tags.eventmessages],
)
async def get_all_eventmessages(
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
) -> List[sql_models.Eventmessage]:
eventmessages = sql_crud.get_eventmessages(db, skip=skip, limit=limit)
return eventmessages

View File

@@ -104,3 +104,30 @@ class Resolution(ResolutionCreate):
class Config:
orm_mode = True
#########################
# #
# Eventmessage #
# #
#########################
class EventmessageBase(BaseModel):
id: int = Field(..., example=123456)
timestamp: int = Field(..., example=1234123413)
group: int = Field(..., example=1) # event group type (for the label)
group_id: int = Field(
..., example=12345
) # specific to one group needed to enable visually nested groups
msg_type: int = Field(..., example=1) # message type for the label
src_did: str = Field(..., example="did:sov:test:2234")
des_did: str = Field(..., example="did:sov:test:1234")
class EventmessageCreate(EventmessageBase):
msg: dict = Field(..., example={"optinal": "values"}) # optional
pass
class Eventmessage(EventmessageCreate):
class Config:
orm_mode = True

View File

@@ -136,3 +136,26 @@ def delete_entity_by_did(db: Session, did: str) -> None:
def delete_entity_by_did_recursive(db: Session, did: str) -> None:
delete_service_by_entity_did(db, did)
delete_entity_by_did(db, did)
#########################
# #
# Eventmessage #
# #
#########################
def create_eventmessage(
db: Session, eventmsg: schemas.EventmessageCreate
) -> sql_models.Eventmessage:
db_eventmessage = sql_models.Eventmessage(**eventmsg.dict())
db.add(db_eventmessage)
db.commit()
db.refresh(db_eventmessage)
return db_eventmessage
def get_eventmessages(
db: Session, skip: int = 0, limit: int = 100
) -> List[sql_models.Eventmessage]:
return db.query(sql_models.Eventmessage).offset(skip).limit(limit).all()

View File

@@ -1,11 +1,4 @@
from sqlalchemy import (
JSON,
Boolean,
Column,
ForeignKey,
String,
Text,
)
from sqlalchemy import JSON, Boolean, Column, ForeignKey, Integer, String, Text
from sqlalchemy.orm import relationship
from .sql_db import Base
@@ -55,3 +48,23 @@ class Service(ServiceAbstract):
# One entity can have many services
entity = relationship("Entity", back_populates="services")
entity_did = Column(String, ForeignKey("entities.did"))
class Eventmessage(Base):
__tablename__ = "eventmessages"
## Queryable body ##
id = Column(Integer, primary_key=True, index=True)
timestamp = Column(Integer, unique=True, index=True)
group = Column(Integer, index=True)
group_id = Column(Integer, index=True)
msg_type = Column(Integer, index=True) # message type for the label
src_did = Column(String, index=True)
des_did = Column(String, index=True)
## Non queryable body ##
# In here we deposit: Network, Roles, Visible, etc.
msg = Column(JSON)
## Relations ##
# One entity can send many messages

View File

@@ -7,6 +7,7 @@ class Tags(Enum):
entities = "entities"
repositories = "repositories"
resolutions = "resolution"
eventmessages = "eventmessages"
def __str__(self) -> str:
return self.value
@@ -29,4 +30,8 @@ tags_metadata: List[Dict[str, Any]] = [
"name": str(Tags.resolutions),
"description": "Operations on a resolution.",
},
{
"name": str(Tags.eventmessages),
"description": "Operations for event messages.",
},
]