Change custom fields for multiple items

This commit is contained in:
Eike Kettner
2020-11-16 23:27:26 +01:00
parent 93295d63a5
commit 8d35d100d6
7 changed files with 137 additions and 14 deletions

View File

@ -1,5 +1,7 @@
package docspell.store.records
import cats.data.NonEmptyList
import docspell.common._
import docspell.store.impl.Column
import docspell.store.impl.Implicits._
@ -57,6 +59,6 @@ object RCustomFieldValue {
def deleteByItem(item: Ident): ConnectionIO[Int] =
deleteFrom(table, Columns.itemId.is(item)).update.run
def deleteValue(fieldId: Ident, item: Ident): ConnectionIO[Int] =
deleteFrom(table, and(Columns.id.is(fieldId), Columns.itemId.is(item))).update.run
def deleteValue(fieldId: Ident, items: NonEmptyList[Ident]): ConnectionIO[Int] =
deleteFrom(table, and(Columns.id.is(fieldId), Columns.itemId.isIn(items))).update.run
}

View File

@ -326,6 +326,15 @@ object RItem {
def existsByIdAndCollective(itemId: Ident, coll: Ident): ConnectionIO[Boolean] =
selectCount(id, table, and(id.is(itemId), cid.is(coll))).query[Int].unique.map(_ > 0)
def existsByIdsAndCollective(
itemIds: NonEmptyList[Ident],
coll: Ident
): ConnectionIO[Boolean] =
selectCount(id, table, and(id.isIn(itemIds), cid.is(coll)))
.query[Int]
.unique
.map(_ == itemIds.size)
def findByIdAndCollective(itemId: Ident, coll: Ident): ConnectionIO[Option[RItem]] =
selectSimple(all, table, and(id.is(itemId), cid.is(coll))).query[RItem].option