Skip to content
Snippets Groups Projects
QuestionRepository.scala 1.49 KiB
Newer Older
package repositories

import models.Question
import utils.MongoConnection

import utils.ConfigHelper
import org.bson.types.ObjectId

import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future


class QuestionRepository extends Repository[Question] (
    ConfigHelper.getString("mongo.questionService.db"),
    ConfigHelper.getString("mongo.questions.collection")
) {
    /**
     * Inserts a Question record into the database.
     * 
     * @return A Future containing the inserted Question object with the generated ID.
     */
    def insertQuestion(question: Question): Future[Question] = {
        val result: Future[String] = MongoConnection.insertOne[Question](collection, question)

        // Return a Question entity with the generated ID
        result.flatMap[Question](id => {
            val updatedQuestion: Question = question.copy(id = Some(new ObjectId(id)))
            Future.successful(updatedQuestion)
        })
    }
}

object QuestionRepository {
    def seedDatabase(): Unit = {
        println("Seeding Question Database...")

        try {
            Question.createQuestionAsync("Who is there?")
            Question.createQuestionAsync("How is that there?")
            Question.createQuestionAsync("Where is there?")

            println("Successfully seeded Question Database!")
        } catch {
            case ex: Throwable => {
                println("Error seeding Question Database...")
                println(ex)
            }
        }  
    } 
}