modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-06-19 11:32:30 +04:00
parent 976e3674b4
commit 55501af6ff
2 changed files with 21 additions and 2 deletions

View File

@ -165,6 +165,9 @@ class CapacitorChannel {
* Cette méthode est utilisée par {@link Capacitor::charge()}. Si la clé * Cette méthode est utilisée par {@link Capacitor::charge()}. Si la clé
* primaire est incluse (il s'agit généralement de "id_"), la ligne * primaire est incluse (il s'agit généralement de "id_"), la ligne
* correspondate est mise à jour si elle existe. * correspondate est mise à jour si elle existe.
*
* 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.
*/ */
function getItemValues($item): ?array { function getItemValues($item): ?array {
return null; return null;
@ -247,6 +250,11 @@ class CapacitorChannel {
* *
* 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 ligne correspondante.
*
* 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
* peut techniquement retourner de nouvelles valeurs pour la clé primaire, ça
* risque de créer des doublons
*/ */
function onCreate($item, array $rowValues, ?array $alwaysNull): ?array { function onCreate($item, array $rowValues, ?array $alwaysNull): ?array {
return null; return null;

View File

@ -194,16 +194,26 @@ EOT;
* modifier les valeurs insérées/mises à jour. De plus, $values obtient la * modifier les valeurs insérées/mises à jour. De plus, $values obtient la
* valeur finale des données insérées/mises à jour * valeur finale des données insérées/mises à jour
* *
* Si $args est renseigné, il est ajouté aux arguments utilisés pour appeler
* les méthodes {@link CapacitorChannel::getItemValues()},
* {@link CapacitorChannel::onCreate()} et/ou
* {@link CapacitorChannel::onUpdate()}
*
* @return int 1 si l'objet a été chargé ou mis à jour, 0 s'il existait * @return int 1 si l'objet a été chargé ou mis à jour, 0 s'il existait
* déjà à l'identique dans le canal * déjà à l'identique dans le canal
*/ */
function _charge(CapacitorChannel $channel, $item, $func, ?array $args, ?array &$values=null): int { function _charge(CapacitorChannel $channel, $item, $func, ?array $args, ?array &$values=null): int {
$this->_create($channel); $this->_create($channel);
$tableName = $channel->getTableName(); $tableName = $channel->getTableName();
$now = date("Y-m-d H:i:s");
$initFunc = [$channel, "getItemValues"];
$initArgs = $args;
func::ensure_func($initFunc, null, $initArgs);
$itemValues = func::call($initFunc, $item, ...$initArgs);
$row = cl::merge( $row = cl::merge(
$channel->getSum("item", $item), $channel->getSum("item", $item),
$this->serialize($channel, $channel->getItemValues($item))); $this->serialize($channel, $itemValues));
$prow = null; $prow = null;
$rowIds = $this->getRowIds($channel, $row, $primaryKeys); $rowIds = $this->getRowIds($channel, $row, $primaryKeys);
if ($rowIds !== null) { if ($rowIds !== null) {
@ -215,6 +225,7 @@ EOT;
]); ]);
} }
$now = date("Y-m-d H:i:s");
$insert = null; $insert = null;
if ($prow === null) { if ($prow === null) {
# création # création