"""DatasourceOperator class.

Warning: This operator is in development and is not yet ready for production use.
"""
from typing import Any

from dbgpt.core.awel import MapOperator

from ..base import BaseConnector


class DatasourceOperator(MapOperator[str, Any]):
    """The Datasource Operator."""

    def __init__(self, connector: BaseConnector, **kwargs):
        """Create the datasource operator."""
        super().__init__(**kwargs)
        self._connector = connector

    async def map(self, input_value: str) -> Any:
        """Execute the query."""
        return await self.blocking_func_to_async(self.query, input_value)

    def query(self, input_value: str) -> Any:
        """Execute the query."""
        return self._connector.run_to_df(input_value)
