generated from Luis/nextjs-python-web-template
add event msg with populate and the right table in swagger
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.",
|
||||
},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user