from fastapi import APIRouter, Depends, HTTPException
from psycopg2.extras import DictCursor
from typing import Optional
from datetime import datetime
from utils import (
    verify_api_key,
)
from controllers.company import CompanyController
from models.company import Request

router = APIRouter(
    prefix="/companies",
    tags=["API Companies"]
)

@router.post("", status_code=201, summary="Registra ou atualiza uma empresa")
def create_or_update_company(payload: Request):
    result = CompanyController().store(payload.cookie)

    if result is None:
        raise HTTPException(status_code=404, detail="Empresa não encontrada")

    return result

@router.get("/{cnpj}", status_code=200, summary="Busca uma empresa por CNPJ")
def get_session_by_cnpj_api(cnpj: str, _=Depends(verify_api_key)):
    result = CompanyController().show(cnpj)

    if result is None:
        raise HTTPException(status_code=404, detail="Empresa não encontrada")

    return result

@router.delete("/{cnpj}", status_code=200, summary="Remove uma empresa por CNPJ")
def delete_session_by_cnpj_api(cnpj: str, _=Depends(verify_api_key)):
    result = CompanyController().delete(cnpj)

    if result is None:
        raise HTTPException(status_code=404, detail="Empresa não encontrada")

    return result