Skip to content

store

AttachmentStore

Bases: ABC, Generic[TContext]

Source code in chatkit/store.py
class AttachmentStore(ABC, Generic[TContext]):
    @abstractmethod
    async def delete_attachment(self, attachment_id: str, context: TContext) -> None:
        pass

    async def create_attachment(
        self, input: AttachmentCreateParams, context: TContext
    ) -> Attachment:
        raise NotImplementedError(
            f"{type(self).__name__} must override create_attachment() to support two-phase file upload"
        )

    def generate_attachment_id(self, mime_type: str, context: TContext) -> str:
        """Return a new identifier for a file. Override this method to customize file ID generation."""

        return default_generate_id("attachment")

generate_attachment_id

generate_attachment_id(
    mime_type: str, context: TContext
) -> str

Return a new identifier for a file. Override this method to customize file ID generation.

Source code in chatkit/store.py
def generate_attachment_id(self, mime_type: str, context: TContext) -> str:
    """Return a new identifier for a file. Override this method to customize file ID generation."""

    return default_generate_id("attachment")

Store

Bases: ABC, Generic[TContext]

Source code in chatkit/store.py
class Store(ABC, Generic[TContext]):
    def generate_thread_id(self, context: TContext) -> str:
        """Return a new identifier for a thread. Override this method to customize thread ID generation."""

        return default_generate_id("thread")

    def generate_item_id(
        self, item_type: StoreItemType, thread: ThreadMetadata, context: TContext
    ) -> str:
        """Return a new identifier for a thread item. Override this method to customize item ID generation."""

        return default_generate_id(item_type)

    @abstractmethod
    async def load_thread(self, thread_id: str, context: TContext) -> ThreadMetadata:
        pass

    @abstractmethod
    async def save_thread(self, thread: ThreadMetadata, context: TContext) -> None:
        pass

    @abstractmethod
    async def load_thread_items(
        self,
        thread_id: str,
        after: str | None,
        limit: int,
        order: str,
        context: TContext,
    ) -> Page[ThreadItem]:
        pass

    @abstractmethod
    async def save_attachment(self, attachment: Attachment, context: TContext) -> None:
        pass

    @abstractmethod
    async def load_attachment(
        self, attachment_id: str, context: TContext
    ) -> Attachment:
        pass

    @abstractmethod
    async def delete_attachment(self, attachment_id: str, context: TContext) -> None:
        pass

    @abstractmethod
    async def load_threads(
        self,
        limit: int,
        after: str | None,
        order: str,
        context: TContext,
    ) -> Page[ThreadMetadata]:
        pass

    @abstractmethod
    async def add_thread_item(
        self, thread_id: str, item: ThreadItem, context: TContext
    ) -> None:
        pass

    @abstractmethod
    async def save_item(
        self, thread_id: str, item: ThreadItem, context: TContext
    ) -> None:
        pass

    @abstractmethod
    async def load_item(
        self, thread_id: str, item_id: str, context: TContext
    ) -> ThreadItem:
        pass

    @abstractmethod
    async def delete_thread(self, thread_id: str, context: TContext) -> None:
        pass

    @abstractmethod
    async def delete_thread_item(
        self, thread_id: str, item_id: str, context: TContext
    ) -> None:
        pass

generate_thread_id

generate_thread_id(context: TContext) -> str

Return a new identifier for a thread. Override this method to customize thread ID generation.

Source code in chatkit/store.py
def generate_thread_id(self, context: TContext) -> str:
    """Return a new identifier for a thread. Override this method to customize thread ID generation."""

    return default_generate_id("thread")

generate_item_id

generate_item_id(
    item_type: StoreItemType,
    thread: ThreadMetadata,
    context: TContext,
) -> str

Return a new identifier for a thread item. Override this method to customize item ID generation.

Source code in chatkit/store.py
def generate_item_id(
    self, item_type: StoreItemType, thread: ThreadMetadata, context: TContext
) -> str:
    """Return a new identifier for a thread item. Override this method to customize item ID generation."""

    return default_generate_id(item_type)