supabase_rust_realtime/filters.rs
1use serde::Serialize;
2
3/// データベース変更に対するフィルター条件
4#[derive(Debug, Clone, Serialize)]
5pub struct DatabaseFilter {
6 /// フィルター対象のカラム名
7 pub column: String,
8 /// 比較演算子
9 pub operator: FilterOperator,
10 /// 比較する値
11 pub value: serde_json::Value,
12}
13
14/// フィルター演算子
15#[derive(Debug, Clone, PartialEq, Eq, Serialize)] // Added Eq
16pub enum FilterOperator {
17 /// 等しい
18 Eq,
19 /// 等しくない
20 Neq,
21 /// より大きい
22 Gt,
23 /// より大きいか等しい
24 Gte,
25 /// より小さい
26 Lt,
27 /// より小さいか等しい
28 Lte,
29 /// 含む
30 In,
31 // Note: Removed duplicates and less common/clear operators for now
32 // NotIn,
33 // ContainedBy,
34 // Contains,
35 // ContainedByArray,
36 // Like,
37 // ILike,
38}
39
40impl std::fmt::Display for FilterOperator {
41 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42 let s = match self {
43 FilterOperator::Eq => "eq",
44 FilterOperator::Neq => "neq",
45 FilterOperator::Gt => "gt",
46 FilterOperator::Gte => "gte",
47 FilterOperator::Lt => "lt",
48 FilterOperator::Lte => "lte",
49 FilterOperator::In => "in",
50 // FilterOperator::NotIn => "not.in",
51 // FilterOperator::ContainedBy => "contained_by",
52 // FilterOperator::Contains => "contains",
53 // FilterOperator::ContainedByArray => "contained_by_array",
54 // FilterOperator::Like => "like",
55 // FilterOperator::ILike => "ilike",
56 };
57 write!(f, "{}", s)
58 }
59}