Skip to content

Commit 7053f68

Browse files
committed
feat: add in condition
1 parent 8146ee2 commit 7053f68

6 files changed

Lines changed: 48 additions & 0 deletions

File tree

file_classification_core/src/internal/file_group.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ fn build_file_group_condition(condition: FileGroupCondition) -> Box<dyn BoxableE
4444
FileGroupCondition::GroupIdGreaterThan(value) => Box::new(file_groups::group_id.gt(value)),
4545
FileGroupCondition::GroupIdLessThan(value) => Box::new(file_groups::group_id.lt(value)),
4646

47+
FileGroupCondition::FileIdIn(values) => Box::new(file_groups::file_id.eq_any(values)),
48+
FileGroupCondition::GroupIdIn(values) => Box::new(file_groups::group_id.eq_any(values)),
49+
4750
FileGroupCondition::And(conditions) => {
4851
let mut result: Option<Box<dyn BoxableExpression<file_groups::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>>> = None;
4952
for cond in conditions {

file_classification_core/src/internal/files.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ fn build_file_condition(condition: FileCondition) -> Box<dyn BoxableExpression<f
104104
FileCondition::ReferenceCountLessThan(value) => Box::new(files::reference_count.lt(value)),
105105
FileCondition::GroupIdGreaterThan(value) => Box::new(files::group_id.gt(value)),
106106
FileCondition::GroupIdLessThan(value) => Box::new(files::group_id.lt(value)),
107+
108+
FileCondition::IdIn(values) => Box::new(files::id.eq_any(values)),
109+
FileCondition::TypeIn(values) => Box::new(files::type_.eq_any(values)),
110+
FileCondition::PathIn(values) => Box::new(files::path.eq_any(values)),
111+
FileCondition::ReferenceCountIn(values) => Box::new(files::reference_count.eq_any(values)),
112+
FileCondition::GroupIdIn(values) => Box::new(files::group_id.eq_any(values)),
107113

108114
FileCondition::And(conditions) => {
109115
let mut result: Option<Box<dyn BoxableExpression<files::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>>> = None;

file_classification_core/src/internal/group_tag.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ fn build_group_tag_condition(condition: GroupTagCondition) -> Box<dyn BoxableExp
4747
GroupTagCondition::GroupIdLessThan(value) => Box::new(group_tags::group_id.lt(value)),
4848
GroupTagCondition::TagIdGreaterThan(value) => Box::new(group_tags::tag_id.gt(value)),
4949
GroupTagCondition::TagIdLessThan(value) => Box::new(group_tags::tag_id.lt(value)),
50+
51+
GroupTagCondition::GroupIdIn(values) => Box::new(group_tags::group_id.eq_any(values)),
52+
GroupTagCondition::TagIdIn(values) => Box::new(group_tags::tag_id.eq_any(values)),
5053

5154
GroupTagCondition::And(conditions) => {
5255
let mut result: Option<Box<dyn BoxableExpression<group_tags::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>>> = None;

file_classification_core/src/internal/groups.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,14 @@ fn build_group_condition(condition: GroupCondition) -> Box<dyn BoxableExpression
152152
GroupCondition::CreateTimeLessThan(time) => Box::new(groups::create_time.lt(time)),
153153
GroupCondition::ModifyTimeGreaterThan(time) => Box::new(groups::modify_time.gt(time)),
154154
GroupCondition::ModifyTimeLessThan(time) => Box::new(groups::modify_time.lt(time)),
155+
156+
GroupCondition::IdIn(values) => Box::new(groups::id.eq_any(values)),
157+
GroupCondition::NameIn(values) => Box::new(groups::name.eq_any(values)),
158+
GroupCondition::ReferenceCountIn(values) => Box::new(groups::reference_count.eq_any(values)),
159+
GroupCondition::ClickCountIn(values) => Box::new(groups::click_count.eq_any(values)),
160+
GroupCondition::ShareCountIn(values) => Box::new(groups::share_count.eq_any(values)),
161+
GroupCondition::CreateTimeIn(values) => Box::new(groups::create_time.eq_any(values)),
162+
GroupCondition::ModifyTimeIn(values) => Box::new(groups::modify_time.eq_any(values)),
155163

156164
GroupCondition::And(conditions) => {
157165
let mut result: Option<Box<dyn BoxableExpression<groups::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>>> = None;

file_classification_core/src/internal/tags.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ fn build_tag_condition(condition: TagCondition) -> Box<dyn BoxableExpression<tag
110110
TagCondition::ReferenceCountGreaterThan(value) => Box::new(tags::reference_count.gt(value)),
111111
TagCondition::ReferenceCountLessThan(value) => Box::new(tags::reference_count.lt(value)),
112112

113+
TagCondition::IdIn(values) => Box::new(tags::id.eq_any(values)),
114+
TagCondition::NameIn(values) => Box::new(tags::name.eq_any(values)),
115+
TagCondition::ReferenceCountIn(values) => Box::new(tags::reference_count.eq_any(values)),
116+
113117
TagCondition::And(conditions) => {
114118
let mut result: Option<Box<dyn BoxableExpression<tags::table, <AnyConnection as Connection>::Backend, SqlType=diesel::sql_types::Bool>>> = None;
115119
for cond in conditions {

file_classification_core/src/model/models.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ pub enum FileCondition {
5454
GroupIdGreaterThan(i32),
5555
GroupIdLessThan(i32),
5656

57+
IdIn(Vec<i32>),
58+
TypeIn(Vec<String>),
59+
PathIn(Vec<String>),
60+
ReferenceCountIn(Vec<i32>),
61+
GroupIdIn(Vec<i32>),
62+
5763
And(Vec<FileCondition>),
5864
Or(Vec<FileCondition>),
5965
Not(Box<FileCondition>),
@@ -131,6 +137,14 @@ pub enum GroupCondition {
131137
ModifyTimeGreaterThan(chrono::NaiveDateTime),
132138
ModifyTimeLessThan(chrono::NaiveDateTime),
133139

140+
IdIn(Vec<i32>),
141+
NameIn(Vec<String>),
142+
ReferenceCountIn(Vec<i32>),
143+
ClickCountIn(Vec<i32>),
144+
ShareCountIn(Vec<i32>),
145+
CreateTimeIn(Vec<chrono::NaiveDateTime>),
146+
ModifyTimeIn(Vec<chrono::NaiveDateTime>),
147+
134148
And(Vec<GroupCondition>),
135149
Or(Vec<GroupCondition>),
136150
Not(Box<GroupCondition>),
@@ -231,6 +245,10 @@ pub enum TagCondition {
231245
ReferenceCountGreaterThan(i32),
232246
ReferenceCountLessThan(i32),
233247

248+
IdIn(Vec<i32>),
249+
NameIn(Vec<String>),
250+
ReferenceCountIn(Vec<i32>),
251+
234252
And(Vec<TagCondition>),
235253
Or(Vec<TagCondition>),
236254
Not(Box<TagCondition>),
@@ -294,6 +312,9 @@ pub enum FileGroupCondition {
294312
GroupIdGreaterThan(i32),
295313
GroupIdLessThan(i32),
296314

315+
FileIdIn(Vec<i32>),
316+
GroupIdIn(Vec<i32>),
317+
297318
And(Vec<FileGroupCondition>),
298319
Or(Vec<FileGroupCondition>),
299320
Not(Box<FileGroupCondition>),
@@ -332,6 +353,9 @@ pub enum GroupTagCondition {
332353
TagIdGreaterThan(i32),
333354
TagIdLessThan(i32),
334355

356+
GroupIdIn(Vec<i32>),
357+
TagIdIn(Vec<i32>),
358+
335359
And(Vec<GroupTagCondition>),
336360
Or(Vec<GroupTagCondition>),
337361
Not(Box<GroupTagCondition>),

0 commit comments

Comments
 (0)