feat(api): sessions search fixed isNot index
feat(api): sessions search by metadata use source instead of key
This commit is contained in:
parent
2291559973
commit
8ee4889a5e
2 changed files with 9 additions and 7 deletions
|
|
@ -384,12 +384,12 @@ def search_query_parts(data, error_status, errors_only, favorite_only, issue, pr
|
|||
meta_keys = metadata.get(project_id=project_id)
|
||||
meta_keys = {m["key"]: m["index"] for m in meta_keys}
|
||||
# op = __get_sql_operator(f.operator)
|
||||
if f.key in meta_keys.keys():
|
||||
if f.source in meta_keys.keys():
|
||||
extra_constraints.append(
|
||||
_multiple_conditions(f"s.{metadata.index_to_colname(meta_keys[f.key])} {op} %({f_k})s",
|
||||
_multiple_conditions(f"s.{metadata.index_to_colname(meta_keys[f.source])} {op} %({f_k})s",
|
||||
f.value, is_not=is_not, value_key=f_k))
|
||||
ss_constraints.append(
|
||||
_multiple_conditions(f"ms.{metadata.index_to_colname(meta_keys[f.key])} {op} %({f_k})s",
|
||||
_multiple_conditions(f"ms.{metadata.index_to_colname(meta_keys[f.source])} {op} %({f_k})s",
|
||||
f.value, is_not=is_not, value_key=f_k))
|
||||
elif filter_type in [schemas.FilterType.user_id, schemas.FilterType.user_id_ios]:
|
||||
# op = __get_sql_operator(f.operator)
|
||||
|
|
@ -682,7 +682,7 @@ def search_query_parts(data, error_status, errors_only, favorite_only, issue, pr
|
|||
AND start_ts >= %(startDate)s
|
||||
AND start_ts <= %(endDate)s
|
||||
AND duration IS NOT NULL
|
||||
) {"" if or_events else ("AS event_{event_index}" + ("ON(TRUE)" if event_index > 0 else ""))}\
|
||||
) {"" if or_events else (f"AS event_{event_index}" + ("ON(TRUE)" if event_index > 0 else ""))}\
|
||||
""")
|
||||
else:
|
||||
events_query_from.append(f"""\
|
||||
|
|
|
|||
|
|
@ -502,16 +502,18 @@ class _SessionSearchEventSchema(_SessionSearchEventRaw):
|
|||
class _SessionSearchFilterSchema(__MixedSearchFilter):
|
||||
is_event: bool = Field(False, const=False)
|
||||
custom: Optional[List[str]] = Field(None)
|
||||
key: Optional[str] = Field(None)
|
||||
value: Union[Optional[Union[IssueType, PlatformType, int, str]],
|
||||
Optional[List[Union[IssueType, PlatformType, int, str]]]] = Field(...)
|
||||
type: FilterType = Field(...)
|
||||
operator: Union[SearchEventOperator, MathOperator] = Field(...)
|
||||
source: Optional[ErrorSource] = Field(default=ErrorSource.js_exception)
|
||||
source: Optional[Union[ErrorSource, str]] = Field(default=ErrorSource.js_exception)
|
||||
|
||||
@root_validator
|
||||
def filter_validator(cls, values):
|
||||
if values.get("type") == FilterType.issue:
|
||||
if values.get("type") == FilterType.metadata:
|
||||
assert values.get("source") is not None and len(values["source"]) > 0, \
|
||||
"must specify a valid 'source' for metadata filter"
|
||||
elif values.get("type") == FilterType.issue:
|
||||
for v in values.get("value"):
|
||||
assert isinstance(v, IssueType), f"value should be of type IssueType for {values.get('type')} filter"
|
||||
elif values.get("type") == FilterType.platform:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue