Stream Chat Unreal SDK
Loading...
Searching...
No Matches
Filter.h
1// Copyright 2022 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
7#include "Filter.generated.h"
8
9class FJsonValue;
10class FJsonObject;
11struct FJsonObjectWrapper;
12
17enum class EFilterOperator : uint8
18{
19 None,
20
22 Equal,
23
26
28 Greater,
29
32
34 Less,
35
38
40 In,
41
43 NotIn,
44
46 Query,
47
50
52 Exists,
53
55 And,
56
58 Or,
59
61 Nor,
62
65};
66
73USTRUCT(BlueprintType)
74struct STREAMCHAT_API FFilter
75{
76 GENERATED_BODY()
77
78
79 FFilter() = default;
81 FJsonObjectWrapper ToJsonObjectWrapper() const;
83 FString ToJson() const;
85 TSharedRef<FJsonObject> ToJsonObject() const;
86
88 static FFilter And(const TArray<FFilter>& Filters);
90 static FFilter Or(const TArray<FFilter>& Filters);
92 static FFilter Nor(const TArray<FFilter>& Filters);
93
95 static FFilter Equal(const FName& Field, int32 Value);
97 static FFilter Equal(const FName& Field, float Value);
99 static FFilter Equal(const FName& Field, const TCHAR* Value);
101 static FFilter Equal(const FName& Field, const FString& Value);
103 static FFilter Equal(const FName& Field, bool bValue);
105 static FFilter Equal(const FName& Field, TYPE_OF_NULLPTR);
107 static FFilter NotEqual(const FName& Field, int32 Value);
109 static FFilter NotEqual(const FName& Field, float Value);
111 static FFilter NotEqual(const FName& Field, const TCHAR* Value);
113 static FFilter NotEqual(const FName& Field, const FString& Value);
115 static FFilter NotEqual(const FName& Field, bool bValue);
117 static FFilter NotEqual(const FName& Field, TYPE_OF_NULLPTR);
119 static FFilter Greater(const FName& Field, int32 Value);
121 static FFilter Greater(const FName& Field, float Value);
123 static FFilter Greater(const FName& Field, const FString& Value);
125 static FFilter GreaterOrEqual(const FName& Field, int32 Value);
127 static FFilter GreaterOrEqual(const FName& Field, float Value);
129 static FFilter GreaterOrEqual(const FName& Field, const FString& Value);
131 static FFilter Less(const FName& Field, int32 Value);
133 static FFilter Less(const FName& Field, float Value);
135 static FFilter Less(const FName& Field, const FString& Value);
137 static FFilter LessOrEqual(const FName& Field, int32 Value);
139 static FFilter LessOrEqual(const FName& Field, float Value);
141 static FFilter LessOrEqual(const FName& Field, const FString& Value);
142
144 static FFilter In(const FName& Field, const TArray<int32>& Values);
146 static FFilter In(const FName& Field, const TArray<float>& Values);
148 static FFilter In(const FName& Field, const TArray<FString>& Values);
150 static FFilter NotIn(const FName& Field, const TArray<int32>& Values);
152 static FFilter NotIn(const FName& Field, const TArray<float>& Values);
154 static FFilter NotIn(const FName& Field, const TArray<FString>& Values);
155
157 static FFilter Exists(const FName& Field, bool bValue);
158
160 static FFilter Autocomplete(const FName& Field, const FString& Value);
161
163 static FFilter Empty(const FName& Field);
164
166 bool IsValid() const;
167
168private:
170 FFilter(EFilterOperator Operator, const TArray<FFilter>& Filters);
172 FFilter(EFilterOperator Operator, const FName& Field, const TSharedPtr<FJsonValue>& Value);
173
174 template <class T>
175 static FFilter MakeComparison(EFilterOperator Operator, const FName& Field, T Value);
176 static FFilter MakeComparison(EFilterOperator Operator, const FName& Field, const TCHAR* Value);
177 static FFilter MakeComparison(EFilterOperator Operator, const FName& Field, const FString& Value);
178 static FFilter MakeComparison(EFilterOperator Operator, const FName& Field, bool bValue);
179 static FFilter MakeComparison(EFilterOperator Operator, const FName& Field, TYPE_OF_NULLPTR);
180 template <class T>
181 static FFilter MakeArrayComparison(EFilterOperator Operator, const FName& Field, const TArray<T>& Values);
182 static FFilter MakeArrayComparison(EFilterOperator Operator, const FName& Field, const TArray<FString>& Values);
183
184 EFilterOperator Operator;
185 FName Field;
186 TSharedPtr<FJsonValue> Value;
187 TArray<FFilter> ChildFilters;
188};
@ None
Do nothing.
EFilterOperator
The type of operator of a filter.
Definition: Filter.h:18
@ NotEqual
Matches all values that are not equal to a specified value.
@ Less
Matches values that are less than a specified value.
@ Exists
Matches values that exist/don't exist based on the specified boolean value.
@ Or
Matches at least one of the values specified in an array.
@ Nor
Matches none of the values specified in an array.
@ Query
Matches values by performing text search with the specified value.
@ GreaterOrEqual
Matches values that are greater than a specified value.
@ Autocomplete
Matches values with the specified prefix.
@ Greater
Matches values that are greater than a specified value.
@ LessOrEqual
Matches values that are less than or equal to a specified value.
@ Contains
Matches any list that contains the specified value.
@ And
Matches all the values specified in an array.
@ NotIn
Matches none of the values specified in an array.
@ In
Matches any of the values specified in an array.
@ Equal
Matches values that are equal to a specified value.
A filter used for querying channels.
Definition: Filter.h:75