from elasticsearch import Elasticsearch, helpers
import json
import boto3 # type: ignore
from utils.util import get_environment # type: ignore


def get_secret(secret_name, region_name):
    session = boto3.session.Session() # type: ignore
    client = session.client(
        service_name='secretsmanager',
        region_name=region_name
    )
    try:
        get_secret_value_response = client.get_secret_value(
            SecretId=secret_name
        )
        return get_secret_value_response["SecretString"]
    except Exception as e:
        print(f"Error retrieving secret: {e}")
        raise e

def get_elasticsearch_client():
    environment = get_environment()
    if environment == "PROD":
        secret_name="prod_es_secrets"
        region_name="us-east-2"
    elif environment == "STAGING":
        secret_name = "staging_es_secrets"
        region_name="us-east-2"
    else:
        raise Exception("Invalid environment.")

    value = get_secret(secret_name, region_name)
    value = json.loads(value)
    host = value["host"]
    api_key = value["api_key"]
    return Elasticsearch(
        hosts=[host],
        api_key=api_key,
    )


