OpencodeMessage
What it is
- A SQLAlchemy ORM model representing a message in an "opencode" session.
- Maps to the
opencode_messagesdatabase table.
Public API
- Class:
OpencodeMessage- ORM-mapped fields:
id: str— Primary key (UUID string, auto-generated).session_id: str— Foreign key toopencode_sessions.id.role: str— Message role (stored as text).content: str | None— Optional message content (text, nullable).parts: list[dict[str, Any]]— JSON payload parts (defaults to empty list).created_at: datetime— Timestamp (timezone-aware, defaults to current UTC time).
- ORM-mapped fields:
Configuration/Dependencies
- SQLAlchemy: uses
mapped_column,Mapped, and column typesString,Text,JSON,DateTime, andForeignKey. - Base class:
OpencodeBase(fromnaas_abi_core.models.opencode.Base) provides SQLAlchemy declarative base configuration. - Database schema:
- Requires a table
opencode_sessionswith primary key columnidto satisfysession_idforeign key.
- Requires a table
Usage
from sqlalchemy.orm import Session
from naas_abi_core.models.opencode.OpencodeMessage import OpencodeMessage
def create_message(db: Session, session_id: str) -> OpencodeMessage:
msg = OpencodeMessage(
session_id=session_id,
role="user",
content="Hello",
parts=[{"type": "text", "text": "Hello"}],
)
db.add(msg)
db.commit()
db.refresh(msg)
return msg
Caveats
partsmust be JSON-serializable (list of dicts with JSON-compatible values).created_atis set automatically to the current UTC time unless explicitly provided.