from __future__ import annotations

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from app.models.database import get_db
from app.schemas.licensing import ActivationRequest, ActivationResponse, DeactivationRequest, EmptyResponse, ValidationRequest
from app.services.licensing import LicensingService

router = APIRouter(prefix="/v1/licenses", tags=["licences"])


@router.post("/activate", response_model=ActivationResponse, response_model_by_alias=True)
def activate(request: ActivationRequest, session: Session = Depends(get_db)) -> ActivationResponse:
    return LicensingService(session).activate(request)


@router.post("/validate", response_model=ActivationResponse, response_model_by_alias=True)
def validate(request: ValidationRequest, session: Session = Depends(get_db)) -> ActivationResponse:
    return LicensingService(session).validate(request)


@router.post("/deactivate", response_model=EmptyResponse, response_model_by_alias=True)
def deactivate(request: DeactivationRequest, session: Session = Depends(get_db)) -> EmptyResponse:
    LicensingService(session).deactivate(request)
    return EmptyResponse()
