From 8e7972d933cae95c7f66f44d71259b8c74871ca7 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 9 Jul 2023 16:24:00 +0000 Subject: [PATCH] cool patch --- .gitignore | 0 composer.json | 94 +++++----- composer.lock | 0 mirzaev/arangodb/system/collection.php | 236 ++++++++++++------------- mirzaev/arangodb/system/connection.php | 0 mirzaev/arangodb/system/document.php | 216 +++++++++++----------- mirzaev/arangodb/system/terminal.php | 46 ++--- 7 files changed, 296 insertions(+), 296 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 composer.json mode change 100644 => 100755 composer.lock mode change 100644 => 100755 mirzaev/arangodb/system/collection.php mode change 100644 => 100755 mirzaev/arangodb/system/connection.php mode change 100644 => 100755 mirzaev/arangodb/system/document.php mode change 100644 => 100755 mirzaev/arangodb/system/terminal.php diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/composer.json b/composer.json old mode 100644 new mode 100755 index 6e2afa0..31754da --- a/composer.json +++ b/composer.json @@ -1,47 +1,47 @@ -{ - "name": "mirzaev/arangodb", - "description": "Simple PHP-framework for ArangoDB", - "readme": "README.md", - "keywords": [ - "ArangoDB" - ], - "type": "library", - "license": "WTFPL", - "homepage": "https://git.hood.su/mirzaev/arangodb", - "authors": [ - { - "name": "Arsen Mirzaev Tatyano-Muradovich", - "email": "arsen@mirzaev.sexy", - "homepage": "https://mirzaev.sexy", - "role": "Developer" - } - ], - "support": { - "email": "arsen@mirzaev.sexy", - "wiki": "https://git.mirzaev.sexy/mirzaev/arangodb/manual", - "issues": "https://git.mirzaev.sexy/mirzaev/arangodb/issues" - }, - "funding": [ - { - "type": "funding", - "url": "https://fund.mirzaev.sexy" - } - ], - "require": { - "php": "^8.1", - "triagens/arangodb": "~3.8" - }, - "require-dev": { - "phpunit/phpunit": "^9.3.3" - }, - "autoload": { - "psr-4": { - "mirzaev\\arangodb\\": "mirzaev/arangodb/system" - } - }, - "autoload-dev": { - "psr-4": { - "mirzaev\\arangodb\\tests\\": "mirzaev/arangodb/tests" - } - } -} +{ + "name": "mirzaev/arangodb", + "description": "Simple PHP-framework for ArangoDB", + "readme": "README.md", + "keywords": [ + "ArangoDB" + ], + "type": "library", + "license": "WTFPL", + "homepage": "https://git.hood.su/mirzaev/arangodb", + "authors": [ + { + "name": "Arsen Mirzaev Tatyano-Muradovich", + "email": "arsen@mirzaev.sexy", + "homepage": "https://mirzaev.sexy", + "role": "Developer" + } + ], + "support": { + "email": "arsen@mirzaev.sexy", + "wiki": "https://git.mirzaev.sexy/mirzaev/arangodb/manual", + "issues": "https://git.mirzaev.sexy/mirzaev/arangodb/issues" + }, + "funding": [ + { + "type": "funding", + "url": "https://fund.mirzaev.sexy" + } + ], + "require": { + "php": "^8.1", + "triagens/arangodb": "~3.8" + }, + "require-dev": { + "phpunit/phpunit": "^9.3.3" + }, + "autoload": { + "psr-4": { + "mirzaev\\arangodb\\": "mirzaev/arangodb/system" + } + }, + "autoload-dev": { + "psr-4": { + "mirzaev\\arangodb\\tests\\": "mirzaev/arangodb/tests" + } + } +} diff --git a/composer.lock b/composer.lock old mode 100644 new mode 100755 diff --git a/mirzaev/arangodb/system/collection.php b/mirzaev/arangodb/system/collection.php old mode 100644 new mode 100755 index 8460ddf..cd2c9a9 --- a/mirzaev/arangodb/system/collection.php +++ b/mirzaev/arangodb/system/collection.php @@ -1,118 +1,118 @@ - - */ -class collection -{ - /** - * Инициализация - * - * @param _connection $session Сессия соединения с базой данных - * @param string $name Название - * @param bool $edge Обрабатывать как ребро? (иначе: вершина) - * @param ?terminal $terminal Инстанция терминала - * - * @return string|null Идентификатор коллекции - */ - public static function init(_connection $session, string $name, bool $edge = false, ?terminal $terminal = null): ?string - { - // Инициализация - $collections = new _collection_handler($session); - - if (!$collections->has($name)) { - // Не найдана коллекция - - // Запись в вывод - if ($terminal instanceof terminal) $terminal::write("Коллекция \"$name\" не найдена"); - - // Запись коллекции на сервер и его ответ в буфер возврата - $id = $collections->create($name, ['type' => $edge ? _collection::TYPE_EDGE : _collection::TYPE_DOCUMENT]); - - if ($collections->has($name)) { - // Коллекция найдена (записана) - - // Запись в вывод - if ($terminal instanceof terminal) $terminal::write("Создана коллекция \"$name\" с типом " . ($edge ? 'ребро' : 'документ')); - - // Возврат идентификатора коллекции - return $id; - } - } else { - // Найдена коллекция - - // Возврат идентификатора коллекции - return $name; - } - - return null; - } - - /** - * Поиск - * - * @param _connection $session Сессия соединения с базой данных - * @param string $query AQL-запрос - * - * @return _document|null Инстанция документа - */ - public static function search(_connection $session, string $query): ?_document - { - // Поиск журнала - $journal = (new _statement( - $session, - [ - 'query' => $query, - "batchSize" => 1000, - "sanitize" => true - ] - ))->execute(); - - // Инициализация буфера вывода - $buffer = []; - - foreach ($journal as $key => $value) { - $buffer[$key] = $value; - } - - return $buffer[0] ?? null; - } - - /** - * Очистка - * - * @param _connection $session Сессия соединения с базой данных - * @param string $name Название - * - * @return bool Статус выполнения - */ - public static function truncate(_connection $session, string $name): bool - { - // Инициализация - $collections = new _collection_handler($session); - - if ($collections->has($name)) { - // Найдена коллекция - - // Очистка - return $collections->truncate($name); - } - - return false; - } -} + + */ +class collection +{ + /** + * Инициализация + * + * @param _connection $session Сессия соединения с базой данных + * @param string $name Название + * @param bool $edge Обрабатывать как ребро? (иначе: вершина) + * @param ?terminal $terminal Инстанция терминала + * + * @return string|null Идентификатор коллекции + */ + public static function init(_connection $session, string $name, bool $edge = false, ?terminal $terminal = null): ?string + { + // Инициализация + $collections = new _collection_handler($session); + + if (!$collections->has($name)) { + // Не найдана коллекция + + // Запись в вывод + if ($terminal instanceof terminal) $terminal::write("Коллекция \"$name\" не найдена"); + + // Запись коллекции на сервер и его ответ в буфер возврата + $id = $collections->create($name, ['type' => $edge ? _collection::TYPE_EDGE : _collection::TYPE_DOCUMENT]); + + if ($collections->has($name)) { + // Коллекция найдена (записана) + + // Запись в вывод + if ($terminal instanceof terminal) $terminal::write("Создана коллекция \"$name\" с типом " . ($edge ? 'ребро' : 'документ')); + + // Возврат идентификатора коллекции + return $id; + } + } else { + // Найдена коллекция + + // Возврат идентификатора коллекции + return $name; + } + + return null; + } + + /** + * Поиск + * + * @param _connection $session Сессия соединения с базой данных + * @param string $query AQL-запрос + * + * @return _document|array|string|int|null Инстанция документа + */ + public static function search(_connection $session, string $query): _document|string|array|int|null + { + // Поиск журнала + $journal = (new _statement( + $session, + [ + 'query' => $query, + "batchSize" => 1000, + "sanitize" => true + ] + ))->execute(); + + // Инициализация буфера вывода + $buffer = []; + + foreach ($journal as $key => $value) { + $buffer[$key] = $value; + } + + return is_array($buffer) && count($buffer) > 1 ? $buffer : $buffer[0] ?? null; + } + + /** + * Очистка + * + * @param _connection $session Сессия соединения с базой данных + * @param string $name Название + * + * @return bool Статус выполнения + */ + public static function truncate(_connection $session, string $name): bool + { + // Инициализация + $collections = new _collection_handler($session); + + if ($collections->has($name)) { + // Найдена коллекция + + // Очистка + return $collections->truncate($name); + } + + return false; + } +} diff --git a/mirzaev/arangodb/system/connection.php b/mirzaev/arangodb/system/connection.php old mode 100644 new mode 100755 diff --git a/mirzaev/arangodb/system/document.php b/mirzaev/arangodb/system/document.php old mode 100644 new mode 100755 index a6b389c..36ff22d --- a/mirzaev/arangodb/system/document.php +++ b/mirzaev/arangodb/system/document.php @@ -1,108 +1,108 @@ - - */ -class document -{ - /** - * Записать - * - * @param _connection $session Сессия соединения с базой данных - * @param string $collection Коллекция - * @param ?array $data Данные - * @param bool $check Проверка на запись в базу данных - * @param ?terminal $terminal Инстанция терминала - * - * @return string|null Идентификатор - */ - public static function write(_connection $session, string $collection, ?array $data = [], bool $check = false, ?terminal $terminal = null): ?string - { - // Инициализация коллекции - collection::init($session, $collection, isset($data['_from'], $data['_to'])); - - if (isset($data['_from'], $data['_to'])) { - // Ребро - - // Инициализация обработчика рёбер - $documents = new _edge_handler($session); - - // Инициализация ребра - $document = new _edge(); - - // Инициализация вершин - $_from = $data['_from']; - $_to = $data['_to']; - - // Деинициализация из входных данных - unset($data['_from'], $data['_to']); - } else { - // Вершина - - // Инициализация обработчика вершин - $documents = new _document_handler($session); - - // Инициализация вершины - $document = new _document(); - } - - foreach (['created' => time()] + $data as $key => $value) { - // Перебор параметров - - // Запись в инстанцию документа - $document->set($key, $value); - } - - // Запись на сервер и его ответ в буфер возврата - $id = isset($_from, $_to) ? $documents->saveEdge($collection, $_from, $_to, $document) : $documents->insert($collection, $document); - - if ($check && $documents->has($collection, $id)) { - // Найден записанный документ - - // Запись в вывод - if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" создан документ \"$id\""); - } else if ($check) { - // Не найден записанный документ - - // Запись в вывод - if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" не удалось найти созданный или создать документ"); - - return null; - } - - // Возврат идентификатора коллекции - return $id; - } - - /** - * Обновить - * - * @param _connection $session Сессия соединения с базой данных - * @param _document $document Инстанция документа вершины - * - * @return bool Статус обработки - */ - public static function update(_connection $session, _document $document): bool - { - // Инициализация обработчика вершин - $documents = new _document_handler($session); - - // Запись в базу данных - return $documents->update($document); - } -} + + */ +class document +{ + /** + * Записать + * + * @param _connection $session Сессия соединения с базой данных + * @param string $collection Коллекция + * @param ?array $data Данные + * @param bool $check Проверка на запись в базу данных + * @param ?terminal $terminal Инстанция терминала + * + * @return string|null Идентификатор + */ + public static function write(_connection $session, string $collection, ?array $data = [], bool $check = false, ?terminal $terminal = null): ?string + { + // Инициализация коллекции + collection::init($session, $collection, isset($data['_from'], $data['_to'])); + + if (isset($data['_from'], $data['_to'])) { + // Ребро + + // Инициализация обработчика рёбер + $documents = new _edge_handler($session); + + // Инициализация ребра + $document = new _edge(); + + // Инициализация вершин + $_from = $data['_from']; + $_to = $data['_to']; + + // Деинициализация из входных данных + unset($data['_from'], $data['_to']); + } else { + // Вершина + + // Инициализация обработчика вершин + $documents = new _document_handler($session); + + // Инициализация вершины + $document = new _document(); + } + + foreach (['created' => time()] + $data as $key => $value) { + // Перебор параметров + + // Запись в инстанцию документа + $document->set($key, $value); + } + + // Запись на сервер и его ответ в буфер возврата + $id = isset($_from, $_to) ? $documents->saveEdge($collection, $_from, $_to, $document) : $documents->insert($collection, $document); + + if ($check && $documents->has($collection, $id)) { + // Найден записанный документ + + // Запись в вывод + if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" создан документ \"$id\""); + } else if ($check) { + // Не найден записанный документ + + // Запись в вывод + if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" не удалось найти созданный или создать документ"); + + return null; + } + + // Возврат идентификатора коллекции + return $id; + } + + /** + * Обновить + * + * @param _connection $session Сессия соединения с базой данных + * @param _document $document Инстанция документа вершины + * + * @return bool Статус обработки + */ + public static function update(_connection $session, _document $document): bool + { + // Инициализация обработчика вершин + $documents = new _document_handler($session); + + // Запись в базу данных + return $documents->update($document); + } +} diff --git a/mirzaev/arangodb/system/terminal.php b/mirzaev/arangodb/system/terminal.php old mode 100644 new mode 100755 index 344b9b5..16961e1 --- a/mirzaev/arangodb/system/terminal.php +++ b/mirzaev/arangodb/system/terminal.php @@ -1,23 +1,23 @@ -