diff --git a/mirzaev/vk/arangodb/system/journal.php b/mirzaev/vk/arangodb/system/journal.php index 9b443d9..fbda1ac 100644 --- a/mirzaev/vk/arangodb/system/journal.php +++ b/mirzaev/vk/arangodb/system/journal.php @@ -50,10 +50,10 @@ class journal * Инициализация * * @param _connection $session Сессия соединения с базой данных - * @param string $document Идентификатор документа - * @param bool $create Создавать коллекции при их отсутствии + * @param string $document Идентификатор документа для которого нужен журнал + * @param bool $create Создавать коллекции при их отсутствии? * - * @return static|null Объект с инстанцией журнала + * @return static|null Инстанция журнала */ public static function init(_connection $session, string $document, bool $create = true): ?static { @@ -66,22 +66,16 @@ class journal } if (empty($journal = static::search($session, $document))) { - // Не найден журнал (подразумевается, что его не существует) + // Не найден журнал (подразумевается, что его не существует или истёк срок использования) - if (empty($journal = document::write($session, static::COLLECTION_JOURNAL, [ + // Создание журнала + if (empty(document::write($session, static::COLLECTION_JOURNAL, [ 'events' => [], 'expires' => strtotime('first day of next month 00:00') - ]))) { - // Не удалось создать документ + ])) || empty($journal = static::search($session, $document))) return null; - return null; - } - - if (empty(document::write($session, longpoll::COLLECTION_ACCESSED, ['_from' => $document, '_to' => $journal]))) { - // Не удалось создать ребро: {$document} -> ЖУРНАЛ - - return null; - } + // Cоздание ребра: {$document} -> ЖУРНАЛ + if (empty(document::write($session, longpoll::COLLECTION_ACCESSED, ['_from' => $document, '_to' => $journal->getId()]))) return null; } // Инициализация инстанции журнала и возврат @@ -94,7 +88,7 @@ class journal * Находит актуальный документ журнала * * @param _connection $session Сессия соединения с базой данных - * @param string $document Идентификатор документа + * @param string $document Идентификатор документа для которого нужен журнал * * @return _document|null Инстанция (static::COLLECTION_JOURNAL) или его идентификатор */ @@ -117,7 +111,7 @@ class journal FOR a IN $collection LET b = ( FOR vertex, edge IN INBOUND a $edge - FILTER vertex._id == $document + FILTER vertex._id == "$document" LIMIT 1 RETURN vertex )