diff --git a/mirzaev/vk/arangodb/system/vk/account.php b/mirzaev/vk/arangodb/system/vk/account.php index e4bebf5..fe2120c 100644 --- a/mirzaev/vk/arangodb/system/vk/account.php +++ b/mirzaev/vk/arangodb/system/vk/account.php @@ -25,7 +25,7 @@ use ArangoDBClient\Document as _document, class account { /** - * Инициализировать + * Инициализация * * @param _connection $session Сессия соединения с базой данных * @param int $id Идентификатор ВКонтакте @@ -43,7 +43,7 @@ class account collection::init($session, longpoll::COLLECTION_ACCOUNTS); } - // Поиск + // Поиск аккаунта if ($account = static::search($session, $id)); else if ($account = document::write($session, longpoll::COLLECTION_ACCOUNTS, ['id' => $id]) and $journal) journal::init($session, $account)->write('create', [ @@ -62,12 +62,13 @@ class account ] ]); - // Поиск + + // Поиск аккаунта return static::search($session, $id); } /** - * Найти + * Найти аккаунт * * @param _connection $session Сессия соединения с базой данных * @param int $id Идентификатор ВКонтакте diff --git a/mirzaev/vk/arangodb/system/vk/chat.php b/mirzaev/vk/arangodb/system/vk/chat.php index 813b876..3a67bd5 100644 --- a/mirzaev/vk/arangodb/system/vk/chat.php +++ b/mirzaev/vk/arangodb/system/vk/chat.php @@ -36,55 +36,57 @@ class chat */ public static function init(_connection $session, int $id, bool $journal = true, bool $create = true): ?_document { + // Инициализация коллекции + $collection = longpoll::COLLECTION_CHATS; + if ($create) { // Запрошено создание коллекций в случае их отсутствия // Создание коллекции - collection::init($session, longpoll::COLLECTION_CHATS); + collection::init($session, $collection); } - // Поиск - if ($chat = static::search($session, $id)); - else if ($chat = document::write($session, longpoll::COLLECTION_CHATS, ['id' => $id]) and $journal) - journal::init($session, $chat)->write('create', [ - 'changes' => [ - 'new' => collection::search($session, sprintf( - <<<'AQL' - FOR x IN %s - FILTER x._id == "%s" - LIMIT 1 - RETURN x - AQL, - longpoll::COLLECTION_CHATS, - $chat - )), - 'old' => null - ] - ]); - - // Поиск - return static::search($session, $id); - } - - /** - * Найти в базе данных - * - * @param _connection $session Сессия соединения с базой данных - * @param int $id Идентификатор ВКонтакте - * - * @return ?_document Инстанция документа - */ - public static function search(_connection $session, int $id): ?_document - { - return collection::search($session, sprintf( - <<<'AQL' - FOR x IN %s - FILTER x.id == %u + if ($account = collection::search($session, << $id])) { + // Аккаунт записан + + // Журналирование + if ($journal && journal::init($session, $account)->write('create', [ + 'changes' => [ + 'new' => collection::search($session, << null + ] + ])) { + // Записаны данные в журнал + } + + if ($account = collection::search($session, << $id]) and $journal) journal::init($session, $group)->write('create', [ @@ -53,12 +53,12 @@ class group ]); - // Поиск + // Поиск группы return static::search($session, $id); } /** - * Найти в базе данных + * Найти группу * * @param _connection $session Сессия соединения с базой данных * @param int $id Идентификатор ВКонтакте @@ -70,7 +70,7 @@ class group return collection::search($session, sprintf( <<<'AQL' FOR x IN %s - FILTER x.id == %d + FILTER x.id == %u LIMIT 1 RETURN x AQL,