kopia lustrzana https://github.com/bugout-dev/moonstream
Add interfaces response.
rodzic
0a7a5a7d99
commit
39047c8022
|
@ -302,3 +302,7 @@ class QueryInfoResponse(BaseModel):
|
|||
class QueryCopy(BaseModel):
|
||||
query_id: str
|
||||
name: str
|
||||
|
||||
class SuggestedQueriesResponse(BaseModel):
|
||||
interfaces: Dict[str, Any] = Field(default_factory=dict)
|
||||
queries: List[Any] = Field(default_factory=list)
|
|
@ -155,6 +155,67 @@ async def create_query_handler(
|
|||
return entry
|
||||
|
||||
|
||||
|
||||
@router.get("/templates", tags=["queries"])
|
||||
def get_suggested_queries(
|
||||
request: Request,
|
||||
supported_interfaces: Optional[List[str]] = None,
|
||||
address: Optional[str] = None,
|
||||
title: Optional[str] = None,
|
||||
limit: int = 10,
|
||||
) -> data.SuggestedQueriesResponse:
|
||||
"""
|
||||
Return set of suggested queries for user
|
||||
"""
|
||||
|
||||
filters = ["tag:approved", "tag:query_template"]
|
||||
|
||||
if supported_interfaces:
|
||||
filters.extend(
|
||||
[f"?#interface:{interface}" for interface in supported_interfaces]
|
||||
)
|
||||
|
||||
if address:
|
||||
filters.append(f"?#address:{address}")
|
||||
|
||||
if title:
|
||||
filters.append(title)
|
||||
|
||||
query = " ".join(filters)
|
||||
|
||||
try:
|
||||
queries = bc.search(
|
||||
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
||||
journal_id=MOONSTREAM_QUERIES_JOURNAL_ID,
|
||||
query=query,
|
||||
limit=100,
|
||||
timeout=5,
|
||||
)
|
||||
except BugoutResponseException as e:
|
||||
raise MoonstreamHTTPException(status_code=e.status_code, detail=e.detail)
|
||||
except Exception as e:
|
||||
raise MoonstreamHTTPException(status_code=500, internal_error=e)
|
||||
|
||||
# make split by interfaces
|
||||
|
||||
interfaces: Dict[str, Any] = {}
|
||||
|
||||
for entry in queries.results:
|
||||
for tag in entry.tags:
|
||||
if tag.startswith("interface:"):
|
||||
interface = tag.split(":")[1]
|
||||
|
||||
if interface not in interfaces:
|
||||
interfaces[interface] = []
|
||||
|
||||
interfaces[interface].append(entry)
|
||||
|
||||
return data.SuggestedQueriesResponse(
|
||||
queries=queries.results,
|
||||
interfaces=interfaces,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{query_name}/query", tags=["queries"])
|
||||
async def get_query_handler(
|
||||
request: Request, query_name: str
|
||||
|
@ -516,63 +577,6 @@ async def remove_query_handler(
|
|||
return entry
|
||||
|
||||
|
||||
@router.get("/templates", tags=["queries"])
|
||||
def get_suggested_queries(
|
||||
request: Request,
|
||||
supported_interfaces: Optional[List[str]] = None,
|
||||
address: Optional[str] = None,
|
||||
title: Optional[str] = None,
|
||||
limit: int = 10,
|
||||
) -> Any:
|
||||
"""
|
||||
Return set of suggested queries for user
|
||||
"""
|
||||
|
||||
filters = ["tag:approved", "tag:query_template"]
|
||||
|
||||
if supported_interfaces:
|
||||
filters.extend(
|
||||
[f"?#interface:{interface}" for interface in supported_interfaces]
|
||||
)
|
||||
|
||||
if address:
|
||||
filters.append(f"?#address:{address}")
|
||||
|
||||
if title:
|
||||
filters.append(title)
|
||||
|
||||
query = " ".join(filters)
|
||||
|
||||
try:
|
||||
queries = bc.search(
|
||||
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
|
||||
journal_id=MOONSTREAM_QUERIES_JOURNAL_ID,
|
||||
query=query,
|
||||
limit=100,
|
||||
timeout=5,
|
||||
)
|
||||
except BugoutResponseException as e:
|
||||
raise MoonstreamHTTPException(status_code=e.status_code, detail=e.detail)
|
||||
except Exception as e:
|
||||
raise MoonstreamHTTPException(status_code=500, internal_error=e)
|
||||
|
||||
# make split by interfaces
|
||||
|
||||
interfaces: Dict[str, Any] = {}
|
||||
|
||||
for entry in queries.results:
|
||||
for tag in entry.tags:
|
||||
if tag.startswith("interface:"):
|
||||
interface = tag.split(":")[1]
|
||||
|
||||
if interface not in interfaces:
|
||||
interfaces[interface] = []
|
||||
|
||||
interfaces[interface].append(entry)
|
||||
|
||||
return interfaces
|
||||
|
||||
|
||||
@router.post("/copy", tags=["queries"])
|
||||
def copy_query(request: Request, query_copy: data.QueryCopy) -> BugoutJournalEntry:
|
||||
"""
|
||||
|
|
Ładowanie…
Reference in New Issue