from fastapi import APIRouter

from app.routers import (
    admin_agent,
    admin_announcement,
    admin_auth,
    admin_cloud_server,
    admin_dashboard,
    admin_finance,
    admin_instances,
    admin_mall,
    admin_membership,
    admin_promo_code,
    admin_product,
    admin_product_group,
    admin_settings,
    admin_service_orders,
    admin_tasks,
    admin_tickets,
    admin_upstream_actions,
    admin_user,
    agent,
    auth,
    cart,
    commercial_activity_gate,
    instances,
    instances_upgrade,
    membership,
    notifications,
    oauth_gate,
    orders,
    points,
    promotion,
    recharge,
    security_groups,
    store,
    tickets,
    user,
    verification,
    vnc,
)

api_v1_router = APIRouter(prefix="/api/v1")
api_v1_router.include_router(auth.router, prefix="/auth", tags=["auth"])
api_v1_router.include_router(user.router, prefix="/users", tags=["users"])
api_v1_router.include_router(membership.router, prefix="/membership", tags=["membership"])
api_v1_router.include_router(points.router, prefix="/points", tags=["points"])
api_v1_router.include_router(store.router, prefix="/store", tags=["store"])
api_v1_router.include_router(cart.router, prefix="/cart", tags=["cart"])
api_v1_router.include_router(commercial_activity_gate.router, tags=["commercial-activity-gate"])
api_v1_router.include_router(oauth_gate.router, tags=["oauth-gate"])
api_v1_router.include_router(orders.router, prefix="/orders", tags=["orders"])
api_v1_router.include_router(instances.router, prefix="/instances", tags=["instances"])
api_v1_router.include_router(instances_upgrade.router, prefix="/instances", tags=["instances"])
api_v1_router.include_router(security_groups.router, prefix="/security-groups", tags=["security-groups"])
api_v1_router.include_router(
    security_groups.rule_router, prefix="/security-group-rules", tags=["security-group-rules"]
)
api_v1_router.include_router(
    security_groups.protocol_router,
    prefix="/security-group-rule-protocols",
    tags=["security-group-rule-protocols"],
)
api_v1_router.include_router(recharge.router, prefix="/recharge", tags=["recharge"])
api_v1_router.include_router(tickets.router, prefix="/tickets", tags=["tickets"])
api_v1_router.include_router(promotion.router, prefix="/promotion", tags=["promotion"])
api_v1_router.include_router(notifications.router, prefix="/notifications", tags=["notifications"])
api_v1_router.include_router(agent.router, prefix="/agent", tags=["agent"])
# VNC: /api/v1/instances/{id}/vnc-ticket + /api/v1/vnc/{ticket}
api_v1_router.include_router(vnc.router, tags=["vnc"])
api_v1_router.include_router(verification.router, tags=["verification"])
api_v1_router.include_router(admin_auth.router, prefix="/admin/auth", tags=["admin-auth"])
api_v1_router.include_router(admin_dashboard.router, prefix="/admin/dashboard", tags=["admin-dashboard"])
api_v1_router.include_router(admin_user.router, prefix="/admin/users", tags=["admin-users"])
api_v1_router.include_router(admin_instances.router, prefix="/admin/instances", tags=["admin-instances"])
api_v1_router.include_router(admin_finance.router, prefix="/admin/finance", tags=["admin-finance"])
api_v1_router.include_router(admin_membership.router, prefix="/admin/membership", tags=["admin-membership"])
api_v1_router.include_router(admin_settings.router, prefix="/admin/settings", tags=["admin-settings"])
api_v1_router.include_router(admin_promo_code.router, prefix="/admin/promo-codes", tags=["admin-promo-codes"])
api_v1_router.include_router(admin_mall.router, prefix="/admin/mall", tags=["admin-mall"])
api_v1_router.include_router(admin_service_orders.router, prefix="/admin/service-orders", tags=["admin-service-orders"])
api_v1_router.include_router(admin_tickets.router, prefix="/admin/tickets", tags=["admin-tickets"])
api_v1_router.include_router(admin_tasks.router, prefix="/admin", tags=["admin-tasks"])
api_v1_router.include_router(
    admin_cloud_server.router, prefix="/admin/cloud-servers", tags=["admin-cloud-servers"]
)
api_v1_router.include_router(
    admin_upstream_actions.router, prefix="/admin/upstream-actions", tags=["admin-upstream-actions"]
)
api_v1_router.include_router(
    admin_product_group.router, prefix="/admin/product-catalog", tags=["admin-product-catalog"]
)
api_v1_router.include_router(
    admin_product.router, prefix="/admin/products", tags=["admin-products"]
)
api_v1_router.include_router(
    admin_agent.router, prefix="/admin", tags=["admin-agent"]
)
api_v1_router.include_router(
    admin_announcement.router, prefix="/admin/announcements", tags=["admin-announcements"]
)
