'''

文档管理模块api

'''

from flask import jsonify, request

from flask import Blueprint

from utils.auth import validate_user, validate_permissions

from utils.web_utils import get_req_para, validate_params, generate_download_file

from utils.common_utils import gen_json_response

from web_apps.rag.services.document_api_services import DocumentApiService

document_bp = Blueprint('document', __name__)





@document_bp.route('/train', methods=['POST'])

@validate_user

@validate_permissions([])

def document_train():

    '''

    训练知识库

    '''

    req_dict = get_req_para(request)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.train_obj(req_dict)

    return jsonify(res_data)







@document_bp.route('/list', methods=['GET'])

@validate_user

@validate_permissions([])

def document_list():

    '''

    列表查询接口

    '''

    req_dict = get_req_para(request)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.get_obj_list(req_dict)

    return jsonify(res_data)

    



@document_bp.route('/queryAllList', methods=['GET'])

@validate_user

@validate_permissions([])

def document_all_list():

    '''

    全量列表查询接口

    '''

    req_dict = get_req_para(request)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.get_obj_all_list(req_dict)

    return jsonify(res_data)

    



@document_bp.route('/queryById', methods=['GET'])

@validate_user

@validate_permissions([])

def document_detail():

    '''

    详情

    '''

    req_dict = get_req_para(request)

    verify_dict = {

        "id": {

            "name": "id",

            "required": True

        }

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.get_obj_detail(req_dict)

    return jsonify(res_data)

    



@document_bp.route('/add', methods=['POST'])

@validate_user

@validate_permissions([])

def document_add():

    '''

    添加

    '''

    req_dict = get_req_para(request)

    verify_dict = {

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.add_obj(req_dict)

    return jsonify(res_data)

    



@document_bp.route('/edit', methods=['POST', 'PUT'])

@validate_user

@validate_permissions([])

def document_edit():

    '''

    编辑

    '''

    req_dict = get_req_para(request)

    verify_dict = {

        "id": {

            "name": "id",

            "required": True

        }

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.edit_obj(req_dict)

    return jsonify(res_data)

    



@document_bp.route('/delete', methods=['POST', 'DELETE'])

@validate_user

@validate_permissions([])

def document_delete():

    '''

    删除

    '''

    req_dict = get_req_para(request)

    verify_dict = {

        "id": {

            "name": "id",

            "required": True

        }

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.delete_obj(req_dict)

    return jsonify(res_data)

    



@document_bp.route('/deleteBatch', methods=['POST', 'DELETE'])

@validate_user

@validate_permissions([])

def document_deleteBatch():

    '''

    批量删除

    '''

    req_dict = get_req_para(request)

    verify_dict = {

        "ids": {

            "name": "id列表",

            "required": True

        }

    }

    not_valid = validate_params(req_dict, verify_dict)

    if not_valid:

        return jsonify(gen_json_response(code=400, msg=not_valid))

    res_data = DocumentApiService.delete_batch(req_dict)

    return jsonify(res_data)