import json
from time import time
from fastapi import APIRouter
from app.config import config
from app.utils.logger_util import logger
from app.utils.response_util import response
from app import mongo

router = APIRouter()


@router.get("/get-all", tags=[""])
async def get_all():
  start_time = time()

  sizes = await mongo.template_sizes_collection.find({}, {
    "_id": False
  }).sort("id", mongo.asc).to_list()

  return response({
    "sizes": sizes
  }, start_time=start_time)


@router.post("/create", tags=[""])
async def create(params: dict):
  start_time = time()
  data = params["size"]

  data["id"] = await mongo.get_next_id(mongo.template_sizes_collection)

  logger.json(data)

  try:
    await mongo.template_sizes_collection.insert_one(data)

    return response({
      "message": "Размер создан",
      "ok": True
    }, start_time=start_time)
  except Exception as e:
    return response({
      "message": str(e),
      "ok": False
    }, start_time=start_time, code=400)


@router.post("/update", tags=[""])
async def update(params: dict):
  start_time = time()
  data = params["data"]

  logger.json(data)

  try:
    await mongo.template_sizes_collection.update_one({
      "id": data["id"]
    }, {
      "$set": data
    })

    return response({
      "message": "Данные размера обновлены",
      "ok": True
    }, start_time=start_time)
  except Exception as e:
    return response({
      "message": str(e),
      "ok": False
    }, start_time=start_time, code=400)


@router.post("/delete", tags=[""])
async def delete(params: dict):
  start_time = time()
  size_id = params["templateId"]

  logger.json(size_id)

  try:
    await mongo.template_sizes_collection.delete_one({
      "id": size_id
    })

    return response({
      "message": "Размер удален",
      "ok": True
    }, start_time=start_time)
  except Exception as e:
    return response({
      "message": str(e),
      "ok": False
    }, start_time=start_time, code=400)
