feat(backend,frontend): search everywhere in buttons, links and message data, a jump from search or an alert lights up the found words and buttons
This commit is contained in:
1 parent
acfa726e61
commit
d660079c02
21 files changed
+840
-76
No files matched your search
@@ -10,7 +10,10 @@ _EPOCH = datetime(1970, 1, 1, tzinfo=UTC)
|
||||
_MICROSECOND = timedelta(microseconds=1)
|
||||
|
||||
ChatKind = Literal["private", "group", "channel"]
|
||||
HitSource = Literal["text", "stt", "version"]
|
||||
HitSource = Literal["text", "stt", "version", "data"]
|
||||
FoundWhere = Literal[
|
||||
"text", "button", "link", "forward", "reply", "file", "preview", "data"
|
||||
]
|
||||
|
||||
|
||||
def encode_cursor(date: datetime, chat_id: int, message_id: int) -> str:
|
||||
@@ -34,6 +37,7 @@ class SearchFilters(BaseModel):
|
||||
date_from: datetime | None = None
|
||||
date_to: datetime | None = None
|
||||
regex: str | None = None
|
||||
everywhere: bool = False
|
||||
cursor: str | None = None
|
||||
limit: int = DEFAULT_LIMIT
|
||||
|
||||
@@ -45,6 +49,13 @@ class SearchFilters(BaseModel):
|
||||
return value
|
||||
|
||||
|
||||
class Found(BaseModel):
|
||||
where: FoundWhere
|
||||
path: str
|
||||
value: str
|
||||
button: str | None = None
|
||||
|
||||
|
||||
class SearchHit(BaseModel):
|
||||
chat_id: int
|
||||
message_id: int
|
||||
@@ -56,12 +67,14 @@ class SearchHit(BaseModel):
|
||||
edited_at: datetime | None
|
||||
deleted_at: datetime | None
|
||||
source: HitSource
|
||||
extracted_text: str | None
|
||||
version_text: str | None
|
||||
version_at: datetime | None
|
||||
extracted_text: str | None = None
|
||||
version_text: str | None = None
|
||||
version_at: datetime | None = None
|
||||
found: Found | None = None
|
||||
|
||||
|
||||
class SearchPage(BaseModel):
|
||||
hits: list[SearchHit]
|
||||
next_cursor: str | None
|
||||
terms: list[str]
|
||||
scanned_to: datetime | None = None
|
||||
Reference in new issue
Block a user