package com.weEat.migrations import org.mongodb.scala.MongoDatabase import gov.usda.nal.fdc.models.Nutrient import com.weEat.shared.models.FoodNode import com.mongodb.client.model._ import org.mongodb.scala.model.Filters._ import org.mongodb.scala.model.Indexes._ import java.util.concurrent.TimeUnit._ import org.bson.BsonType._ import scala.concurrent.{ExecutionContext,Future} import com.weEat.models.{Nutrient => NutrientCollection} object SeedNutrition extends Migration { implicit val ec: ExecutionContext = ExecutionContext.global private def typ = `type` _ def execute(db: MongoDatabase) = Future.sequence(Seq( createNutritionCollection(db) )) def createNutritionCollection(db: MongoDatabase) = db.createCollection(NutrientCollection.collectionName, new CreateCollectionOptions().validationOptions( new ValidationOptions().validator( and( typ("number", STRING), typ("unitName", STRING), typ("name", STRING), typ("id", INT32), typ("rank", INT32) ) ) ) ).head().map(res => { val nutrs = db.getCollection[Nutrient](NutrientCollection.collectionName) nutrs.createIndex( ascending("number"), new IndexOptions().unique(true) ).head() }).flatten }