Skip to content

Commit

Permalink
#1946 Optimise custom fields request
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Apr 8, 2021
1 parent 3f73a86 commit 8041ff2
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 20 deletions.
15 changes: 10 additions & 5 deletions thehive/app/org/thp/thehive/services/AlertSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -491,11 +491,16 @@ object AlertOps {
.value(_.`type`)
.headOption
.map {
case CustomFieldType.boolean => traversal.filter(_.customFields(customField).has(_.booleanValue, predicate.mapValue(_.as[Boolean])))
case CustomFieldType.date => traversal.filter(_.customFields(customField).has(_.dateValue, predicate.mapValue(_.as[Date])))
case CustomFieldType.float => traversal.filter(_.customFields(customField).has(_.floatValue, predicate.mapValue(_.as[Double])))
case CustomFieldType.integer => traversal.filter(_.customFields(customField).has(_.integerValue, predicate.mapValue(_.as[Int])))
case CustomFieldType.string => traversal.filter(_.customFields(customField).has(_.stringValue, predicate.mapValue(_.as[String])))
case CustomFieldType.boolean =>
traversal.filter(_.customFields.has(_.booleanValue, predicate.mapValue(_.as[Boolean])).inV.v[CustomField].get(customField))
case CustomFieldType.date =>
traversal.filter(_.customFields.has(_.dateValue, predicate.mapValue(_.as[Date])).inV.v[CustomField].get(customField))
case CustomFieldType.float =>
traversal.filter(_.customFields.has(_.floatValue, predicate.mapValue(_.as[Double])).inV.v[CustomField].get(customField))
case CustomFieldType.integer =>
traversal.filter(_.customFields.has(_.integerValue, predicate.mapValue(_.as[Int])).inV.v[CustomField].get(customField))
case CustomFieldType.string =>
traversal.filter(_.customFields.has(_.stringValue, predicate.mapValue(_.as[String])).inV.v[CustomField].get(customField))
}
.getOrElse(traversal.empty)

Expand Down
35 changes: 20 additions & 15 deletions thehive/app/org/thp/thehive/services/CaseTemplateSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,16 @@ object CaseTemplateOps {
.value(_.`type`)
.headOption
.map {
case CustomFieldType.boolean => traversal.filter(_.customFields(customField).has(_.booleanValue, predicate.mapValue(_.as[Boolean])))
case CustomFieldType.date => traversal.filter(_.customFields(customField).has(_.dateValue, predicate.mapValue(_.as[Date])))
case CustomFieldType.float => traversal.filter(_.customFields(customField).has(_.floatValue, predicate.mapValue(_.as[Double])))
case CustomFieldType.integer => traversal.filter(_.customFields(customField).has(_.integerValue, predicate.mapValue(_.as[Int])))
case CustomFieldType.string => traversal.filter(_.customFields(customField).has(_.stringValue, predicate.mapValue(_.as[String])))
case CustomFieldType.boolean =>
traversal.filter(_.customFields.has(_.booleanValue, predicate.mapValue(_.as[Boolean])).inV.v[CustomField].get(customField))
case CustomFieldType.date =>
traversal.filter(_.customFields.has(_.dateValue, predicate.mapValue(_.as[Date])).inV.v[CustomField].get(customField))
case CustomFieldType.float =>
traversal.filter(_.customFields.has(_.floatValue, predicate.mapValue(_.as[Double])).inV.v[CustomField].get(customField))
case CustomFieldType.integer =>
traversal.filter(_.customFields.has(_.integerValue, predicate.mapValue(_.as[Int])).inV.v[CustomField].get(customField))
case CustomFieldType.string =>
traversal.filter(_.customFields.has(_.stringValue, predicate.mapValue(_.as[String])).inV.v[CustomField].get(customField))
}
.getOrElse(traversal.empty)

Expand All @@ -240,11 +245,11 @@ object CaseTemplateOps {
.value(_.`type`)
.headOption
.map {
case CustomFieldType.boolean => traversal.filter(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.booleanValue).inV.v[CustomField]))
case CustomFieldType.date => traversal.filter(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.dateValue).inV.v[CustomField]))
case CustomFieldType.float => traversal.filter(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.floatValue).inV.v[CustomField]))
case CustomFieldType.integer => traversal.filter(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.integerValue).inV.v[CustomField]))
case CustomFieldType.string => traversal.filter(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.stringValue).inV.v[CustomField]))
case CustomFieldType.boolean => traversal.filter(_.customFields.has(_.booleanValue).inV.v[CustomField].get(customField))
case CustomFieldType.date => traversal.filter(_.customFields.has(_.dateValue).inV.v[CustomField].get(customField))
case CustomFieldType.float => traversal.filter(_.customFields.has(_.floatValue).inV.v[CustomField].get(customField))
case CustomFieldType.integer => traversal.filter(_.customFields.has(_.integerValue).inV.v[CustomField].get(customField))
case CustomFieldType.string => traversal.filter(_.customFields.has(_.stringValue).inV.v[CustomField].get(customField))
}
.getOrElse(traversal.empty)
}
Expand All @@ -257,11 +262,11 @@ object CaseTemplateOps {
.value(_.`type`)
.headOption
.map {
case CustomFieldType.boolean => traversal.filterNot(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.booleanValue).inV.v[CustomField]))
case CustomFieldType.date => traversal.filterNot(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.dateValue).inV.v[CustomField]))
case CustomFieldType.float => traversal.filterNot(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.floatValue).inV.v[CustomField]))
case CustomFieldType.integer => traversal.filterNot(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.integerValue).inV.v[CustomField]))
case CustomFieldType.string => traversal.filterNot(t => cfFilter(t.outE[CaseTemplateCustomField].has(_.stringValue).inV.v[CustomField]))
case CustomFieldType.boolean => traversal.filterNot(_.customFields.has(_.booleanValue).inV.v[CustomField].get(customField))
case CustomFieldType.date => traversal.filterNot(_.customFields.has(_.dateValue).inV.v[CustomField].get(customField))
case CustomFieldType.float => traversal.filterNot(_.customFields.has(_.floatValue).inV.v[CustomField].get(customField))
case CustomFieldType.integer => traversal.filterNot(_.customFields.has(_.integerValue).inV.v[CustomField].get(customField))
case CustomFieldType.string => traversal.filterNot(_.customFields.has(_.stringValue).inV.v[CustomField].get(customField))
}
.getOrElse(traversal.empty)
}
Expand Down

0 comments on commit 8041ff2

Please sign in to comment.