dbsearch

1.1.0 • Public • Published

DBSEARCH

Recherche dans une ou plusieurs bases de données pour des mots-clés de type fulltext ou integer.

Installation

npm install dbsearch

Usage

  • dbsearch.generate_query(q, table)
    • Génère un requête SQL, mais ne l'exécute pas
    console.log(dbsearch.generate_query(q,table));
    
  • dbsearch.execute_query(q, table, sql, function)
    • Génère et exécute la requête contre le serveur
    dbsearch.execute_query(q,table,sql, function(err, data) {
        if (err){console.log(err);}
        console.log(data)
    });
    
var q = "dor mar 214"; // Tous les keywords qui doivent être cherchés dans les tables. Si plusieurs mots sont présents dans q, alors chaque mot doit ête trouvé dans la table afin de retourner un résultat.
var table = [
    {
        type: "pharmacien", //Sera retourné dans la première colonne du résultat, utile lorsque la recherche est effectuée dans plusieurs tables.
        table: "prod_pharmacien.pharmacien", //chemin complet de la table à rechercher (db.table)
        colonne_text: ["prod_pharmacien.pharmacien.nom", "prod_pharmacien.pharmacien.prenom"], //chemin complet de toutes les colonnes de type texte (varchar, string, text...) à rechercher. !!! Toutes ces colonnes doivent posséder un index de type FULLTEXT
        colonne_numeric: ["prod_pharmacien.pharmacien.licence"], // chemin complet de toutes les colonnes de type numeric (integer, smallinteger, ...) à rechercher. Ces colonnes devraient avoir un index de type unique ou index
        colonne_a_retourner: ["prod_pharmacien.pharmacien.nom", "prod_pharmacien.pharmacien.prenom", "prod_pharmacien.pharmacien.licence", "prod_pharmacien.pharmacien.statut"], //chemin complet des colonnes à retourner
        join: [] //requete MYSQL pour faire le JOIN avec d'autres tables
    },
    {
        type: "pharmacie",
        table: "prod_pharmacies.pharmacies",
        colonne_text: ["nom", "adresse_ligne_1", "municipalite"],
        colonne_numeric: ["phone","fax"],
        colonne_a_retourner: ["nom", "adresse_ligne_1", "municipalite"],
        join: []
    }
];
var sql  = {
  host     : '',
  user     : '',
  password : ''
};

Voir demo.js

Logique complète

Si abc def && colonne_text
abc AND def AGAINST colonne_text

Si abc def 123 456 && colonne_text
abc AND def AND 123 AND 456 AGAINST colonne_text

Si 123 456 && colonne_text
123 AND 456 AGAINST colonne_text



Si abc def && colonne_numeric
NULL

Si 123 456 && colonne_numeric
123 AND 456 LIKE colonne_numeric

Si 123 456 abc def & colonne_numeric
123 AND 456 LIKE colonne_numeric



Si abc def && colonne_text && colonne_numeric
abc AND def AGAINST colonne_text

Si 123 456 && colonne_text && colonne_numeric
123 LIKE numeric OR 123 AGAINST text
AND
456 LIKE numeric OR 456 AGAINST text

Si abc def 123 456 && colonne_text && colonne_numeric
abc AND def AGAINST colonne_text
AND
123 LIKE numeric OR 123 AGAINST text
AND
456 LIKE numeric OR 456 AGAINST text

Logique simplifiée

Si seulement colonne_text && q
        foreach q, match() AND match()

Si seulement colonne numeric && q_text
        NULL
Si seulement colonne numeric && q_numeric
        foreach q, like() AND like()

Si colonne text && colonne_numeric && seulement q_text
        foreach q, match() AND match()
Si colonne text && colonne_numeric && seulement q_numeric
        foreach q, like_or_match() AND like_or_match()
Si colonne text && colonne_numeric && q_numeric && q_text
        foreach q_text, match() AND match()
        AND
        foreach q_numeric, like_or_match() AND like_or_match()

Readme

Keywords

Package Sidebar

Install

npm i dbsearch

Weekly Downloads

1

Version

1.1.0

License

ISC

Last publish

Collaborators

  • vipdorian