SeedNutrition.scala 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package com.weEat.migrations
  2. import org.mongodb.scala.MongoDatabase
  3. import gov.usda.nal.fdc.models.Nutrient
  4. import com.weEat.shared.models.FoodNode
  5. import com.mongodb.client.model._
  6. import org.mongodb.scala.model.Filters._
  7. import org.mongodb.scala.model.Indexes._
  8. import java.util.concurrent.TimeUnit._
  9. import org.bson.BsonType._
  10. import scala.concurrent.{ExecutionContext,Future}
  11. import com.weEat.models.{Nutrient => NutrientCollection}
  12. object SeedNutrition extends Migration {
  13. implicit val ec: ExecutionContext = ExecutionContext.global
  14. private def typ = `type` _
  15. def execute(db: MongoDatabase) = Future.sequence(Seq(
  16. createNutritionCollection(db)
  17. ))
  18. def createNutritionCollection(db: MongoDatabase) =
  19. db.createCollection(NutrientCollection.collectionName,
  20. new CreateCollectionOptions().validationOptions(
  21. new ValidationOptions().validator(
  22. and(
  23. typ("number", STRING),
  24. typ("unitName", STRING),
  25. typ("name", STRING),
  26. typ("id", INT32),
  27. typ("rank", INT32)
  28. )
  29. )
  30. )
  31. ).head().map(res => {
  32. val nutrs = db.getCollection[Nutrient](NutrientCollection.collectionName)
  33. nutrs.createIndex(
  34. ascending("number"), new IndexOptions().unique(true)
  35. ).head()
  36. }).flatten
  37. }