File size: 1,461 Bytes
246d201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from __future__ import annotations

from abc import ABC, abstractmethod

from openhands.core.config.app_config import AppConfig
from openhands.storage.data_models.conversation_metadata import ConversationMetadata
from openhands.storage.data_models.conversation_metadata_result_set import (
    ConversationMetadataResultSet,
)


class ConversationStore(ABC):
    """

    Storage for conversation metadata. May or may not support multiple users depending on the environment

    """

    @abstractmethod
    async def save_metadata(self, metadata: ConversationMetadata):
        """Store conversation metadata"""

    @abstractmethod
    async def get_metadata(self, conversation_id: str) -> ConversationMetadata:
        """Load conversation metadata"""

    @abstractmethod
    async def delete_metadata(self, conversation_id: str) -> None:
        """delete conversation metadata"""

    @abstractmethod
    async def exists(self, conversation_id: str) -> bool:
        """Check if conversation exists"""

    @abstractmethod
    async def search(

        self,

        page_id: str | None = None,

        limit: int = 20,

    ) -> ConversationMetadataResultSet:
        """Search conversations"""

    @classmethod
    @abstractmethod
    async def get_instance(

        cls, config: AppConfig, user_id: str | None

    ) -> ConversationStore:
        """Get a store for the user represented by the token given"""