from flask import jsonify, request
from app.api import api_bp
from app.services.feature_extractor import get_feature_extractor
from app.services.image_search import ImageSearch
from app.services.image_upload import ImageUpload
from app.services.milvus import MilvusClient


@api_bp.route('/hello', methods=['GET'])
def hello_world():
    """Hello World API 端点"""
    return jsonify({
        'message': 'Hello, World!',
        'status': 'success'
    })

@api_bp.route('/hello/<name>', methods=['GET'])
def hello_name(name):
    """个性化问候 API 端点"""
    return jsonify({
        'message': f'Hello, {name}!',
        'status': 'success'
    })

@api_bp.route('/upload', methods=['PUT'])
def upload():
    # 获取 JSON 格式的请求体数据
    data = request.get_json()
    # 访问具体字段
    bucket = data.get('bucket')
    image2keys = data.get('image2keys')

    milvus = MilvusClient().connect()
    image_upload = ImageUpload(get_feature_extractor(), milvus)
    image_upload.upload_many(bucket, image2keys)
    return jsonify({
        'code': 0,
        'message': '',
    })

@api_bp.route('/search', methods=['GET'])
def search():
    image = request.args.get("image")
    top_k = request.args.get("top_k", type=int)
    bucket = request.args.get("bucket")

    milvus = MilvusClient().connect()

    result = ImageSearch(get_feature_extractor(), milvus).image_to_image_search(bucket, image, top_k)

    return jsonify({
        'code': 0,
        'message': '',
        'data': result,
    })