3struct FilterQuery: Codable, Hashable, Sendable {
5 var filterQuery: String?
6 var filterBuilder: JSONValue?
8 enum CodingKeys: String, CodingKey {
9 case filterType = "filter_type"
10 case filterQuery = "filter_query"
11 case filterBuilder = "filter_builder"
14 init(filterType: String = "sql", filterQuery: String? = nil, filterBuilder: JSONValue? = nil) {
15 self.filterType = filterType
16 self.filterQuery = filterQuery
17 self.filterBuilder = filterBuilder
20 init(from decoder: Decoder) throws {
21 let container = try decoder.container(keyedBy: CodingKeys.self)
22 filterType = (try? container.decode(String.self, forKey: .filterType)) ?? "sql"
23 filterQuery = try? container.decode(String.self, forKey: .filterQuery)
24 filterBuilder = try? container.decode(JSONValue.self, forKey: .filterBuilder)
28struct ParseableFilter: Identifiable, Codable, Hashable, Sendable {
30 var filterName: String
31 var streamName: String
32 var query: FilterQuery
35 var timeFilter: JSONValue?
38 filterId ?? "\(streamName):\(filterName)"
41 enum CodingKeys: String, CodingKey {
42 case filterId = "filter_id"
43 case filterName = "filter_name"
44 case streamName = "stream_name"
47 case userId = "user_id"
48 case timeFilter = "time_filter"
52 filterId: String? = nil,
56 version: String? = nil,
57 userId: String? = nil,
58 timeFilter: JSONValue? = nil
60 self.filterId = filterId
61 self.filterName = filterName
62 self.streamName = streamName
64 self.version = version
66 self.timeFilter = timeFilter
69 init(from decoder: Decoder) throws {
70 let container = try decoder.container(keyedBy: CodingKeys.self)
71 filterId = try? container.decode(String.self, forKey: .filterId)
72 filterName = try container.decode(String.self, forKey: .filterName)
73 streamName = try container.decode(String.self, forKey: .streamName)
74 query = try container.decode(FilterQuery.self, forKey: .query)
75 version = try? container.decode(String.self, forKey: .version)
76 userId = try? container.decode(String.self, forKey: .userId)
77 timeFilter = try? container.decode(JSONValue.self, forKey: .timeFilter)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list