Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions modules/elastic/src/main/scala/study.scala
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ object Fields:
val chapterNames = "chapterNames"
val chapterTexts = "chapterTexts"
val topics = "topics"
// val createdAt = "createdAt"
// val updatedAt = "updatedAt"
val createdAt = "createdAt"
val updatedAt = "updatedAt"
val rank = "rank"
val likes = "likes"
val public = "public"
Expand All @@ -74,7 +74,9 @@ object Mapping:
textField(topics).copy(boost = Some(5), analyzer = Some("english")),
shortField(likes).copy(docValues = Some(true)), // sort by likes
booleanField(public).copy(docValues = Some(false)),
dateField(rank).copy(format = Some(SearchDateTime.format))
dateField(rank).copy(format = Some(SearchDateTime.format)),
dateField(createdAt).copy(format = Some(SearchDateTime.format)),
dateField(updatedAt).copy(format = Some(SearchDateTime.format))
)

object Study:
Expand Down
21 changes: 18 additions & 3 deletions modules/ingestor-core/src/main/scala/mongo.study.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,18 @@ import Repo.*
object StudyRepo:

private val interestedfields =
List("_id", F.name, F.members, F.ownerId, F.visibility, F.topics, F.likes, F.rank)
List(
"_id",
F.name,
F.members,
F.ownerId,
F.visibility,
F.topics,
F.likes,
F.rank,
F.createdAt,
F.updatedAt
)

private val indexDocProjection = Projection.include(interestedfields)
private val deleteDocProjection = Projection.include(F.oplogId)
Expand Down Expand Up @@ -115,7 +126,9 @@ object StudyRepo:
doc.getLikes,
doc.getPublic,
doc.getTopics,
doc.getRank
doc.getRank,
doc.getCreatedAt,
doc.getUpdatedAt
)
.map(id -> _)
.pure[IO]
Expand All @@ -133,12 +146,14 @@ object StudyRepo:
private def getMembers = doc.getDocument(F.members).fold(Nil)(_.toMap.keys.toList)
private def getTopics = doc.getList(F.topics).map(_.flatMap(_.asString)).getOrElse(Nil)
private def getLikes = doc.getInt(F.likes).getOrElse(0)
private def getRank = doc.get(F.rank).flatMap(_.asInstant).map(SearchDateTime.fromInstant)
private def getChapterTexts(chapters: Map[String, StudyData]) =
chapters.get(doc.id.getOrElse("")).map(_.chapterTexts)
private def getChapterNames(chapters: Map[String, StudyData]) =
chapters.get(doc.id.getOrElse("")).map(_.chapterNames)
private def getPublic = doc.getString(F.visibility).map(_ == "public").getOrElse(true)
private def getRank = doc.get(F.rank).flatMap(_.asInstant).map(SearchDateTime.fromInstant)
private def getCreatedAt = doc.get(F.createdAt).flatMap(_.asInstant).map(SearchDateTime.fromInstant)
private def getUpdatedAt = doc.get(F.updatedAt).flatMap(_.asInstant).map(SearchDateTime.fromInstant)

object F:
val name = "name"
Expand Down
2 changes: 2 additions & 0 deletions modules/ingestor-core/src/main/smithy/model.smithy
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ structure StudySource {
@required
public: Boolean
rank: DateTime
createdAt: DateTime
updatedAt: DateTime
}

structure TeamSource {
Expand Down