modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									a7bcfe9ce6
								
							
						
					
					
						commit
						604d9c1fe3
					
				@ -1,6 +1,9 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
namespace nur\sery\db;
 | 
					namespace nur\sery\db;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use nur\sery\cl;
 | 
				
			||||||
 | 
					use nur\sery\str;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Class CapacitorChannel: un canal d'une instance de {@link ICapacitor}
 | 
					 * Class CapacitorChannel: un canal d'une instance de {@link ICapacitor}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -9,6 +12,10 @@ class CapacitorChannel {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const TABLE_NAME = null;
 | 
					  const TABLE_NAME = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const KEY_DEFINITIONS = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const PRIMARY_KEYS = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const EACH_COMMIT_THRESHOLD = 100;
 | 
					  const EACH_COMMIT_THRESHOLD = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static function verifix_name(?string $name): string {
 | 
					  static function verifix_name(?string $name): string {
 | 
				
			||||||
@ -20,6 +27,25 @@ class CapacitorChannel {
 | 
				
			|||||||
    $this->name = self::verifix_name($name ?? static::NAME);
 | 
					    $this->name = self::verifix_name($name ?? static::NAME);
 | 
				
			||||||
    $this->eachCommitThreshold = $eachCommitThreshold ?? static::EACH_COMMIT_THRESHOLD;
 | 
					    $this->eachCommitThreshold = $eachCommitThreshold ?? static::EACH_COMMIT_THRESHOLD;
 | 
				
			||||||
    $this->created = false;
 | 
					    $this->created = false;
 | 
				
			||||||
 | 
					    $keyDefinitions = cl::withn(static::KEY_DEFINITIONS);
 | 
				
			||||||
 | 
					    $primaryKeys = cl::withn(static::PRIMARY_KEYS);
 | 
				
			||||||
 | 
					    if ($primaryKeys === null && $keyDefinitions !== null) {
 | 
				
			||||||
 | 
					      $index = 0;
 | 
				
			||||||
 | 
					      foreach ($keyDefinitions as $col => $def) {
 | 
				
			||||||
 | 
					        if ($col == $index) {
 | 
				
			||||||
 | 
					          $index++;
 | 
				
			||||||
 | 
					          if (preg_match('/\bprimary\s+key\s+\((.+)\)/i', $def, $ms)) {
 | 
				
			||||||
 | 
					            $primaryKeys = preg_split('/\s*,\s*/', trim($ms[1]));
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          if (preg_match('/\bprimary\s+key\b/i', $def)) {
 | 
				
			||||||
 | 
					            $primaryKeys[] = $col;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $this->keyDefinitions = $keyDefinitions;
 | 
				
			||||||
 | 
					    $this->primaryKeys = $primaryKeys;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** @var string */
 | 
					  /** @var string */
 | 
				
			||||||
@ -54,6 +80,8 @@ class CapacitorChannel {
 | 
				
			|||||||
    $this->created = $created;
 | 
					    $this->created = $created;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  protected ?array $keyDefinitions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * retourner un ensemble de définitions pour des colonnes supplémentaires à
 | 
					   * retourner un ensemble de définitions pour des colonnes supplémentaires à
 | 
				
			||||||
   * insérer lors du chargement d'une valeur
 | 
					   * insérer lors du chargement d'une valeur
 | 
				
			||||||
@ -71,7 +99,13 @@ class CapacitorChannel {
 | 
				
			|||||||
   * avant d'être retournées à l'utilisateur (sans le suffixe "__")
 | 
					   * avant d'être retournées à l'utilisateur (sans le suffixe "__")
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  function getKeyDefinitions(): ?array {
 | 
					  function getKeyDefinitions(): ?array {
 | 
				
			||||||
    return null;
 | 
					    return $this->keyDefinitions;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  protected ?array $primaryKeys;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  function getPrimaryKeys(): ?array {
 | 
				
			||||||
 | 
					    return $this->primaryKeys;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
 | 
				
			|||||||
@ -75,6 +75,12 @@ abstract class CapacitorStorage {
 | 
				
			|||||||
    return $this->_one($this->getChannel($channel), $filter);
 | 
					    return $this->_one($this->getChannel($channel), $filter);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  protected function getPrimaryKeys(CapacitorChannel $channel): array {
 | 
				
			||||||
 | 
					    $primaryKeys = $channel->getPrimaryKeys();
 | 
				
			||||||
 | 
					    if ($primaryKeys === null) $primaryKeys = ["id_"];
 | 
				
			||||||
 | 
					    return $primaryKeys;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  abstract function _all(CapacitorChannel $channel, $filter): iterable;
 | 
					  abstract function _all(CapacitorChannel $channel, $filter): iterable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
@ -83,7 +89,7 @@ abstract class CapacitorStorage {
 | 
				
			|||||||
   * si $filter n'est pas un tableau, il est transformé en ["id_" => $filter]
 | 
					   * si $filter n'est pas un tableau, il est transformé en ["id_" => $filter]
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  function all(?string $channel, $filter): iterable {
 | 
					  function all(?string $channel, $filter): iterable {
 | 
				
			||||||
    return $this->_one($this->getChannel($channel), $filter);
 | 
					    return $this->_all($this->getChannel($channel), $filter);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  abstract function _each(CapacitorChannel $channel, $filter, ?callable $func, ?array $args): int;
 | 
					  abstract function _each(CapacitorChannel $channel, $filter, ?callable $func, ?array $args): int;
 | 
				
			||||||
 | 
				
			|||||||
@ -251,7 +251,7 @@ class MysqlStorage extends CapacitorStorage {
 | 
				
			|||||||
      "select",
 | 
					      "select",
 | 
				
			||||||
      "from" => $channel->getTableName(),
 | 
					      "from" => $channel->getTableName(),
 | 
				
			||||||
      "where" => $filter,
 | 
					      "where" => $filter,
 | 
				
			||||||
    ], null, "id_");
 | 
					    ], null, $this->getPrimaryKeys($channel));
 | 
				
			||||||
    foreach ($rows as $key => $row) {
 | 
					    foreach ($rows as $key => $row) {
 | 
				
			||||||
      yield $key => $this->unserialize($channel, $row);
 | 
					      yield $key => $this->unserialize($channel, $row);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -250,7 +250,7 @@ class SqliteStorage extends CapacitorStorage {
 | 
				
			|||||||
      "select",
 | 
					      "select",
 | 
				
			||||||
      "from" => $channel->getTableName(),
 | 
					      "from" => $channel->getTableName(),
 | 
				
			||||||
      "where" => $filter,
 | 
					      "where" => $filter,
 | 
				
			||||||
    ], null, "id_");
 | 
					    ], null, $this->getPrimaryKeys($channel));
 | 
				
			||||||
    foreach ($rows as $key => $row) {
 | 
					    foreach ($rows as $key => $row) {
 | 
				
			||||||
      yield $key => $this->unserialize($channel, $row);
 | 
					      yield $key => $this->unserialize($channel, $row);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user