File size: 1,123 Bytes
ab250f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from sqlalchemy import Column, ForeignKey, String, Text, asc
from sqlalchemy.orm import Session, relationship, joinedload

from app.backend.controllers.base_controller import engine
from app.backend.models.base_model import Base


class Message(Base):
    __tablename__ = "messages"
    id = Column("id", String, primary_key=True, unique=True)
    content = Column("text", Text)
    sender = Column("role", String)
    chat_id = Column(String, ForeignKey("chats.id"))
    chat = relationship("Chat", back_populates="messages")
    documents = relationship("Document", back_populates="message")


def add_new_message(id: str, chat_id: str, sender: str, content: str) -> str:
    with Session(autoflush=False, bind=engine) as db:
        new_message = Message(id=id, content=content, sender=sender, chat_id=chat_id)
        db.add(new_message)
        db.commit()
    return id


def get_messages_by_chat_id(id: str) -> list[Message]:
    with Session(autoflush=False, bind=engine) as db:
        return db.query(Message).options(joinedload(Message.documents)).filter(Message.chat_id == id).order_by(asc(Message.created_at))