mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-21 18:08:25 +00:00
Apply folder restriction to fulltext only search
And update index when folder changes.
This commit is contained in:
@ -145,6 +145,7 @@ object QAttachment {
|
||||
id: Ident,
|
||||
item: Ident,
|
||||
collective: Ident,
|
||||
folder: Option[Ident],
|
||||
lang: Language,
|
||||
name: Option[String],
|
||||
content: Option[String]
|
||||
@ -160,10 +161,11 @@ object QAttachment {
|
||||
val mContent = RAttachmentMeta.Columns.content.prefix("m")
|
||||
val iId = RItem.Columns.id.prefix("i")
|
||||
val iColl = RItem.Columns.cid.prefix("i")
|
||||
val iFolder = RItem.Columns.folder.prefix("i")
|
||||
val cId = RCollective.Columns.id.prefix("c")
|
||||
val cLang = RCollective.Columns.language.prefix("c")
|
||||
|
||||
val cols = Seq(aId, aItem, iColl, cLang, aName, mContent)
|
||||
val cols = Seq(aId, aItem, iColl, iFolder, cLang, aName, mContent)
|
||||
val from = RAttachment.table ++ fr"a INNER JOIN" ++
|
||||
RAttachmentMeta.table ++ fr"m ON" ++ aId.is(mId) ++
|
||||
fr"INNER JOIN" ++ RItem.table ++ fr"i ON" ++ iId.is(aItem) ++
|
||||
|
@ -270,6 +270,9 @@ object QFolder {
|
||||
)
|
||||
}
|
||||
|
||||
def getMemberFolders(account: AccountId): ConnectionIO[Set[Ident]] =
|
||||
findMemberFolderIds(account).query[Ident].to[Set]
|
||||
|
||||
private def findUserId(account: AccountId): ConnectionIO[Option[Ident]] =
|
||||
RUser.findByAccount(account).map(_.map(_.uid))
|
||||
}
|
||||
|
@ -585,6 +585,7 @@ object QItem {
|
||||
final case class NameAndNotes(
|
||||
id: Ident,
|
||||
collective: Ident,
|
||||
folder: Option[Ident],
|
||||
name: String,
|
||||
notes: Option[String]
|
||||
)
|
||||
@ -592,12 +593,13 @@ object QItem {
|
||||
coll: Option[Ident],
|
||||
chunkSize: Int
|
||||
): Stream[ConnectionIO, NameAndNotes] = {
|
||||
val iId = RItem.Columns.id
|
||||
val iColl = RItem.Columns.cid
|
||||
val iName = RItem.Columns.name
|
||||
val iNotes = RItem.Columns.notes
|
||||
val iId = RItem.Columns.id
|
||||
val iColl = RItem.Columns.cid
|
||||
val iName = RItem.Columns.name
|
||||
val iFolder = RItem.Columns.folder
|
||||
val iNotes = RItem.Columns.notes
|
||||
|
||||
val cols = Seq(iId, iColl, iName, iNotes)
|
||||
val cols = Seq(iId, iColl, iFolder, iName, iNotes)
|
||||
val where = coll.map(cid => iColl.is(cid)).getOrElse(Fragment.empty)
|
||||
selectSimple(cols, RItem.table, where)
|
||||
.query[NameAndNotes]
|
||||
|
@ -247,7 +247,11 @@ object RItem {
|
||||
).update.run
|
||||
} yield n
|
||||
|
||||
def updateFolder(itemId: Ident, coll: Ident, folderId: Option[Ident]): ConnectionIO[Int] =
|
||||
def updateFolder(
|
||||
itemId: Ident,
|
||||
coll: Ident,
|
||||
folderId: Option[Ident]
|
||||
): ConnectionIO[Int] =
|
||||
for {
|
||||
t <- currentTime
|
||||
n <- updateRow(
|
||||
|
Reference in New Issue
Block a user