add metacognitions

This commit is contained in:
hyusap 2023-12-26 13:01:02 -05:00
parent 5f838e0f9c
commit b4a41378ae
4 changed files with 77 additions and 3 deletions

View File

@ -40,10 +40,32 @@ def create_session(db: Session, user_id: str, session: schemas.SessionCreate):
def create_message(db: Session, message: schemas.MessageCreate, session_id: int):
db_message = models.Message(
session_id=session_id,
message_type=message.message_type,
is_user=message.is_user,
content=message.content,
)
db.add(db_message)
db.commit()
db.refresh(db_message)
return db_message
def get_metacognitions(db: Session, message_id: int):
return (
db.query(models.Metacognitions)
.filter(models.Metacognitions.message_id == message_id)
.all()
)
def create_metacognition(
db: Session, metacognition: schemas.MetacognitionsCreate, message_id: int
):
db_metacognition = models.Metacognitions(
message_id=message_id,
metacognition_type=metacognition.metacognition_type,
content=metacognition.content,
)
db.add(db_metacognition)
db.commit()
db.refresh(db_metacognition)
return db_metacognition

View File

@ -47,3 +47,30 @@ def create_message_for_session(
db: Session = Depends(get_db),
):
return crud.create_message(db, message, session_id)
@app.get(
"/users/{user_id}/sessions/{session_id}/messages/{message_id}/metacognitions/",
response_model=list[schemas.Metacognitions],
)
def get_metacognitions_for_message(
user_id: str,
session_id: int,
message_id: int,
db: Session = Depends(get_db),
):
return crud.get_metacognitions(db, message_id)
@app.post(
"/users/{user_id}/sessions/{session_id}/messages/{message_id}/metacognitions/",
response_model=schemas.Metacognitions,
)
def create_metacognition_for_message(
user_id: str,
session_id: int,
message_id: int,
metacognition: schemas.MetacognitionsCreate,
db: Session = Depends(get_db),
):
return crud.create_metacognition(db, metacognition, message_id)

View File

@ -21,10 +21,19 @@ class Message(Base):
__tablename__ = "messages"
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
session_id = Column(Integer, ForeignKey("sessions.id"))
message_type = Column(String, index=True)
is_user = Column(Boolean)
content = Column(String)
session = relationship("Session", back_populates="messages")
metacognitions = relationship("Metacognitions", back_populates="message")
# TODO: add metacognitive data to messages
class Metacognitions(Base):
__tablename__ = "metacognitions"
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
message_id = Column(Integer, ForeignKey("messages.id"))
metacognition_type = Column(String, index=True)
content = Column(String)
message = relationship("Message", back_populates="metacognitions")

View File

@ -3,7 +3,7 @@ from pydantic import BaseModel
class MessageBase(BaseModel):
content: str
message_type: str
is_user: bool
class MessageCreate(MessageBase):
@ -34,3 +34,19 @@ class Session(SessionBase):
class Config:
orm_mode = True
class MetacognitionsBase(BaseModel):
metacognition_type: str
content: str
class MetacognitionsCreate(MetacognitionsBase):
pass
class Metacognitions(MetacognitionsBase):
id: int
class Config:
orm_mode = True