173 lines
5.5 KiB
Kotlin
173 lines
5.5 KiB
Kotlin
package gq.kirmanak.mealient.extensions
|
|
|
|
import gq.kirmanak.mealient.data.add.AddRecipeInfo
|
|
import gq.kirmanak.mealient.data.add.AddRecipeIngredientInfo
|
|
import gq.kirmanak.mealient.data.add.AddRecipeInstructionInfo
|
|
import gq.kirmanak.mealient.data.add.AddRecipeSettingsInfo
|
|
import gq.kirmanak.mealient.data.baseurl.VersionInfo
|
|
import gq.kirmanak.mealient.data.recipes.network.FullRecipeInfo
|
|
import gq.kirmanak.mealient.data.recipes.network.RecipeIngredientInfo
|
|
import gq.kirmanak.mealient.data.recipes.network.RecipeInstructionInfo
|
|
import gq.kirmanak.mealient.data.recipes.network.RecipeSummaryInfo
|
|
import gq.kirmanak.mealient.database.recipe.entity.RecipeEntity
|
|
import gq.kirmanak.mealient.database.recipe.entity.RecipeIngredientEntity
|
|
import gq.kirmanak.mealient.database.recipe.entity.RecipeInstructionEntity
|
|
import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity
|
|
import gq.kirmanak.mealient.datasource.v0.models.*
|
|
import gq.kirmanak.mealient.datasource.v1.models.*
|
|
import gq.kirmanak.mealient.datastore.recipe.AddRecipeDraft
|
|
import java.util.*
|
|
|
|
fun FullRecipeInfo.toRecipeEntity() = RecipeEntity(
|
|
remoteId = remoteId,
|
|
recipeYield = recipeYield
|
|
)
|
|
|
|
fun RecipeIngredientInfo.toRecipeIngredientEntity(remoteId: String) = RecipeIngredientEntity(
|
|
recipeId = remoteId,
|
|
note = note,
|
|
)
|
|
|
|
fun RecipeInstructionInfo.toRecipeInstructionEntity(remoteId: String) = RecipeInstructionEntity(
|
|
recipeId = remoteId,
|
|
text = text
|
|
)
|
|
|
|
fun GetRecipeSummaryResponseV0.toRecipeSummaryInfo() = RecipeSummaryInfo(
|
|
remoteId = remoteId.toString(),
|
|
name = name,
|
|
slug = slug,
|
|
description = description,
|
|
dateAdded = dateAdded,
|
|
dateUpdated = dateUpdated,
|
|
imageId = slug,
|
|
)
|
|
|
|
fun GetRecipeSummaryResponseV1.toRecipeSummaryInfo() = RecipeSummaryInfo(
|
|
remoteId = remoteId,
|
|
name = name,
|
|
slug = slug,
|
|
description = description,
|
|
dateAdded = dateAdded,
|
|
dateUpdated = dateUpdated,
|
|
imageId = remoteId,
|
|
)
|
|
|
|
fun RecipeSummaryInfo.toRecipeSummaryEntity() = RecipeSummaryEntity(
|
|
remoteId = remoteId,
|
|
name = name,
|
|
slug = slug,
|
|
description = description,
|
|
dateAdded = dateAdded,
|
|
dateUpdated = dateUpdated,
|
|
imageId = imageId,
|
|
)
|
|
|
|
fun VersionResponseV0.toVersionInfo() = VersionInfo(version)
|
|
|
|
fun VersionResponseV1.toVersionInfo() = VersionInfo(version)
|
|
|
|
fun AddRecipeDraft.toAddRecipeInfo() = AddRecipeInfo(
|
|
name = recipeName,
|
|
description = recipeDescription,
|
|
recipeYield = recipeYield,
|
|
recipeIngredient = recipeIngredients.map { AddRecipeIngredientInfo(note = it) },
|
|
recipeInstructions = recipeInstructions.map { AddRecipeInstructionInfo(text = it) },
|
|
settings = AddRecipeSettingsInfo(
|
|
public = isRecipePublic,
|
|
disableComments = areCommentsDisabled,
|
|
)
|
|
)
|
|
|
|
fun AddRecipeInfo.toDraft(): AddRecipeDraft = AddRecipeDraft(
|
|
recipeName = name,
|
|
recipeDescription = description,
|
|
recipeYield = recipeYield,
|
|
recipeInstructions = recipeInstructions.map { it.text },
|
|
recipeIngredients = recipeIngredient.map { it.note },
|
|
isRecipePublic = settings.public,
|
|
areCommentsDisabled = settings.disableComments,
|
|
)
|
|
|
|
fun GetRecipeResponseV0.toFullRecipeInfo() = FullRecipeInfo(
|
|
remoteId = remoteId.toString(),
|
|
name = name,
|
|
recipeYield = recipeYield,
|
|
recipeIngredients = recipeIngredients.map { it.toRecipeIngredientInfo() },
|
|
recipeInstructions = recipeInstructions.map { it.toRecipeInstructionInfo() }
|
|
)
|
|
|
|
fun GetRecipeIngredientResponseV0.toRecipeIngredientInfo() = RecipeIngredientInfo(
|
|
note = note,
|
|
)
|
|
|
|
fun GetRecipeInstructionResponseV0.toRecipeInstructionInfo() = RecipeInstructionInfo(
|
|
text = text
|
|
)
|
|
|
|
fun GetRecipeResponseV1.toFullRecipeInfo() = FullRecipeInfo(
|
|
remoteId = remoteId,
|
|
name = name,
|
|
recipeYield = recipeYield,
|
|
recipeIngredients = recipeIngredients.map { it.toRecipeIngredientInfo() },
|
|
recipeInstructions = recipeInstructions.map { it.toRecipeInstructionInfo() }
|
|
)
|
|
|
|
fun GetRecipeIngredientResponseV1.toRecipeIngredientInfo() = RecipeIngredientInfo(
|
|
note = note,
|
|
)
|
|
|
|
fun GetRecipeInstructionResponseV1.toRecipeInstructionInfo() = RecipeInstructionInfo(
|
|
text = text
|
|
)
|
|
|
|
fun AddRecipeInfo.toV0Request() = AddRecipeRequestV0(
|
|
name = name,
|
|
description = description,
|
|
recipeYield = recipeYield,
|
|
recipeIngredient = recipeIngredient.map { it.toV0Ingredient() },
|
|
recipeInstructions = recipeInstructions.map { it.toV0Instruction() },
|
|
settings = settings.toV0Settings(),
|
|
)
|
|
|
|
private fun AddRecipeSettingsInfo.toV0Settings() = AddRecipeSettingsV0(
|
|
disableComments = disableComments,
|
|
public = public,
|
|
)
|
|
|
|
private fun AddRecipeIngredientInfo.toV0Ingredient() = AddRecipeIngredientV0(
|
|
note = note,
|
|
)
|
|
|
|
private fun AddRecipeInstructionInfo.toV0Instruction() = AddRecipeInstructionV0(
|
|
text = text,
|
|
)
|
|
|
|
|
|
fun AddRecipeInfo.toV1CreateRequest() = CreateRecipeRequestV1(
|
|
name = name,
|
|
)
|
|
|
|
fun AddRecipeInfo.toV1UpdateRequest() = UpdateRecipeRequestV1(
|
|
description = description,
|
|
recipeYield = recipeYield,
|
|
recipeIngredient = recipeIngredient.map { it.toV1Ingredient() },
|
|
recipeInstructions = recipeInstructions.map { it.toV1Instruction() },
|
|
settings = settings.toV1Settings(),
|
|
)
|
|
|
|
private fun AddRecipeSettingsInfo.toV1Settings() = AddRecipeSettingsV1(
|
|
disableComments = disableComments,
|
|
public = public,
|
|
)
|
|
|
|
private fun AddRecipeIngredientInfo.toV1Ingredient() = AddRecipeIngredientV1(
|
|
id = UUID.randomUUID().toString(),
|
|
note = note,
|
|
)
|
|
|
|
private fun AddRecipeInstructionInfo.toV1Instruction() = AddRecipeInstructionV1(
|
|
id = UUID.randomUUID().toString(),
|
|
text = text,
|
|
ingredientReferences = emptyList(),
|
|
) |