Skip to content
Snippets Groups Projects
Commit a213e7c5 authored by Felipe D'Abrantes's avatar Felipe D'Abrantes
Browse files

Create a DailyQuestion repository

parent d57c08db
No related branches found
No related tags found
1 merge request!17Implement Question Service
package models
import org.bson.types.ObjectId
import java.util.Date
/**
* Represents a daily question that is given to all users.
*
* @param id The unique ID of the daily question object.
* @param questionId The unique ID of the question that is associated with this daily question.
* @param questionText The text of the question that is associated with this daily question. Duplicated from the Question object to reduce database hits.
* @param nextQuestionAt The date and time of when the question expires.
* @param createdAt The date and time when the daily question object was created.
* @param updatedAt The date and time when the daily question object was last updated.
*/
case class DailyQuestion (
id: Option[ObjectId],
questionId: ObjectId,
questionText: String,
nextQuestionAt: Date,
createdAt: Date,
updatedAt: Date
)
package repositories
import models.DailyQuestion
import utils.MongoConnection
import com.typesafe.config.ConfigFactory
import org.bson.types.ObjectId
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
class DailyQuestionRepository extends Repository[DailyQuestion] (
ConfigFactory.load().getString("mongo.questionService.db"),
ConfigFactory.load().getString("mongo.dailyQuestions.collection")
) {
/**
* Inserts a DailyQuestion record into the database.
*
* @return A Future containing the inserted DailyQuestion object with the generated ID.
*/
def insertDailyQuestion(question: DailyQuestion): Future[DailyQuestion] = {
val result: Future[String] = MongoConnection.insertOne[DailyQuestion](collection, question)
// Return a DailyQuestion entity with the generated ID
result.flatMap[DailyQuestion](id => {
val updatedQuestion: DailyQuestion = question.copy(id = Some(new ObjectId(id)))
Future.successful(updatedQuestion)
})
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment