from fastapi import APIRouter

from src.apps.auth.routers.auth_router import router as auth_router
from src.apps.base.routers.country import router as country_router
from src.apps.base.routers.locations import router as location_router
from src.apps.base.routers.region import router as region_router
from src.apps.base.routers.sub_region import router as sub_region_router
from src.apps.files.routers.file import router as file_router
from src.apps.keyword_generator.routers.keyword_generator import (
    router as keyword_generator_router,
)
from src.apps.match.routers.wine_match import router as match_router
from src.apps.role_permission.routers import role_router
from src.apps.user.routers.user_routers import router as user_router
from src.apps.web_crawler.routers.web_crawler import router as web_crawler_router
from src.apps.wine_match.routers.wine_match import router as wine_match_router
from src.apps.wine_settings.routers.appellations import (
    router as wine_appellation_router,
)
from src.apps.wine.variety.routes.variety import router as variety_router
from src.apps.base.routers.color import router as color_router
from src.apps.base.routers.sweetness import router as sweetness_router
from src.apps.base.routers.type import router as type_router
from src.apps.wine.wine.routers.wine_db import router as wine_addition_router
from src.apps.wine.producer.routers.producer import router as producer_router
from src.apps.wine.keyword_substitution.routes.keyword_substitution import router as keyword_substitution_router
from src.apps.wine.keyword_spread.routers.keyword_spread import router as keyword_spread_router
from src.apps.wine.vintage.routers.vintage import router as vintage_router
from src.apps.wine.word_alias.routers.word_alias import router as word_alias_router
from src.apps.wine.word_elimination.routers.word_elimination import router as word_elimination_router
from src.apps.wine.word_reserved.routers.word_reserved import router as word_reserved_router
from src.apps.wine.word_alias.routers.word_change import router as word_change_router
from src.apps.wine.wine_log.routers.job_log import router as job_log_router
from src.apps.wine.appellation.routers.appellation import router as appellation_router
from src.apps.wine.appellation.routers.sub_appellation import router as sub_appellation_router
from src.utils.constants import API_PREFIXES

# Create v1 router with no prefix (prefix will be added in main api_routers.py)
router = APIRouter()

# Include all app routers for v1 here
# router.include_router(auth_router)

router.include_router(auth_router, prefix=API_PREFIXES.AUTH, tags=["Auth"])
router.include_router(user_router, prefix=API_PREFIXES.USER, tags=["User"])

router.include_router(role_router, prefix=API_PREFIXES.ROLE, tags=["Roles & Permissions"])
router.include_router(match_router, prefix=API_PREFIXES.MATCH, tags=["RWINE MATCH"])
router.include_router(keyword_generator_router, prefix=API_PREFIXES.KEYWORD_GENERATOR, tags=["Keyword Generator"])

router.include_router(country_router, prefix=API_PREFIXES.COUNTRY, tags=["Countries"])
router.include_router(region_router, prefix=API_PREFIXES.REGION, tags=["Regions"])
router.include_router(sub_region_router, prefix=API_PREFIXES.SUB_REGION, tags=["Sub-Regions"])
# router.include_router(location_router)
router.include_router(appellation_router, prefix=API_PREFIXES.APPELLATION, tags=["Appellations"])
router.include_router(sub_appellation_router, prefix=API_PREFIXES.SUB_APPELLATION, tags=["Sub-Appellations"])
router.include_router(wine_appellation_router)
router.include_router(web_crawler_router)
router.include_router(file_router)
# router.include_router(user_router)
router.include_router(wine_match_router, prefix=API_PREFIXES.WINE_MATCH, tags=["Wine Match"])
router.include_router(variety_router, prefix=API_PREFIXES.VARIETY, tags=["Varieties"])
router.include_router(color_router, prefix=API_PREFIXES.COLOR, tags=["Colors"])
router.include_router(sweetness_router, prefix=API_PREFIXES.SWEETNESS, tags=["Sweetnesses"])
router.include_router(type_router, prefix=API_PREFIXES.TYPE, tags=["Types"])
router.include_router(wine_addition_router, prefix=API_PREFIXES.WINE, tags=["Wines"])
router.include_router(producer_router, prefix=API_PREFIXES.PRODUCER, tags=["Producers"])
router.include_router(keyword_substitution_router, prefix=API_PREFIXES.KEYWORD_SUBSTITUTION, tags=["Keyword Substitutions"])
router.include_router(keyword_spread_router, prefix=API_PREFIXES.KEYWORD_SPREAD, tags=["Keyword Spreads"])
router.include_router(vintage_router, prefix=API_PREFIXES.VINTAGE, tags=["Vintages"])
router.include_router(word_alias_router, prefix=API_PREFIXES.WORD_ALIAS, tags=["Word Aliases"])
router.include_router(word_change_router, prefix=API_PREFIXES.WORD_CHANGE, tags=["Word Changes"])
router.include_router(word_elimination_router, prefix=API_PREFIXES.WORD_ELIMINATION, tags=["Word Eliminations"])
router.include_router(word_reserved_router, prefix=API_PREFIXES.WORD_RESERVED, tags=["Reserved Words"])
router.include_router(job_log_router, prefix=API_PREFIXES.JOB_LOG, tags=["Job Logs"])