class AppRoutes:
    def __init__(self) -> None:
        self.prefix = "/api"

        self.auth_token = "/api/auth/token"
        self.auth_token_long = "/api/auth/token/long"
        self.auth_refresh = "/api/auth/refresh"
        self.users_sign_ups = "/api/users/sign-ups"
        self.users = "/api/users"
        self.users_self = "/api/users/self"
        self.users_api_tokens = "/api/users/api-tokens"
        self.groups = "/api/groups"
        self.groups_self = "/api/groups/self"
        self.recipes_summary = "/api/recipes/summary"
        self.recipes_summary_untagged = "/api/recipes/summary/untagged"
        self.recipes_summary_uncategorized = "/api/recipes/summary/uncategorized"
        self.recipes_category = "/api/recipes/category"
        self.recipes_tag = "/api/recipes/tag"
        self.recipes_create = "/api/recipes/create"
        self.recipes_create_url = "/api/recipes/create-url"
        self.categories = "/api/categories"
        self.categories_empty = "/api/categories/empty"
        self.tags = "/api/tags"
        self.tags_empty = "/api/tags/empty"
        self.about_events = "/api/about/events"
        self.meal_plans_all = "/api/meal-plans/all"
        self.meal_plans_create = "/api/meal-plans/create"
        self.meal_plans_this_week = "/api/meal-plans/this-week"
        self.meal_plans_today = "/api/meal-plans/today"
        self.meal_plans_today_image = "/api/meal-plans/today/image"
        self.group_cookbook = "/api/groups/cookbooks"
        self.site_settings = "/api/site-settings"
        self.site_settings_webhooks_test = "/api/site-settings/webhooks/test"
        self.themes = "/api/themes"
        self.themes_create = "/api/themes/create"
        self.backups_available = "/api/backups/available"
        self.backups_export_database = "/api/backups/export/database"
        self.backups_upload = "/api/backups/upload"
        self.migrations = "/api/migrations"
        self.debug = "/api/debug"
        self.debug_statistics = "/api/debug/statistics"
        self.debug_version = "/api/debug/version"
        self.debug_last_recipe_json = "/api/debug/last-recipe-json"
        self.debug_log = "/api/debug/log"
        self.utils_download = "/api/utils/download"

    def users_sign_ups_token(self, token):
        return f"{self.prefix}/users/sign-ups/{token}"

    def users_id(self, id):
        return f"{self.prefix}/users/{id}"

    def users_id_reset_password(self, id):
        return f"{self.prefix}/users/{id}/reset-password"

    def users_id_image(self, id):
        return f"{self.prefix}/users/{id}/image"

    def users_id_password(self, id):
        return f"{self.prefix}/users/{id}/password"

    def users_api_tokens_token_id(self, token_id):
        return f"{self.prefix}/users/api-tokens/{token_id}"

    def groups_id(self, id):
        return f"{self.prefix}/groups/{id}"

    def recipes_recipe_slug(self, recipe_slug):
        return f"{self.prefix}/recipes/{recipe_slug}"

    def recipes_recipe_slug_image(self, recipe_slug):
        return f"{self.prefix}/recipes/{recipe_slug}/image"

    def recipes_recipe_slug_assets(self, recipe_slug):
        return f"{self.prefix}/recipes/{recipe_slug}/assets"

    def categories_category(self, category):
        return f"{self.prefix}/categories/{category}"

    def tags_tag(self, tag):
        return f"{self.prefix}/tags/{tag}"

    def media_recipes_recipe_slug_images_file_name(self, recipe_slug, file_name):
        return f"{self.prefix}/media/recipes/{recipe_slug}/images/{file_name}"

    def media_recipes_recipe_slug_assets_file_name(self, recipe_slug, file_name):
        return f"{self.prefix}/media/recipes/{recipe_slug}/assets/{file_name}"

    def about_events_id(self, id):
        return f"{self.prefix}/about/events/{id}"

    def meal_plans_plan_id(self, plan_id):
        return f"{self.prefix}/meal-plans/{plan_id}"

    def meal_plans_id_shopping_list(self, id):
        return f"{self.prefix}/meal-plans/{id}/shopping-list"

    def group_cookbook_id(self, id):
        return f"{self.prefix}/groups/cookbooks/{id}"

    def themes_id(self, id):
        return f"{self.prefix}/themes/{id}"

    def backups_file_name_download(self, file_name):
        return f"{self.prefix}/backups/{file_name}/download"

    def backups_file_name_import(self, file_name):
        return f"{self.prefix}/backups/{file_name}/import"

    def backups_file_name_delete(self, file_name):
        return f"{self.prefix}/backups/{file_name}/delete"

    def migrations_import_type_file_name_import(self, import_type, file_name):
        return f"{self.prefix}/migrations/{import_type}/{file_name}/import"

    def migrations_import_type_file_name_delete(self, import_type, file_name):
        return f"{self.prefix}/migrations/{import_type}/{file_name}/delete"

    def migrations_import_type_upload(self, import_type):
        return f"{self.prefix}/migrations/{import_type}/upload"

    def debug_log_num(self, num):
        return f"{self.prefix}/debug/log/{num}"
