from typing import List
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.api.digital_asset_acquisition import schema
from app.api.digital_asset_acquisition.service import DigitalAssetServise
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTPayloadSchema, get_current_student

digital_asset_router = APIRouter()

@digital_asset_router.post("/create_digital_asset", response_model_exclude_none=True)
async def create_digital_asset(request:List[schema.DigitalAssetCreate], db:Session = Depends(get_db), token:JWTPayloadSchema = Depends(get_current_student)):
    return await DigitalAssetServise(db,token).create_digital_asset(request)

@digital_asset_router.get("/get_digital_asset{group_id}", response_model_exclude_none=True)
async def get_digital_asset(group_id:int, db:Session = Depends(get_db), token:JWTPayloadSchema = Depends(get_current_student)):
    return await DigitalAssetServise(db,token).get_digital_asset(group_id)

@digital_asset_router.get("/get_sum_of_estimate_cost",response_model_exclude_none=True)
async def get_sum_of_estimate_cost(db:Session = Depends(get_db), token:JWTPayloadSchema = Depends(get_current_student)):
    return await DigitalAssetServise(db,token).get_sum_of_estimate_cost()

@digital_asset_router.put("/update_digital_asset", response_model_exclude_none=True)
async def update_digital_asset(request:List[schema.DigitalAssetUpdate], db:Session = Depends(get_db), token:JWTPayloadSchema = Depends(get_current_student)):
    return await DigitalAssetServise(db,token).update_digital_asset(request)

@digital_asset_router.delete("/delete_digital_asset", response_model_exclude_none=True)
async def delete_digital_asset(digital_id:int, db:Session = Depends(get_db), token:JWTPayloadSchema = Depends(get_current_student)):
    return await DigitalAssetServise(db,token).delete_digital_asset(digital_id)