Sekooly / SUPABASE

1 stars 0 forks source link

Paginer sur: Eleves(+Trombinoscope) - Rendus - Fichiers - Espace etablissement restant - Conversations #111

Open Sekooly opened 3 years ago

Sekooly commented 3 years ago

Ces 6 tables/vues risquent de s'alourdir au fil des mois. Si la requête va à la bdd -> faire de la pagination !!!

Sekooly commented 3 years ago

Solution actuelle

get_resultat remplacé par la fonction récursive

//1st attempt: get_with_pagination(url, 0)
var resultat_final = []
function get_resultat(url, offset_value, en_asynchrone){

    var xmlHttp = new XMLHttpRequest();
    if(!offset_value) resultat_final = []

    //if from supabase -> add offset
    if(url.includes("supabase") && offset_value){
      //console.log("AVANT",url)
      url = url + "&offset=" + offset_value

    }

    //console.log("APRES",url)

    xmlHttp.open( "GET", url, en_asynchrone ); // false for synchronous request    

    //if from suppabase AND first attempt -> add count exact
    if(url.includes("supabase") && !offset_value){
      xmlHttp.setRequestHeader("Prefer", "count=exact")
    }

    xmlHttp.send( null );

    nb_lignes_total = nombre_de_rows(xmlHttp)
    if(nb_lignes_total) stocker("nb_lignes_total", nb_lignes_total)

    var my_next_offset = next_offset(xmlHttp)

    //store results
    resultat_final.push(JSON.parse(xmlHttp.responseText))

    if(Number(recuperer("nb_lignes_total")) > my_next_offset){
      get_resultat(url, next_offset(xmlHttp),en_asynchrone)
    }

    effacer("nb_lignes_total")

    if(resultat_final.length === 1){
      return resultat_final[0]
    }else{
      return  [].concat.apply([], resultat_final);
    }

}