modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-05-20 11:03:20 +04:00
parent 207d17a749
commit c70339cba5
2 changed files with 29 additions and 52 deletions

View File

@ -2,9 +2,10 @@
namespace nur\sery\db; namespace nur\sery\db;
/** /**
* Class AbstractCapacitor: implémentation de base d'un {@link ICapacitor} * Class CapacitorStorage: objet permettant d'accumuler des données pour les
* réutiliser plus tard
*/ */
abstract class CapacitorStorage implements ICapacitor { abstract class CapacitorStorage {
abstract protected function getChannel(?string $name): CapacitorChannel; abstract protected function getChannel(?string $name): CapacitorChannel;
abstract function _exists(CapacitorChannel $channel): bool; abstract function _exists(CapacitorChannel $channel): bool;
@ -23,24 +24,50 @@ abstract class CapacitorStorage implements ICapacitor {
abstract function _charge(CapacitorChannel $channel, $item, ?callable $func, ?array $args): bool; abstract function _charge(CapacitorChannel $channel, $item, ?callable $func, ?array $args): bool;
/**
* charger une valeur dans le canal
*
* Si $func!==null, après avoir calculé les valeurs des clés supplémentaires
* avec {@link CapacitorChannel::getKeyValues()}, la fonction est appelée avec
* les arguments ($item, $keyValues, $row, ...$args)
* Si la fonction retourne un tableau, il est utilisé pour modifié les valeurs
* insérées/mises à jour
*
* @return true si l'objet a été chargé ou mis à jour, false s'il existait
* déjà à l'identique dans le canal
*/
function charge(?string $channel, $item, ?callable $func=null, ?array $args=null): bool { function charge(?string $channel, $item, ?callable $func=null, ?array $args=null): bool {
return $this->_charge($this->getChannel($channel), $item, $func, $args); return $this->_charge($this->getChannel($channel), $item, $func, $args);
} }
abstract function _discharge(CapacitorChannel $channel, $filter, ?bool $reset): iterable; abstract function _discharge(CapacitorChannel $channel, $filter, ?bool $reset): iterable;
/** décharger les données du canal spécifié */
function discharge(?string $channel, $filter=null, ?bool $reset=null): iterable { function discharge(?string $channel, $filter=null, ?bool $reset=null): iterable {
return $this->_discharge($this->getChannel($channel), $filter, $reset); return $this->_discharge($this->getChannel($channel), $filter, $reset);
} }
abstract function _get(CapacitorChannel $channel, $filter); abstract function _get(CapacitorChannel $channel, $filter);
/**
* obtenir l'élément identifié par les clés spécifiées sur le canal spécifié
*
* si $filter n'est pas un tableau, il est transformé en ["_id" => $filter]
*/
function get(?string $channel, $filter) { function get(?string $channel, $filter) {
return $this->_get($this->getChannel($channel), $filter); return $this->_get($this->getChannel($channel), $filter);
} }
abstract function _each(CapacitorChannel $channel, $filter, callable $func, ?array $args): void; abstract function _each(CapacitorChannel $channel, $filter, callable $func, ?array $args): void;
/**
* appeler une fonction pour chaque élément du canal spécifié.
*
* $filter permet de filtrer parmi les élements chargés
*
* si $func retourne un tableau, il est utilisé pour mettre à jour
* l'enregistrement.
*/
function each(?string $channel, $filter, callable $func, ?array $args=null): void { function each(?string $channel, $filter, callable $func, ?array $args=null): void {
$this->_each($this->getChannel($channel), $filter, $func, $args); $this->_each($this->getChannel($channel), $filter, $func, $args);
} }

View File

@ -1,50 +0,0 @@
<?php
namespace nur\sery\db;
/**
* Interface ICapacitor: objet permettant d'accumuler des données pour les
* réutiliser plus tard
*/
interface ICapacitor {
/** tester si le canal spécifié existe */
function exists(?string $channel): bool;
/** supprimer le canal spécifié */
function reset(?string $channel): void;
/**
* charger une valeur dans le canal
*
* Si $func!==null, après avoir calculé les valeurs des clés supplémentaires
* avec {@link CapacitorChannel::getKeyValues()}, la fonction est appelée avec
* les arguments ($item, $keyValues, $row, ...$args)
* Si la fonction retourne un tableau, il est utilisé pour modifié les valeurs
* insérées/mises à jour
*
* @return true si l'objet a été chargé ou mis à jour, false s'il existait
* déjà à l'identique dans le canal
*/
function charge(?string $channel, $item, ?callable $func=null, ?array $args=null): bool;
/** décharger les données du canal spécifié */
function discharge(?string $channel, $filter=null, ?bool $reset=null): iterable;
/**
* obtenir l'élément identifié par les clés spécifiées sur le canal spécifié
*
* si $filter n'est pas un tableau, il est transformé en ["_id" => $filter]
*/
function get(?string $channel, $filter);
/**
* appeler une fonction pour chaque élément du canal spécifié.
*
* $filter permet de filtrer parmi les élements chargés
*
* si $func retourne un tableau, il est utilisé pour mettre à jour
* l'enregistrement.
*/
function each(?string $channel, $filter, callable $func, ?array $args=null): void;
function close(): void;
}