Skip to content

Commit 945d8b3

Browse files
committed
Create proper files for FilerValue & Filter
1 parent dbaff96 commit 945d8b3

File tree

4 files changed

+74
-39
lines changed

4 files changed

+74
-39
lines changed

Sources/Realtime/RealtimeChannel+AsyncAwait.swift

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,45 +7,6 @@
77

88
import Foundation
99

10-
/// A value that can be used to filter Realtime changes in a channel.
11-
public protocol RealtimeFilterValue {
12-
var rawValue: String { get }
13-
}
14-
15-
extension String: RealtimeFilterValue {
16-
public var rawValue: String { self }
17-
}
18-
19-
extension Int: RealtimeFilterValue {
20-
public var rawValue: String { "\(self)" }
21-
}
22-
23-
extension Double: RealtimeFilterValue {
24-
public var rawValue: String { "\(self)" }
25-
}
26-
27-
extension Bool: RealtimeFilterValue {
28-
public var rawValue: String { "\(self)" }
29-
}
30-
31-
extension UUID: RealtimeFilterValue {
32-
public var rawValue: String { uuidString }
33-
}
34-
35-
extension Date: RealtimeFilterValue {
36-
public var rawValue: String {
37-
let formatter = ISO8601DateFormatter()
38-
formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
39-
return formatter.string(from: self)
40-
}
41-
}
42-
43-
extension Array: RealtimeFilterValue where Element: RealtimeFilterValue {
44-
public var rawValue: String {
45-
map(\.rawValue).joined(separator: ",")
46-
}
47-
}
48-
4910
public enum RealtimeFilter {
5011
case eq(_ column: String, value: any RealtimeFilterValue)
5112
case neq(_ column: String, value: any RealtimeFilterValue)

Sources/Realtime/RealtimeFilter.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
public enum RealtimeFilter {
2+
case eq(_ column: String, value: any RealtimeFilterValue)
3+
case neq(_ column: String, value: any RealtimeFilterValue)
4+
case gt(_ column: String, value: any RealtimeFilterValue)
5+
case gte(_ column: String, value: any RealtimeFilterValue)
6+
case lt(_ column: String, value: any RealtimeFilterValue)
7+
case lte(_ column: String, value: any RealtimeFilterValue)
8+
case `in`(_ column: String, values: [any RealtimeFilterValue])
9+
10+
var value: String {
11+
switch self {
12+
case let .eq(column, value):
13+
return "\(column)=eq.\(value.rawValue)"
14+
case let .neq(column, value):
15+
return "\(column)=neq.\(value.rawValue)"
16+
case let .gt(column, value):
17+
return "\(column)=gt.\(value.rawValue)"
18+
case let .gte(column, value):
19+
return "\(column)=gte.\(value.rawValue)"
20+
case let .lt(column, value):
21+
return "\(column)=lt.\(value.rawValue)"
22+
case let .lte(column, value):
23+
return "\(column)=lte.\(value.rawValue)"
24+
case let .in(column, values):
25+
return "\(column)=in.(\(values.map(\.rawValue)))"
26+
}
27+
}
28+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//
2+
// RealtimeFilterValue.swift
3+
// Supabase
4+
//
5+
// Created by Lucas Abijmil on 19/02/2025.
6+
//
7+
8+
9+
/// A value that can be used to filter Realtime changes in a channel.
10+
public protocol RealtimeFilterValue {
11+
var rawValue: String { get }
12+
}
13+
14+
extension String: RealtimeFilterValue {
15+
public var rawValue: String { self }
16+
}
17+
18+
extension Int: RealtimeFilterValue {
19+
public var rawValue: String { "\(self)" }
20+
}
21+
22+
extension Double: RealtimeFilterValue {
23+
public var rawValue: String { "\(self)" }
24+
}
25+
26+
extension Bool: RealtimeFilterValue {
27+
public var rawValue: String { "\(self)" }
28+
}
29+
30+
extension UUID: RealtimeFilterValue {
31+
public var rawValue: String { uuidString }
32+
}
33+
34+
extension Date: RealtimeFilterValue {
35+
public var rawValue: String {
36+
let formatter = ISO8601DateFormatter()
37+
formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
38+
return formatter.string(from: self)
39+
}
40+
}
41+
42+
extension Array: RealtimeFilterValue where Element: RealtimeFilterValue {
43+
public var rawValue: String {
44+
map(\.rawValue).joined(separator: ",")
45+
}
46+
}

Tests/RealtimeTests/RealtimeFilterValueTests.swift

Whitespace-only changes.

0 commit comments

Comments
 (0)