WIP - Complete App refactoring
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
//
|
||||
// PersistenceInterface.swift
|
||||
// Nextcloud Cookbook iOS Client
|
||||
//
|
||||
// Created by Vincent Meilinger on 06.05.24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
import KeychainSwift
|
||||
|
||||
|
||||
protocol CookbookInterface {
|
||||
/// A unique id of the interface. Used to associate recipes to their respective accounts.
|
||||
var id: String { get }
|
||||
}
|
||||
|
||||
protocol ReadInterface {
|
||||
/// Get either the full image or a thumbnail sized version.
|
||||
/// - Parameters:
|
||||
/// - id: The according recipe id.
|
||||
/// - size: The size of the image.
|
||||
/// - Returns: The image of the recipe with the specified id. A UserAlert if the request fails, otherwise nil.
|
||||
func getImage(
|
||||
id: String,
|
||||
size: RecipeImage.RecipeImageSize
|
||||
) async -> (UIImage?, UserAlert?)
|
||||
|
||||
/// Get all recipe stubs.
|
||||
/// - Returns: A list of all recipes.
|
||||
func getRecipeStubs(
|
||||
) async -> ([RecipeStub]?, UserAlert?)
|
||||
|
||||
/// Get the recipe with the specified id.
|
||||
/// - Parameters:
|
||||
/// - id: The recipe id.
|
||||
/// - Returns: The recipe if it exists. A UserAlert if the request fails.
|
||||
func getRecipe(
|
||||
id: String
|
||||
) async -> (Recipe?, UserAlert?)
|
||||
|
||||
/// Get all categories.
|
||||
/// - Returns: A list of categories. A UserAlert if the request fails.
|
||||
func getCategories(
|
||||
) async -> ([Category]?, UserAlert?)
|
||||
|
||||
/// Get all recipes of a specified category.
|
||||
/// - Parameters:
|
||||
/// - categoryName: The category name.
|
||||
/// - Returns: A list of recipes. A UserAlert if the request fails.
|
||||
func getRecipeStubsForCategory(
|
||||
named categoryName: String
|
||||
) async -> ([RecipeStub]?, UserAlert?)
|
||||
|
||||
/// Get all keywords/tags.
|
||||
/// - Returns: A list of tag strings. A UserAlert if the request fails.
|
||||
func getTags(
|
||||
) async -> ([RecipeKeyword]?, UserAlert?)
|
||||
|
||||
/// Get all recipes tagged with the specified keyword.
|
||||
/// - Parameters:
|
||||
/// - keyword: The keyword.
|
||||
/// - Returns: A list of recipes tagged with the specified keyword. A UserAlert if the request fails.
|
||||
func getRecipesTagged(
|
||||
keyword: String
|
||||
) async -> ([RecipeStub]?, UserAlert?)
|
||||
}
|
||||
|
||||
protocol WriteInterface {
|
||||
/// Post either the full image or a thumbnail sized version.
|
||||
/// - Parameters:
|
||||
/// - id: The according recipe id.
|
||||
/// - size: The size of the image.
|
||||
/// - Returns: A UserAlert if the request fails, otherwise nil.
|
||||
func postImage(
|
||||
id: String,
|
||||
image: UIImage,
|
||||
size: RecipeImage.RecipeImageSize
|
||||
) async -> (UserAlert?)
|
||||
|
||||
/// Create a new recipe.
|
||||
/// - Parameters:
|
||||
/// - Returns: A UserAlert if the request fails. Nil otherwise.
|
||||
func postRecipe(
|
||||
recipe: Recipe
|
||||
) async -> (UserAlert?)
|
||||
|
||||
/// Update an existing recipe with new entries.
|
||||
/// - Parameters:
|
||||
/// - recipe: The recipe.
|
||||
/// - Returns: A UserAlert if the request fails. Nil otherwise.
|
||||
func updateRecipe(
|
||||
recipe: Recipe
|
||||
) async -> (UserAlert?)
|
||||
|
||||
/// Delete the recipe with the specified id.
|
||||
/// - Parameters:
|
||||
/// - id: The recipe id.
|
||||
/// - Returns: A UserAlert if the request fails. Nil otherwise.
|
||||
func deleteRecipe(
|
||||
id: String
|
||||
) async -> (UserAlert?)
|
||||
|
||||
/// Rename an existing category.
|
||||
/// - Parameters:
|
||||
/// - categoryName: The name of the category to be renamed.
|
||||
/// - newName: The new category name.
|
||||
/// - Returns: A UserAlert if the request fails.
|
||||
func renameCategory(
|
||||
named categoryName: String,
|
||||
newName: String
|
||||
) async -> (UserAlert?)
|
||||
}
|
||||
Reference in New Issue
Block a user