app/models/Recipe.scala (58 lines of code) (raw):
package models
import org.joda.time.DateTime
case class Recipe(
id: RecipeId,
description: Option[String],
baseImage: BaseImage,
diskSize: Option[Int],
roles: List[CustomisedRole],
createdBy: String,
createdAt: DateTime,
modifiedBy: String,
modifiedAt: DateTime,
bakeSchedule: Option[BakeSchedule],
encryptFor: List[AccountNumber]
)
object Recipe {
case class DbModel(
id: RecipeId,
description: Option[String],
baseImageId: BaseImageId,
diskSize: Option[Int],
roles: List[CustomisedRole],
nextBuildNumber: Int,
createdBy: String,
createdAt: DateTime,
modifiedBy: String,
modifiedAt: DateTime,
bakeSchedule: Option[BakeSchedule],
encryptFor: Option[List[AccountNumber]]
)
def db2domain(dbModel: DbModel, baseImage: BaseImage): Recipe = Recipe(
id = dbModel.id,
description = dbModel.description,
baseImage = baseImage,
diskSize = dbModel.diskSize,
roles = dbModel.roles,
createdBy = dbModel.createdBy,
createdAt = dbModel.createdAt,
modifiedBy = dbModel.modifiedBy,
modifiedAt = dbModel.modifiedAt,
bakeSchedule = dbModel.bakeSchedule,
encryptFor = dbModel.encryptFor.getOrElse(Nil)
)
def domain2db(recipe: Recipe, nextBuildNumber: Int): DbModel = DbModel(
id = recipe.id,
description = recipe.description,
baseImageId = recipe.baseImage.id,
diskSize = recipe.diskSize,
roles = recipe.roles,
nextBuildNumber = nextBuildNumber,
createdBy = recipe.createdBy,
createdAt = recipe.createdAt,
modifiedBy = recipe.modifiedBy,
modifiedAt = recipe.modifiedAt,
bakeSchedule = recipe.bakeSchedule,
encryptFor = Some(recipe.encryptFor)
)
}