mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 02:48:26 +00:00
Adopt backend to collective-id
This commit is contained in:
@ -17,7 +17,8 @@ import io.circe.syntax._
|
||||
trait JsonCodec {
|
||||
|
||||
implicit def attachmentEncoder(implicit
|
||||
enc: Encoder[Ident]
|
||||
enc: Encoder[Ident],
|
||||
encCid: Encoder[CollectiveId]
|
||||
): Encoder[TextData.Attachment] =
|
||||
new Encoder[TextData.Attachment] {
|
||||
final def apply(td: TextData.Attachment): Json = {
|
||||
@ -28,7 +29,7 @@ trait JsonCodec {
|
||||
cnt :: List(
|
||||
(Field.id.name, enc(td.id)),
|
||||
(Field.itemId.name, enc(td.item)),
|
||||
(Field.collectiveId.name, enc(td.collective)),
|
||||
(Field.collectiveId.name, encCid(td.collective)),
|
||||
(Field.folderId.name, td.folder.getOrElse(Ident.unsafe("")).asJson),
|
||||
(Field.attachmentId.name, enc(td.attachId)),
|
||||
(Field.attachmentName.name, Json.fromString(td.name.getOrElse(""))),
|
||||
@ -39,13 +40,16 @@ trait JsonCodec {
|
||||
}
|
||||
}
|
||||
|
||||
implicit def itemEncoder(implicit enc: Encoder[Ident]): Encoder[TextData.Item] =
|
||||
implicit def itemEncoder(implicit
|
||||
enc: Encoder[Ident],
|
||||
encCid: Encoder[CollectiveId]
|
||||
): Encoder[TextData.Item] =
|
||||
new Encoder[TextData.Item] {
|
||||
final def apply(td: TextData.Item): Json =
|
||||
Json.obj(
|
||||
(Field.id.name, enc(td.id)),
|
||||
(Field.itemId.name, enc(td.item)),
|
||||
(Field.collectiveId.name, enc(td.collective)),
|
||||
(Field.collectiveId.name, encCid(td.collective)),
|
||||
(Field.folderId.name, td.folder.getOrElse(Ident.unsafe("")).asJson),
|
||||
(Field.itemName.name, Json.fromString(td.name.getOrElse(""))),
|
||||
(Field.itemNotes.name, Json.fromString(td.notes.getOrElse(""))),
|
||||
|
@ -51,7 +51,7 @@ object QueryData {
|
||||
val items = fq.items.map(_.id).mkString(" ")
|
||||
val folders = fq.folders.map(_.id).mkString(" ")
|
||||
val filterQ = List(
|
||||
s"""${Field.collectiveId.name}:"${fq.collective.id}"""",
|
||||
s"""${Field.collectiveId.name}:"${fq.collective.value}"""",
|
||||
fq.items match {
|
||||
case s if s.isEmpty =>
|
||||
""
|
||||
|
@ -41,11 +41,11 @@ final class SolrFtsClient[F[_]: Async](
|
||||
def updateFolder(
|
||||
logger: Logger[F],
|
||||
itemId: Ident,
|
||||
collective: Ident,
|
||||
collective: CollectiveId,
|
||||
folder: Option[Ident]
|
||||
): F[Unit] =
|
||||
logger.debug(
|
||||
s"Update folder in solr index for coll/item ${collective.id}/${itemId.id}"
|
||||
s"Update folder in solr index for coll/item ${collective.value}/${itemId.id}"
|
||||
) *>
|
||||
solrUpdate.updateFolder(itemId, collective, folder)
|
||||
|
||||
@ -75,9 +75,9 @@ final class SolrFtsClient[F[_]: Async](
|
||||
logger.info("Deleting complete full-text index!") *>
|
||||
solrUpdate.delete("*:*", Option(0))
|
||||
|
||||
def clear(logger: Logger[F], collective: Ident): F[Unit] =
|
||||
logger.info(s"Deleting full-text index for collective ${collective.id}") *>
|
||||
solrUpdate.delete(s"${Field.collectiveId.name}:${collective.id}", Option(0))
|
||||
def clear(logger: Logger[F], collective: CollectiveId): F[Unit] =
|
||||
logger.info(s"Deleting full-text index for collective ${collective.value}") *>
|
||||
solrUpdate.delete(s"${Field.collectiveId.name}:${collective.value}", Option(0))
|
||||
}
|
||||
|
||||
object SolrFtsClient {
|
||||
|
@ -155,7 +155,8 @@ object SolrSetup {
|
||||
"Add polish",
|
||||
addContentField(Language.Polish)
|
||||
),
|
||||
SolrMigration.reIndexAll(26, "Re-Index after adding polish content field")
|
||||
SolrMigration.reIndexAll(26, "Re-Index after adding polish content field"),
|
||||
SolrMigration.reIndexAll(27, "Re-Index after collective-id change")
|
||||
)
|
||||
|
||||
def addFolderField: F[Unit] =
|
||||
|
@ -27,7 +27,11 @@ trait SolrUpdate[F[_]] {
|
||||
|
||||
def update(tds: List[TextData]): F[Unit]
|
||||
|
||||
def updateFolder(itemId: Ident, collective: Ident, folder: Option[Ident]): F[Unit]
|
||||
def updateFolder(
|
||||
itemId: Ident,
|
||||
collective: CollectiveId,
|
||||
folder: Option[Ident]
|
||||
): F[Unit]
|
||||
|
||||
def updateVersionDoc(doc: VersionDoc): F[Unit]
|
||||
|
||||
@ -63,13 +67,13 @@ object SolrUpdate {
|
||||
|
||||
def updateFolder(
|
||||
itemId: Ident,
|
||||
collective: Ident,
|
||||
collective: CollectiveId,
|
||||
folder: Option[Ident]
|
||||
): F[Unit] = {
|
||||
val queryUrl = Uri.unsafeFromString(cfg.url.asString) / "query"
|
||||
val q = QueryData(
|
||||
"*:*",
|
||||
s"${Field.itemId.name}:${itemId.id} AND ${Field.collectiveId.name}:${collective.id}",
|
||||
s"${Field.itemId.name}:${itemId.id} AND ${Field.collectiveId.name}:${collective.value}",
|
||||
Int.MaxValue,
|
||||
0,
|
||||
List(Field.id),
|
||||
@ -97,13 +101,12 @@ object SolrUpdate {
|
||||
client.expect[Unit](req)
|
||||
}
|
||||
|
||||
private val minOneChange: TextData => Boolean =
|
||||
_ match {
|
||||
case td: TextData.Attachment =>
|
||||
td.name.isDefined || td.text.isDefined
|
||||
case td: TextData.Item =>
|
||||
td.name.isDefined || td.notes.isDefined
|
||||
}
|
||||
private val minOneChange: TextData => Boolean = {
|
||||
case td: TextData.Attachment =>
|
||||
td.name.isDefined || td.text.isDefined
|
||||
case td: TextData.Item =>
|
||||
td.name.isDefined || td.notes.isDefined
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user