6 Commits
1.1.0 ... 1.3.0

Author SHA1 Message Date
d0ce9e47af удалили компосер лок 2023-12-21 23:26:50 +07:00
b2088df8fb забыл что сделал 2023-12-21 23:20:32 +07:00
cb1388722c added to .gitignore 2023-07-10 06:47:42 +07:00
root
11be80b0ad remove composer.lock 2023-07-09 16:45:49 +00:00
root
48a8908afd PHP 8.2 2023-07-09 16:42:01 +00:00
root
8f5f5b44de just rules and license 2023-07-09 16:37:43 +00:00
7 changed files with 177 additions and 2246 deletions

2
.gitignore vendored
View File

@@ -1 +1,3 @@
vendor
composer.lock
!.gitignore

11
LICENSE Normal file
View File

@@ -0,0 +1,11 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# PHP 8.2 Framework for working with ArangoDB
🤟 Very simple and flexible, easy to scale and integrate

View File

@@ -28,7 +28,7 @@
}
],
"require": {
"php": "^8.1",
"php": "^8.2",
"triagens/arangodb": "~3.8"
},
"require-dev": {

2098
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -20,99 +20,106 @@ use ArangoDBClient\CollectionHandler as _collection_handler;
*/
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);
/**
* Инициализация
*
* @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 (!$collections->has($name)) {
// Не найдана коллекция
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("Коллекция \"$name\" не найдена");
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("Коллекция \"$name\" не найдена");
// Запись коллекции на сервер и его ответ в буфер возврата
$id = $collections->create($name, ['type' => $edge ? _collection::TYPE_EDGE : _collection::TYPE_DOCUMENT]);
// Запись коллекции на сервер и его ответ в буфер возврата
$id = $collections->create($name, ['type' => $edge ? _collection::TYPE_EDGE : _collection::TYPE_DOCUMENT]);
if ($collections->has($name)) {
// Коллекция найдена (записана)
if ($collections->has($name)) {
// Коллекция найдена (записана)
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("Создана коллекция \"$name\" с типом " . ($edge ? 'ребро' : 'документ'));
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("Создана коллекция \"$name\" с типом " . ($edge ? 'ребро' : 'документ'));
// Возврат идентификатора коллекции
return $id;
}
} else {
// Найдена коллекция
// Возврат идентификатора коллекции
return $id;
}
} else {
// Найдена коллекция
// Возврат идентификатора коллекции
return $name;
}
// Возврат идентификатора коллекции
return $name;
}
return null;
}
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();
/**
* Поиск
*
* @param _connection $session Сессия соединения с базой данных
* @param string $query AQL-запрос
* @param array $binds Binds for query [bind => value]
*
* @return _document|array|string|int|null Инстанция документа
*/
public static function search(_connection $session, string $query, array $binds = []): _document|string|array|int|null
{
// Statement instance initialization
$instance = new _statement(
$session,
[
'query' => $query,
"batchSize" => 1000,
"sanitize" => true
]
);
// Инициализация буфера вывода
$buffer = [];
// Binds application
$instance->bind($binds);
foreach ($journal as $key => $value) {
$buffer[$key] = $value;
}
// Sending the request
$response = $instance->execute();
return is_array($buffer) && count($buffer) > 1 ? $buffer : $buffer[0] ?? null;
}
// Инициализация буфера вывода
$buffer = [];
/**
* Очистка
*
* @param _connection $session Сессия соединения с базой данных
* @param string $name Название
*
* @return bool Статус выполнения
*/
public static function truncate(_connection $session, string $name): bool
{
// Инициализация
$collections = new _collection_handler($session);
foreach ($response->getAll() as $key => $value) {
$buffer[$key] = $value;
}
if ($collections->has($name)) {
// Найдена коллекция
return is_array($buffer) && count($buffer) > 1 ? $buffer : $buffer[0] ?? null;
}
// Очистка
return $collections->truncate($name);
}
/**
* Очистка
*
* @param _connection $session Сессия соединения с базой данных
* @param string $name Название
*
* @return bool Статус выполнения
*/
public static function truncate(_connection $session, string $name): bool
{
// Инициализация
$collections = new _collection_handler($session);
return false;
}
if ($collections->has($name)) {
// Найдена коллекция
// Очистка
return $collections->truncate($name);
}
return false;
}
}

View File

@@ -20,89 +20,95 @@ use ArangoDBClient\EdgeHandler as _edge_handler;
*/
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']));
/**
* Записать
*
* @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'])) {
// Ребро
if (isset($data['_from'], $data['_to'])) {
// Ребро
// Инициализация обработчика рёбер
$documents = new _edge_handler($session);
// Инициализация обработчика рёбер
$documents = new _edge_handler($session);
// Инициализация ребра
$document = new _edge();
// Инициализация ребра
$document = new _edge();
// Инициализация вершин
$_from = $data['_from'];
$_to = $data['_to'];
// Инициализация вершин
$_from = $data['_from'];
$_to = $data['_to'];
// Деинициализация из входных данных
unset($data['_from'], $data['_to']);
} else {
// Вершина
// Деинициализация из входных данных
unset($data['_from'], $data['_to']);
} else {
// Вершина
// Инициализация обработчика вершин
$documents = new _document_handler($session);
// Инициализация обработчика вершин
$documents = new _document_handler($session);
// Инициализация вершины
$document = new _document();
}
// Инициализация вершины
$document = new _document();
}
foreach (['created' => time()] + $data as $key => $value) {
// Перебор параметров
// Инициализация даты создания
$created = time();
// Запись в инстанцию документа
$document->set($key, $value);
}
foreach (['created' => $created, 'updated' => $created] + $data as $key => $value) {
// Перебор параметров
// Запись на сервер и его ответ в буфер возврата
$id = isset($_from, $_to) ? $documents->saveEdge($collection, $_from, $_to, $document) : $documents->insert($collection, $document);
// Запись в инстанцию документа
$document->set($key, $value);
}
if ($check && $documents->has($collection, $id)) {
// Найден записанный документ
// Запись на сервер и его ответ в буфер возврата
$id = isset($_from, $_to) ? $documents->saveEdge($collection, $_from, $_to, $document) : $documents->insert($collection, $document);
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" создан документ \"$id\"");
} else if ($check) {
// Не найден записанный документ
if ($check && $documents->has($collection, $id)) {
// Найден записанный документ
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" не удалось найти созданный или создать документ");
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" создан документ \"$id\"");
} else if ($check) {
// Не найден записанный документ
return null;
}
// Запись в вывод
if ($terminal instanceof terminal) $terminal::write("В коллекции \"$collection\" не удалось найти созданный или создать документ");
// Возврат идентификатора коллекции
return $id;
}
return null;
}
/**
* Обновить
*
* @param _connection $session Сессия соединения с базой данных
* @param _document $document Инстанция документа вершины
*
* @return bool Статус обработки
*/
public static function update(_connection $session, _document $document): bool
{
// Инициализация обработчика вершин
$documents = new _document_handler($session);
// Возврат идентификатора коллекции
return $id;
}
// Запись в базу данных
return $documents->update($document);
}
/**
* Обновить
*
* @param _connection $session Сессия соединения с базой данных
* @param _document $document Инстанция документа вершины
*
* @return bool Статус обработки
*/
public static function update(_connection $session, _document $document): bool
{
// Инициализация обработчика вершин
$documents = new _document_handler($session);
// Запись даты обновления в инстанцию документа
$document->set('updated', time());
// Запись в базу данных
return $documents->update($document);
}
}