diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala b/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala index bdec0212..8d47ed0b 100644 --- a/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala +++ b/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala @@ -95,7 +95,9 @@ object OCustomFields { private[this] val logger = Logger.log4s[ConnectionIO](getLogger) def findAll(coll: Ident, nameQuery: Option[String]): F[Vector[CustomFieldData]] = - store.transact(QCustomField.findAllLike(coll, nameQuery.filter(_.nonEmpty))) + store.transact( + QCustomField.findAllLike(coll, nameQuery.map(WildcardString.apply).map(_.both)) + ) def findById(coll: Ident, field: Ident): F[Option[CustomFieldData]] = store.transact(QCustomField.findById(field, coll)) diff --git a/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala b/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala new file mode 100644 index 00000000..7fb0fec3 --- /dev/null +++ b/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala @@ -0,0 +1,16 @@ +package docspell.backend.ops + +final class WildcardString private (str: String) { + + def both: String = + if (str.startsWith("\"") && str.endsWith("\"")) str.drop(1).dropRight(1) + else if (str.startsWith("*") || str.endsWith("*")) str + else s"*$str*" + +} +object WildcardString { + + def apply(in: String): WildcardString = + new WildcardString(in.trim) + +}