224 lines
7.8 KiB
Kotlin
224 lines
7.8 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.RecipeSettingsInfo
|
|
import gq.kirmanak.mealient.data.recipes.network.RecipeSummaryInfo
|
|
import gq.kirmanak.mealient.data.share.ParseRecipeURLInfo
|
|
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.AddRecipeIngredientV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeInstructionV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeRequestV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.AddRecipeSettingsV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeIngredientResponseV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeInstructionResponseV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeResponseV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.GetRecipeSummaryResponseV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.ParseRecipeURLRequestV0
|
|
import gq.kirmanak.mealient.datasource.v0.models.VersionResponseV0
|
|
import gq.kirmanak.mealient.datasource.v1.models.AddRecipeIngredientV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.AddRecipeInstructionV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.AddRecipeSettingsV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.CreateRecipeRequestV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeIngredientResponseV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeInstructionResponseV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeResponseV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeSettingsResponseV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.GetRecipeSummaryResponseV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.ParseRecipeURLRequestV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.UpdateRecipeRequestV1
|
|
import gq.kirmanak.mealient.datasource.v1.models.VersionResponseV1
|
|
import gq.kirmanak.mealient.datastore.recipe.AddRecipeDraft
|
|
import java.util.*
|
|
|
|
fun FullRecipeInfo.toRecipeEntity() = RecipeEntity(
|
|
remoteId = remoteId,
|
|
recipeYield = recipeYield,
|
|
disableAmounts = settings.disableAmounts,
|
|
)
|
|
|
|
fun RecipeIngredientInfo.toRecipeIngredientEntity(remoteId: String) = RecipeIngredientEntity(
|
|
recipeId = remoteId,
|
|
note = note,
|
|
unit = unit,
|
|
food = food,
|
|
quantity = quantity,
|
|
title = title,
|
|
)
|
|
|
|
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() },
|
|
settings = RecipeSettingsInfo(disableAmounts = true)
|
|
)
|
|
|
|
fun GetRecipeIngredientResponseV0.toRecipeIngredientInfo() = RecipeIngredientInfo(
|
|
note = note,
|
|
unit = null,
|
|
food = null,
|
|
quantity = 1.0,
|
|
title = null,
|
|
)
|
|
|
|
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() },
|
|
settings = settings.toRecipeSettingsInfo(),
|
|
)
|
|
|
|
private fun GetRecipeSettingsResponseV1.toRecipeSettingsInfo() = RecipeSettingsInfo(
|
|
disableAmounts = disableAmount,
|
|
)
|
|
|
|
fun GetRecipeIngredientResponseV1.toRecipeIngredientInfo() = RecipeIngredientInfo(
|
|
note = note,
|
|
unit = unit?.name,
|
|
food = food?.name,
|
|
quantity = quantity,
|
|
title = title,
|
|
)
|
|
|
|
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(),
|
|
)
|
|
|
|
fun ParseRecipeURLInfo.toV1Request() = ParseRecipeURLRequestV1(
|
|
url = url,
|
|
includeTags = includeTags,
|
|
)
|
|
|
|
fun ParseRecipeURLInfo.toV0Request() = ParseRecipeURLRequestV0(
|
|
url = url,
|
|
)
|