mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 10:28:27 +00:00
@ -0,0 +1,5 @@
|
||||
package docspell.store.queries
|
||||
|
||||
import docspell.common._
|
||||
|
||||
final case class IdRefCount(ref: IdRef, count: Int) {}
|
@ -192,7 +192,21 @@ object QItem {
|
||||
cats <- searchTagCategorySummary(today)(q)
|
||||
fields <- searchFieldSummary(today)(q)
|
||||
folders <- searchFolderSummary(today)(q)
|
||||
} yield SearchSummary(count, tags, cats, fields, folders)
|
||||
orgs <- searchCorrOrgSummary(today)(q)
|
||||
corrPers <- searchCorrPersonSummary(today)(q)
|
||||
concPers <- searchConcPersonSummary(today)(q)
|
||||
concEquip <- searchConcEquipSummary(today)(q)
|
||||
} yield SearchSummary(
|
||||
count,
|
||||
tags,
|
||||
cats,
|
||||
fields,
|
||||
folders,
|
||||
orgs,
|
||||
corrPers,
|
||||
concPers,
|
||||
concEquip
|
||||
)
|
||||
|
||||
def searchTagCategorySummary(
|
||||
today: LocalDate
|
||||
@ -251,6 +265,40 @@ object QItem {
|
||||
.query[Int]
|
||||
.unique
|
||||
|
||||
def searchCorrOrgSummary(today: LocalDate)(q: Query): ConnectionIO[List[IdRefCount]] =
|
||||
searchIdRefSummary(org.oid, org.name, i.corrOrg, today)(q)
|
||||
|
||||
def searchCorrPersonSummary(today: LocalDate)(
|
||||
q: Query
|
||||
): ConnectionIO[List[IdRefCount]] =
|
||||
searchIdRefSummary(pers0.pid, pers0.name, i.corrPerson, today)(q)
|
||||
|
||||
def searchConcPersonSummary(today: LocalDate)(
|
||||
q: Query
|
||||
): ConnectionIO[List[IdRefCount]] =
|
||||
searchIdRefSummary(pers1.pid, pers1.name, i.concPerson, today)(q)
|
||||
|
||||
def searchConcEquipSummary(today: LocalDate)(
|
||||
q: Query
|
||||
): ConnectionIO[List[IdRefCount]] =
|
||||
searchIdRefSummary(equip.eid, equip.name, i.concEquipment, today)(q)
|
||||
|
||||
private def searchIdRefSummary(
|
||||
idCol: Column[Ident],
|
||||
nameCol: Column[String],
|
||||
fkCol: Column[Ident],
|
||||
today: LocalDate
|
||||
)(q: Query): ConnectionIO[List[IdRefCount]] =
|
||||
findItemsBase(q.fix, today, 0).unwrap
|
||||
.withSelect(select(idCol, nameCol).append(count(idCol).as("num")))
|
||||
.changeWhere(c =>
|
||||
c && fkCol.isNotNull && queryCondition(today, q.fix.account.collective, q.cond)
|
||||
)
|
||||
.groupBy(idCol, nameCol)
|
||||
.build
|
||||
.query[IdRefCount]
|
||||
.to[List]
|
||||
|
||||
def searchFolderSummary(today: LocalDate)(q: Query): ConnectionIO[List[FolderCount]] = {
|
||||
val fu = RUser.as("fu")
|
||||
findItemsBase(q.fix, today, 0).unwrap
|
||||
|
@ -11,7 +11,11 @@ case class SearchSummary(
|
||||
tags: List[TagCount],
|
||||
cats: List[CategoryCount],
|
||||
fields: List[FieldStats],
|
||||
folders: List[FolderCount]
|
||||
folders: List[FolderCount],
|
||||
corrOrgs: List[IdRefCount],
|
||||
corrPers: List[IdRefCount],
|
||||
concPers: List[IdRefCount],
|
||||
concEquip: List[IdRefCount]
|
||||
) {
|
||||
|
||||
def onlyExisting: SearchSummary =
|
||||
@ -20,6 +24,10 @@ case class SearchSummary(
|
||||
tags.filter(_.count > 0),
|
||||
cats.filter(_.count > 0),
|
||||
fields.filter(_.count > 0),
|
||||
folders.filter(_.count > 0)
|
||||
folders.filter(_.count > 0),
|
||||
corrOrgs = corrOrgs.filter(_.count > 0),
|
||||
corrPers = corrPers.filter(_.count > 0),
|
||||
concPers = concPers.filter(_.count > 0),
|
||||
concEquip = concEquip.filter(_.count > 0)
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user