Skip to content

Latest commit

 

History

History
162 lines (121 loc) · 4.75 KB

File metadata and controls

162 lines (121 loc) · 4.75 KB

Jisly

PHPUnit Coverage Status Known Vulnerabilities

Bibliothèque de base de données PHP légère NoSQL, fichier plat JSON.

L'objectif principal de Jisly est de vous permettre de démarrer rapidement votre projet avec la possibilité de stockage en mémoire et fichier plat à l'aide d'une syntaxe de requête NoSQL (orientée document).

Les accès concurrents sont gérés !

Comment installer et charger

Cette librairie est disponible sur Packagist

composer require r0mdau/jisly:^2.0

Charger la librairie

Jisly repose sur la spécification PSR-4 de chargement automatique des classes.

use Jisly\JislyCollection;

public function saveCart(): void {
    $jisly = new JislyCollection("/tmp/data", "cart");
    ...
}

Définitions

  1. Chaque document possède un identifiant unique dénommé _rid.
  2. Chaque collection est représentée physiquement par un fichier.
  3. Les fichiers sont stockés dans un seul répertoire de travail. La classs Jisly est instanciée avec le chemin vers ce répertoire en paramètre.
  4. Chaque fois que vous faites un CRUD, toutes les données sont stockées en mémoire.
  5. Et les données sont sauvegardées sur le système de fichiers.

Exemples d'utilisation

Initialisation de la classe :

$directory contient le chemin vers le répertoire où seront stockés les fichiers (=collections) du modèle de données.

$database = new Jisly($directory);

Pour accéder à une collection :

$nom contient le nom de la collection que l'on souhaite requêter. Exemple : user

Retourne un objet JislyCollection :

$database->collection($nom);

Attention : chaque premier accès à une collection lance le stockage des données en mémoire.

Pour requêter une collection :

PREAMBULE : Les méthodes Insert, Update, Delete retournent un booleen, true si l'action s'est bien passée, false dans le cas contraire

Méthode d'insertion :

Insère le tableau dans la collection spécifiée au format json et attribue un identifiant _rid unique au document si celui-ci n'a pas été spécifié :

$successBool = $database->collection($file)->insert(
  [
    "nom" => "dauby", 
    "prenom" => "romain"
  ]
);

Méthode de suppression :

Il faut au préalable rechercher tous les documents à effacer pour fournir l'attribut _rid à la méthode delete

Supprime le seul document de la collection qui a pour valeur $rid à l'attribut _rid :

$successBool = $database->collection($file)->delete($rid);

Méthode de sélection :

Retourne tous les documents de la collection dans un array() d'objets :

$results = $database->collection($file)->find();

Retourne tous les documents de la collection qui ont un attribut nom avec dauby comme valeur dans un array() d'objets :

$results = $database->collection($file)->find(
  [
    "nom" => "dauby"
  ]
);

Retourne le premier document qui a un attribut nom avec 19 comme valeur sous forme d'objet :

$result = $database->collection($file)->findOne(
  [
    "nom" => 19
  ]
);

Opérateurs logiques OR et AND

Ces deux opérateurs logiques peuvent être utilisés avec les méthodes find et findOne.

Si vous ne spécifiez pas d'opérateur logique, le OR sera utilisé.

Retourne tous les documents de la collection qui on un attribut nom avec Lucas OU un attribut prenom avec Georges dans un array() d'objets :

$result = $database->collection($file)->find(
  [
    "prenom" => "Georges", 
    "nom" => "Lucas"
  ], JislyCollection::LOGICAL_OR
);

Retourne le premier document qui a un attribut nom avec Lucas ET un attribut prenom avec Georges sous forme d'objet :

$result = $database->collection($file)->findOne(
  [
    "prenom" => "Georges", 
    "nom" => "Lucas"
  ], JislyCollection::LOGICAL_AND
);

Méthode de modification :

Pour la modification, les documents concernés sont entièrement remplacés par le second array() passé en paramètre.

Il faut au préalable rechercher tous les documents à remplacer pour fournir l'attribut _rid à la méthode update

Modifie le seul document de la collection qui a pour valeur $rid à l'attribut _rid :

$successBool = $database->collection($file)->update(
  $rid,
  [
    "prenom" => "georges", 
    "nom" => "lucas"
  ]
);