diff --git a/backend-services/feed-service/app/repositories/DailyRepository.scala b/backend-services/feed-service/app/repositories/DailyRepository.scala new file mode 100644 index 0000000000000000000000000000000000000000..8daeddc43e58efc0caab7ed42577d9d8d812a011 --- /dev/null +++ b/backend-services/feed-service/app/repositories/DailyRepository.scala @@ -0,0 +1,56 @@ +package repositories + +import com.typesafe.config.ConfigFactory + +import models.{Daily, MongoDBClient} + +import org.mongodb.scala.{MongoCollection, Document} +import org.bson.types.ObjectId + +import scala.concurrent.ExecutionContext.Implicits.global +import scala.concurrent.{Future, Await} +import scala.concurrent.duration._ + + +class DailyRepository extends MongoDBClient { + // Loads the default configuration + private val config = ConfigFactory.load() + + private val databaseName = config.getString("mongo.feedService.db") + private val collectionName = config.getString("mongo.dailies.collection") + + /** + * Returns a reference to a MongoDB collection within a database. + * Once Future completes, collection reference is returned. + * + * @return a MongoCollection[Document] object representing the dailies collection. + * @throws TimeoutException if the Future doesn't complete within the 3 second timeout. + */ + private def dailiesCollection: MongoCollection[Document] = { + val futureCollection = for { + database <- getDatabase(databaseName) + collection <- getCollection(database, collectionName) + } yield collection + + Await.result(futureCollection, 3.seconds) + } + + /** + * Gets all the Daily records. + * + * @return A Future containing a sequence of matching Daily objects. + */ + def getAllDailies(): Future[Seq[Daily]] = { + val documents: Future[Seq[Document]] = find(dailiesCollection) + + documents.map(document => { + document.map(doc => Daily( + Some(doc.getObjectId("_id")), + doc.getObjectId("user_id"), + doc.getObjectId("question_id"), + doc.getString("content"), + doc.getInteger("likes") + )) + }) + } +} diff --git a/backend-services/feed-service/conf/application.conf b/backend-services/feed-service/conf/application.conf index 852c11d6e6d10588b23cae3f2b3e8131c4827c11..21793f26d6ae0be584bda9b29c3fb4b4589d9d7d 100644 --- a/backend-services/feed-service/conf/application.conf +++ b/backend-services/feed-service/conf/application.conf @@ -1,4 +1,4 @@ -# Default Configuration File - # MongoDB Connection Strings -mongodb.uri = "mongodb://localhost:27017/" +mongodb.uri="mongodb://localhost:27017/" +mongo.feedService.db = "feed-service" +mongo.dailies.collection = "dailies"