from config import Config
from services.db import get_connection, scope_clause

SCHEMA = Config.SCHEMA


def get_epci():
    """
    Récupère la liste des EPCI disponibles dans la base (limitée au
    périmètre AULA configuré dans Config.EPCI_SCOPE).

    Retour :
        Liste de chaînes de caractères contenant les noms d'EPCI
    """

    conn = get_connection()
    cur = conn.cursor()

    try:

        clause, params = scope_clause()

        query = f"""
            SELECT DISTINCT nom_epci
            FROM {SCHEMA}.communes
            WHERE {clause}
            ORDER BY nom_epci
        """

        cur.execute(query, params)

        rows = cur.fetchall()

        # transformation en liste simple
        epci_list = [row[0] for row in rows]

        return epci_list

    finally:

        cur.close()
        conn.close()


def get_communes(epci=None):
    """
    Récupère la liste des communes.

    Paramètres :
        epci (str | None) : filtre optionnel sur un EPCI

    Retour :
        Liste de noms de communes
    """

    conn = get_connection()
    cur = conn.cursor()

    try:

        clause, params = scope_clause()

        query = f"""
            SELECT DISTINCT nom
            FROM {SCHEMA}.communes
            WHERE {clause}
        """

        # filtre EPCI si fourni
        if epci:
            query += " AND nom_epci = %s"
            params.append(epci)

        query += """
            ORDER BY nom
        """

        cur.execute(query, params)

        rows = cur.fetchall()

        communes = [row[0] for row in rows]

        return communes

    finally:

        cur.close()
        conn.close()
