# entrypoint/init_db.py

from src.base import Base
from src.ConexionSql.Postgres_conexion import PostgresConexion  # Asegúrate de tener esta clase implementada correctamente
from src.Credenciales.postgres_credencial import PostgresCredencial  # Asegúrate de tener esta clase implementada correctamente

from src.Credenciales.postgres_credencial_mmr import PostgresCredencialModel
from src.ApiKeys.openai_apikey_mmr import OpenAICredencialModel
from src.Llms.Modelos.Openai_model_mmr import ModeloOpenAIConfigModel
from src.TextManager.biblioteca_mmr import BibliotecaModel
from src.Llms.Embedders.Openai_embedder_mmr import OpenAIEmbedderModel

from dotenv import load_dotenv
import os

from entrypoint import ENV_PATH

# Ruta específica al archivo .env
dotenv_path = ENV_PATH

# Cargar el archivo
load_dotenv(dotenv_path)

titulo = os.getenv('DB_TITLE')
usuario = os.getenv('DB_USER')
passwrd = os.getenv('DB_PASSWORD')
host = os.getenv('DB_HOST')
port = os.getenv('DB_PORT')
db_name = os.getenv('DB_NAME')


db_credencial = PostgresCredencial(
    titulo=titulo,
    user=usuario,
    password=passwrd,
    host=host,
    port=port,
    dbname=db_name
)


def init_db():
    
    # Crear engine desde la clase de conexión PostgreSQL
    conexion = PostgresConexion(db_credencial)
    engine = conexion.engine  # Recuperamos el engine directamente

    print("Creando tablas...")
    Base.metadata.create_all(engine)
    print("¡Listo!")