Refactor solr language fields

This commit is contained in:
Eike Kettner 2021-01-17 20:21:42 +01:00
parent 26dff18ae0
commit 94bb18c152
3 changed files with 14 additions and 34 deletions

View File

@ -21,28 +21,18 @@ object Field {
val discriminator = Field("discriminator")
val attachmentName = Field("attachmentName")
val content = Field("content")
val content_de = Field("content_de")
val content_en = Field("content_en")
val content_fr = Field("content_fr")
val content_it = Field("content_it")
val content_es = Field("content_es")
val content_de = contentField(Language.German)
val content_en = contentField(Language.English)
val content_fr = contentField(Language.French)
val itemName = Field("itemName")
val itemNotes = Field("itemNotes")
val folderId = Field("folder")
val contentLangFields = Language.all
.map(contentField)
def contentField(lang: Language): Field =
lang match {
case Language.German =>
Field.content_de
case Language.English =>
Field.content_en
case Language.French =>
Field.content_fr
case Language.Italian =>
Field.content_it
case Language.Spanish =>
Field.content_es
}
Field(s"content_${lang.iso2}")
implicit val jsonEncoder: Encoder[Field] =
Encoder.encodeString.contramap(_.name)

View File

@ -37,15 +37,10 @@ object SolrQuery {
cfg,
List(
Field.content,
Field.content_de,
Field.content_en,
Field.content_fr,
Field.content_it,
Field.content_es,
Field.itemName,
Field.itemNotes,
Field.attachmentName
),
) ++ Field.contentLangFields,
List(
Field.id,
Field.itemId,

View File

@ -56,7 +56,7 @@ object SolrSetup {
5,
solrEngine,
"Add content_fr field",
addContentFrField.map(_ => FtsMigration.Result.workDone)
addContentField(Language.French).map(_ => FtsMigration.Result.workDone)
),
FtsMigration[F](
6,
@ -68,27 +68,19 @@ object SolrSetup {
7,
solrEngine,
"Add content_it field",
addContentItField.map(_ => FtsMigration.Result.reIndexAll)
addContentField(Language.Italian).map(_ => FtsMigration.Result.reIndexAll)
),
FtsMigration[F](
8,
solrEngine,
"Add content_es field",
addTextField(Some(Language.Spanish))(Field.content_es).map(_ =>
FtsMigration.Result.reIndexAll
)
addContentField(Language.Spanish).map(_ => FtsMigration.Result.reIndexAll)
)
)
def addFolderField: F[Unit] =
addStringField(Field.folderId)
def addContentFrField: F[Unit] =
addTextField(Some(Language.French))(Field.content_fr)
def addContentItField: F[Unit] =
addTextField(Some(Language.Italian))(Field.content_it)
def setupCoreSchema: F[Unit] = {
val cmds0 =
List(
@ -130,6 +122,9 @@ object SolrSetup {
run(DeleteField.command(DeleteField(field))).attempt *>
run(AddField.command(AddField.string(field)))
private def addContentField(lang: Language): F[Unit] =
addTextField(Some(lang))(Field.contentField(lang))
private def addTextField(lang: Option[Language])(field: Field): F[Unit] =
lang match {
case None =>