SeedNutrition.scala 1.2 KB

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