Loading src/Ddl/Ddl.php +22 −6 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Unicaen\BddAdmin\Ddl; use Unicaen\BddAdmin\Driver\Postgresql\FunctionManager; use Unicaen\BddAdmin\Driver\Postgresql\ProcedureManager; use Unicaen\BddAdmin\Trait\OptionsTrait; use Iterator; use ArrayAccess; Loading Loading @@ -498,11 +500,25 @@ class Ddl implements Iterator, ArrayAccess } else { $this->data[$type][$name] = ['name' => $name, 'definition' => $def]; } if (false !== strpos($def, 'LANGUAGE plpgsql')) { $this->traitementSpecifiquePostgres($this->data[$type][$name], $type); } } } } } } private function traitementSpecifiquePostgres(array &$ddl, string $managerName): void { switch($managerName){ case self::PROCEDURE: ProcedureManager::loadFromDdlFile($ddl); case self::FUNCTION: FunctionManager::loadFromDdlFile($ddl); } } Loading src/Driver/Postgresql/FunctionManager.php +30 −10 Original line number Diff line number Diff line Loading @@ -50,6 +50,22 @@ class FunctionManager extends AbstractManager implements FunctionManagerInteface public static function loadFromDdlFile(array &$ddl) { //$ddl['return'] = null; @todo à gérer... $def = $ddl['definition']; $namePos = strpos($def, $ddl['name']); $argsStart = $namePos + strlen($ddl['name']); if (false !== $namePos && $def[$argsStart] == '(') { $arguments = substr($def, $argsStart + 1, strpos($def, ')', $argsStart + 1) - $argsStart - 1); $ddl['arguments'] = $arguments; } } public function exists(string $name): bool { [$schema, $name] = Util::explodedFullObjectName($name); Loading Loading @@ -112,6 +128,10 @@ class FunctionManager extends AbstractManager implements FunctionManagerInteface if (!isset($new['schema'])) { $new['schema'] = 'public'; } if (array_key_exists('return', $old) && !array_key_exists('return', $new)){ // Hack pour éviter que des modifs soient détectées à tort $new['return'] = $old['return']; } if ($old != $new) { if ($this->sendEvent()->getReturn('no-exec')) return; Loading src/Driver/Postgresql/ProcedureManager.php +25 −9 Original line number Diff line number Diff line Loading @@ -50,6 +50,22 @@ class ProcedureManager extends AbstractManager implements ProcedureManagerIntefa public static function loadFromDdlFile(array &$ddl) { $ddl['return'] = null; $def = $ddl['definition']; $namePos = strpos($def, $ddl['name']); $argsStart = $namePos + strlen($ddl['name']); if (false !== $namePos && $def[$argsStart] == '(') { $arguments = substr($def, $argsStart + 1, strpos($def, ')', $argsStart + 1) - $argsStart - 1); $ddl['arguments'] = $arguments; } } public function create(array $data, $test = null): void { if ($this->sendEvent()->getReturn('no-exec')) return; Loading Loading
src/Ddl/Ddl.php +22 −6 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Unicaen\BddAdmin\Ddl; use Unicaen\BddAdmin\Driver\Postgresql\FunctionManager; use Unicaen\BddAdmin\Driver\Postgresql\ProcedureManager; use Unicaen\BddAdmin\Trait\OptionsTrait; use Iterator; use ArrayAccess; Loading Loading @@ -498,11 +500,25 @@ class Ddl implements Iterator, ArrayAccess } else { $this->data[$type][$name] = ['name' => $name, 'definition' => $def]; } if (false !== strpos($def, 'LANGUAGE plpgsql')) { $this->traitementSpecifiquePostgres($this->data[$type][$name], $type); } } } } } } private function traitementSpecifiquePostgres(array &$ddl, string $managerName): void { switch($managerName){ case self::PROCEDURE: ProcedureManager::loadFromDdlFile($ddl); case self::FUNCTION: FunctionManager::loadFromDdlFile($ddl); } } Loading
src/Driver/Postgresql/FunctionManager.php +30 −10 Original line number Diff line number Diff line Loading @@ -50,6 +50,22 @@ class FunctionManager extends AbstractManager implements FunctionManagerInteface public static function loadFromDdlFile(array &$ddl) { //$ddl['return'] = null; @todo à gérer... $def = $ddl['definition']; $namePos = strpos($def, $ddl['name']); $argsStart = $namePos + strlen($ddl['name']); if (false !== $namePos && $def[$argsStart] == '(') { $arguments = substr($def, $argsStart + 1, strpos($def, ')', $argsStart + 1) - $argsStart - 1); $ddl['arguments'] = $arguments; } } public function exists(string $name): bool { [$schema, $name] = Util::explodedFullObjectName($name); Loading Loading @@ -112,6 +128,10 @@ class FunctionManager extends AbstractManager implements FunctionManagerInteface if (!isset($new['schema'])) { $new['schema'] = 'public'; } if (array_key_exists('return', $old) && !array_key_exists('return', $new)){ // Hack pour éviter que des modifs soient détectées à tort $new['return'] = $old['return']; } if ($old != $new) { if ($this->sendEvent()->getReturn('no-exec')) return; Loading
src/Driver/Postgresql/ProcedureManager.php +25 −9 Original line number Diff line number Diff line Loading @@ -50,6 +50,22 @@ class ProcedureManager extends AbstractManager implements ProcedureManagerIntefa public static function loadFromDdlFile(array &$ddl) { $ddl['return'] = null; $def = $ddl['definition']; $namePos = strpos($def, $ddl['name']); $argsStart = $namePos + strlen($ddl['name']); if (false !== $namePos && $def[$argsStart] == '(') { $arguments = substr($def, $argsStart + 1, strpos($def, ')', $argsStart + 1) - $argsStart - 1); $ddl['arguments'] = $arguments; } } public function create(array $data, $test = null): void { if ($this->sendEvent()->getReturn('no-exec')) return; Loading