Skip to content
Snippets Groups Projects
Select Git revision
  • e258684a04cf629a3f2b34df60641b51ba5945a9
  • main default
  • detached3
  • detached2
  • modernisation-gestion-donnees
  • detached
  • 1.5.0
  • 1.4.3
  • 1.4.2
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.2
  • 1.1.1
  • 1.1.0
  • 1.0.6
  • 1.0.5
  • 1.0.4
  • 1.0.3
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 0.9.10
  • 0.9.9
  • 0.9.8
26 results

SequenceManager.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    SequenceManager.php 2.96 KiB
    <?php
    
    namespace Unicaen\BddAdmin\Driver\Postgresql;
    
    use Unicaen\BddAdmin\Manager\AbstractManager;
    use Unicaen\BddAdmin\Manager\SequenceManagerInterface;
    use Unicaen\BddAdmin\Ddl\DdlFilter;
    use Unicaen\BddAdmin\Util;
    
    class SequenceManager extends AbstractManager implements SequenceManagerInterface
    {
    
        public function get($includes = null, $excludes = null): array
        {
            $filter = DdlFilter::normalize2($includes, $excludes);
            [$f, $p] = $filter->toSql('sequence_schema', 'sequence_name');
            $data = [];
    
            $qr = $this->bdd->select("
            SELECT 
              sequence_schema \"schema\",
              sequence_name \"name\"
            FROM 
              information_schema.sequences
            WHERE
              sequence_schema NOT IN ('pg_catalog','information_schema')
              $f
            ORDER BY
              sequence_schema, sequence_name
            ", $p);
            foreach ($qr as $r) {
                $name = Util::fullObjectName($r['schema'], $r['name']);
                $data[$name] = $r;
            }
    
            return $data;
        }
    
    
    
        public function create(array $data): void
        {
            if ($this->sendEvent()->getReturn('no-exec')) return;
    
            $name = Util::fullObjectName($data['schema'] ?? null, $data['name']);
    
            $minValue = isset($data['minvalue']) ? (int)$data['minvalue'] : 1;
    
            $sql = "CREATE SEQUENCE $name INCREMENT BY 1 MINVALUE $minValue";
            $this->addQuery($sql, 'Ajout de la séquence ' . $name);
        }
    
    
    
        public function drop(array|string $name): void
        {
            if ($this->sendEvent()->getReturn('no-exec')) return;
    
            if (is_array($name)) {
                $name = Util::fullObjectName($name['schema'] ?? null, $name['name']);
            }
    
            $sql = "DROP SEQUENCE $name";
            $this->addQuery($sql, 'Suppression de la séquence ' . $name);
        }
    
    
    
        public function alter(array $old, array $new): void
        {