You need to sign in or sign up before continuing.
Select Git revision
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
{