import json

from fastapi import APIRouter, Response, status
from pydantic import BaseModel
from api.middleware.verify_token import VerifyTokenRoute
import backend.mongo as mongo
import backend.elastic as elastic

document_routes = APIRouter(route_class=VerifyTokenRoute)


class Document(BaseModel):
    name: str
    access: list
    data: str
    owner: str


class Data(BaseModel):
    data: str


@document_routes.post("/document/create")
def create(aux: Document, response: Response):
    mongo.create_document(json.loads(json.dumps(aux.__dict__)))
    response.status_code = status.HTTP_201_CREATED


@document_routes.get("/document/{id}")
def get_by_id(id: str):
    return mongo.get_document_by_id(id)


@document_routes.put("/document/{id}")
def edit_data(data: Data, id: str, response: Response):
    mongo.edit_data(id, data.data)
    response.status_code = status.HTTP_202_ACCEPTED


@document_routes.get("/document")
def search():
    return elastic.search("test-index")