possibilité de changer items dans getItemValues

This commit is contained in:
Jephté Clain 2025-06-12 15:54:20 +04:00
parent a82143a41b
commit d704ce8c07
3 changed files with 9 additions and 2 deletions

View File

@ -257,6 +257,10 @@ class CapacitorChannel implements ITransactor {
* Retourner la clé primaire par cette méthode est l'unique moyen de * Retourner la clé primaire par cette méthode est l'unique moyen de
* déclencher une mise à jour plutôt qu'une nouvelle création. * déclencher une mise à jour plutôt qu'une nouvelle création.
* *
* Bien que ce ne soit pas prévu à la base, si on veut modifier $item dans
* cette méthode pour des raisons pratiques, il suffit de retournerla valeur
* modifiée avec la clé "item"
*
* Retourner [false] pour annuler le chargement * Retourner [false] pour annuler le chargement
*/ */
function getItemValues($item): ?array { function getItemValues($item): ?array {
@ -337,7 +341,7 @@ class CapacitorChannel implements ITransactor {
* Retourner [false] pour annuler le chargement (la ligne n'est pas créée) * Retourner [false] pour annuler le chargement (la ligne n'est pas créée)
* *
* Si $item est modifié dans cette méthode, il est possible de le retourner * Si $item est modifié dans cette méthode, il est possible de le retourner
* avec la clé "item" pour mettre à jour la ligne correspondante. * avec la clé "item" pour mettre à jour la colonne correspondante.
* *
* la création ou la mise à jour est uniquement décidée en fonction des * la création ou la mise à jour est uniquement décidée en fonction des
* valeurs calculées par {@link self::getItemValues()}. Bien que cette méthode * valeurs calculées par {@link self::getItemValues()}. Bien que cette méthode

View File

@ -1,6 +1,7 @@
<?php <?php
namespace nulib\db; namespace nulib\db;
use nulib\A;
use nulib\cl; use nulib\cl;
use nulib\db\_private\_migration; use nulib\db\_private\_migration;
use nulib\php\func; use nulib\php\func;
@ -364,6 +365,9 @@ abstract class CapacitorStorage {
$values = func::call([$channel, "getItemValues"], $item, ...$args); $values = func::call([$channel, "getItemValues"], $item, ...$args);
if ($values === [false]) return 0; if ($values === [false]) return 0;
$newItem = A::pop($values, "item");
if ($newItem !== null) $item = $newItem;
$row = cl::merge( $row = cl::merge(
$channel->getSum("item", $item), $channel->getSum("item", $item),
$this->serialize($channel, $values)); $this->serialize($channel, $values));

View File

@ -6,7 +6,6 @@ class _update extends _common {
"prefix" => "?string", "prefix" => "?string",
"table" => "?string", "table" => "?string",
"schema" => "?array", "schema" => "?array",
"cols" => "?array",
"values" => "?array", "values" => "?array",
"where" => "?array", "where" => "?array",
"suffix" => "?string", "suffix" => "?string",