import click
import logging

from pilot.configs.model_config import DATASETS_DIR

API_ADDRESS: str = "http://127.0.0.1:5000"

logger = logging.getLogger("dbgpt_cli")


@click.group("knowledge")
@click.option(
    "--address",
    type=str,
    default=API_ADDRESS,
    required=False,
    show_default=True,
    help=("Address of the Api server."),
)
def knowledge_cli_group(address: str):
    """Knowledge command line tool"""
    global API_ADDRESS
    API_ADDRESS = address


@knowledge_cli_group.command()
@click.option(
    "--vector_name",
    required=False,
    type=str,
    default="default",
    show_default=True,
    help="Your vector store name",
)
@click.option(
    "--vector_store_type",
    required=False,
    type=str,
    default="Chroma",
    show_default=True,
    help="Vector store type",
)
@click.option(
    "--local_doc_dir",
    required=False,
    type=str,
    default=DATASETS_DIR,
    show_default=True,
    help="Your document directory",
)
@click.option(
    "--skip_wrong_doc",
    required=False,
    type=bool,
    default=False,
    is_flag=True,
    show_default=True,
    help="Skip wrong document",
)
@click.option(
    "--max_workers",
    required=False,
    type=int,
    default=None,
    help="The maximum number of threads that can be used to upload document",
)
def load(
    vector_name: str,
    vector_store_type: str,
    local_doc_dir: str,
    skip_wrong_doc: bool,
    max_workers: int,
):
    """Load you local knowledge to DB-GPT"""
    from pilot.server.knowledge._cli.knowledge_client import knowledge_init

    knowledge_init(
        API_ADDRESS,
        vector_name,
        vector_store_type,
        local_doc_dir,
        skip_wrong_doc,
        max_workers,
    )
