Skip to content

Commit 4c0d2a8

Browse files
enhancement: saved filters (#828)
updated json for filters with sql - ``` { "version": "v1", "stream_name": "mystream", "filter_name": "My Filter", "filter_id": "12345r", "query": { "filter_type": "sql", "filter_query": "SELECT * FROM mystream WHERE datetime = '2019-01-01T00:00:00Z' OR datetime = '2019-01-02T00:00:00Z' AND datetime = '2019-01-03T00:00:00Z'" }, "time_filter": { "from": "<utc-timestamp>", "to": "<utc-timestamp>" } } ``` updated json for filters with builder - ``` { "version": "v1", "stream_name": "mystream", "filter_name": "My Filter", "filter_id": "12345r", "query": { "filter_type": "builder", "filter_builder": { "id": "root", "combinator": "or", "rules": [ { "id": "ruleset-K8MABA", "combinator": "or", "rules": [ { "id": "rule-BUt9yY", "field": "datetime", "value": "asadadsdsad", "operator": "=" }, { "id": "rule-zC7EF9", "field": "datetime", "value": "ssasassasas", "operator": "=" } ] }, { "id": "ruleset-UwqIcb", "combinator": "and", "rules": [ { "id": "rule-tXgB5C", "field": "datetime", "value": "aasasass", "operator": "=" } ] } ] } }, "time_filter": { "from": "<utc-timestamp>", "to": "<utc-timestamp>" } } ```
1 parent f8935f3 commit 4c0d2a8

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

server/src/storage/localfs.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@ use relative_path::{RelativePath, RelativePathBuf};
3131
use tokio::fs::{self, DirEntry};
3232
use tokio_stream::wrappers::ReadDirStream;
3333

34-
use crate::metrics::storage::{localfs::REQUEST_RESPONSE_TIME, StorageMetrics};
3534
use crate::option::validation;
35+
use crate::{
36+
handlers::http::users::USERS_ROOT_DIR,
37+
metrics::storage::{localfs::REQUEST_RESPONSE_TIME, StorageMetrics},
38+
};
3639

3740
use super::{
3841
LogStream, ObjectStorage, ObjectStorageError, ObjectStorageProvider, PARSEABLE_ROOT_DIRECTORY,
@@ -291,7 +294,7 @@ impl ObjectStorage for LocalFS {
291294
}
292295

293296
async fn list_streams(&self) -> Result<Vec<LogStream>, ObjectStorageError> {
294-
let ignore_dir = &["lost+found", PARSEABLE_ROOT_DIRECTORY];
297+
let ignore_dir = &["lost+found", PARSEABLE_ROOT_DIRECTORY, USERS_ROOT_DIR];
295298
let directories = ReadDirStream::new(fs::read_dir(&self.root).await?);
296299
let entries: Vec<DirEntry> = directories.try_collect().await?;
297300
let entries = entries

server/src/users/filters.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,45 @@ use crate::{handlers::http::users::USERS_ROOT_DIR, metadata::LOCK_EXPECT, option
2626

2727
pub static FILTERS: Lazy<Filters> = Lazy::new(Filters::default);
2828

29-
#[derive(Debug, Serialize, Deserialize, Clone)]
29+
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
3030
pub struct Filter {
3131
version: String,
3232
stream_name: String,
3333
filter_name: String,
3434
filter_id: String,
35-
query: String,
35+
query: FilterQuery,
3636
time_filter: Option<TimeFilter>,
3737
}
3838

39+
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
40+
pub struct FilterQuery {
41+
filter_type: String,
42+
filter_query: Option<String>,
43+
filter_builder: Option<FilterBuilder>,
44+
}
45+
46+
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
47+
pub struct FilterBuilder {
48+
id: String,
49+
combinator: String,
50+
rules: Vec<FilterRules>,
51+
}
52+
53+
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
54+
pub struct FilterRules {
55+
id: String,
56+
combinator: String,
57+
rules: Vec<Rules>,
58+
}
59+
60+
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
61+
pub struct Rules {
62+
id: String,
63+
field: String,
64+
value: String,
65+
operator: String,
66+
}
67+
3968
impl Filter {
4069
pub fn filter_id(&self) -> &str {
4170
&self.filter_id
@@ -70,7 +99,7 @@ impl Filters {
7099

71100
pub fn update(&self, filter: Filter) {
72101
let mut s = self.0.write().expect(LOCK_EXPECT);
73-
102+
s.retain(|f| f.filter_id() != filter.filter_id());
74103
s.push(filter);
75104
}
76105

server/src/users/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub mod filters;
2121

2222
use serde::{Deserialize, Serialize};
2323

24-
#[derive(Debug, Serialize, Deserialize, Default, Clone)]
24+
#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq)]
2525
pub struct TimeFilter {
2626
to: String,
2727
from: String,

0 commit comments

Comments
 (0)