package domain

type RecipeRepository interface {
	CreateRecipe(recipe *Recipe) error
	EditRecipe(recipe *Recipe, userId int) error
	DeleteRecipe(recipeId, userId int) error
	GetRecipe(id int, userId *int) (*Recipe, error)
	GetRecipes(ids []int, userId *int) ([]Recipe, error)
	SearchRecipes(filters SearchFilters, userId *int, favorites bool) ([]int, error)
	CreateRecipeTags(recipe Recipe, tags []string) error
	UpdateRecipeTags(recipe Recipe, tags []string) error
	GetUserRecipesIds(userId int) ([]int, error)
	GetUserFavoriteRecipesIds(userId int) ([]int, error)
	GetRecipeTags(recipe *Recipe) error
	GetRecipeFavorite(recipe *Recipe, userId int) error
	GetRecipeOfTheWeekId(userId *int) (*int, error)
	IsRecipeOwner(userId, recipeId int) (bool, error)
}
