Gaykar's picture
added parts
9cb712d
from app.database.models import User, ReceivedEmail, SentEmail
from sqlalchemy.orm import Session
def get_or_create_user(session, email: str):
user = session.query(User).filter_by(email=email).first()
if not user:
user = User(email=email)
session.add(user)
session.commit()
session.refresh(user)
return user
def save_received_email(session: Session, owner_id: int,thread_id: str, state: dict) -> ReceivedEmail:
"""
Persists the incoming email and the agent's initial triage results.
"""
email = ReceivedEmail(
owner_id = owner_id,
thread_id = thread_id,
sender_email = state.get("sender_email_id"),
subject = state.get("sender_subject"),
body = state.get("sender_email_body"),
is_safe = state.get("is_safe"),
)
session.add(email)
# session.flush() # Use flush to get the ID without closing the transaction
session.commit() # Only commit here if this is a standalone operation
return email
def save_sent_email(session: Session, sender_id: int, thread_id: str,state: dict) -> SentEmail:
"""
Persists the final outbound reply sent by the agent.
"""
# Ensure we don't save an empty email if the agent decided not to reply
email = SentEmail(
sender_id = sender_id,
thread_id = thread_id,
recipient_email = state.get("sender_email_id"),
subject = state.get("reply_subject") or f"Re: {state.get('sender_subject')}",
body = state.get("reply_email_body"),
)
session.add(email)
session.commit()
return email