diff --git a/perxis/provider.py b/perxis/provider.py index f1afca914180f47ca4fd01fb79a0b84ac9128429..89ef7929470e154da2b01db77fae82ae40e7cfa7 100644 --- a/perxis/provider.py +++ b/perxis/provider.py @@ -1,3 +1,20 @@ +""" +Модуль для работы СЃ данными Рё файлами РІ системе Perxis. + +Ртот модуль предоставляет классы для взаимодействия СЃ API Perxis. + +- `PerxisFilesWrapper` низкоуровневый сервис для работы СЃ файлами РІ Perxis. +- `PerxisReferencesWrapper` низкоуровневый сервис для работы СЃРѕ ссылками РІ Perxis. +- `PerxisItemsWrapper` низкоуровневый сервис для работы СЃ элементами РІ Perxis. +- `PerxisDataProvider` сервис, предоставляющий методы для работы Рё СЃ элементами, Рё + ссылками РІ конкретном окружении Perxis. +- `PerxisFileProvider` сервис, предоставляющий методы для загрузки файлов. + +Принципиальная разница: +- `Wrapper` может работать СЃ любым пространством. +- `Provider` работает только СЃ конкретным. +""" + from google.protobuf.struct_pb2 import Struct from google.protobuf.empty_pb2 import Empty from perxis.common import common_pb2 @@ -10,18 +27,50 @@ from perxis.files import files_pb2, files_pb2_grpc DEFAULT_PAGE_SIZE: int = 100 +"""Размер страницы РїРѕ умолчанию для постраничного получения записей. + +Рта переменная определяет количество записей, которое будет возвращаться Р·Р° РѕРґРёРЅ запрос РїСЂРё постраничном +РїРѕРёСЃРєРµ данных РІ системе. Значение РїРѕ умолчанию равно `100`. +""" + DEFAULT_PART_SIZE: int = 1024 * 5 +"""Размер части файла РїРѕ умолчанию для загрузки. + +Рта переменная определяет размер каждой части файла, который будет загружаться РІ системе. Значение +РїРѕ умолчанию равно 5 килобайт (5120 байт). +""" class PerxisFilesWrapper: + """Сервис для работы СЃ файлами РІ Perxis. + + Ртот класс используется для загрузки файлов РІ систему Perxis через gRPC. + + Attributes: + __stub (files_pb2_grpc.FilesStub): `FilesStub` объект. + """ + __stub: files_pb2_grpc.FilesStub def __init__(self, stub: files_pb2_grpc.FilesStub) -> None: + """Рнициализирует сервис для работы СЃ файлами. + + Arguments: + stub (files_pb2_grpc.FilesStub): `FilesStub` объект. + """ self.__stub = stub async def start_upload( self, file_name: str, file_size: int ) -> files_pb2.StartUploadResponse: + """Начинает процесс загрузки файла. + + Arguments: + file_name (str): РРјСЏ файла для загрузки. + file_size (int): Размер файла РІ байтах. + Returns: + files_pb2.StartUploadResponse: Ответ СЃ информацией Рѕ начале загрузки. + """ message = await self.__stub.StartUpload( files_pb2.StartUploadRequest( upload=files_pb2.MultipartUpload( @@ -38,6 +87,17 @@ class PerxisFilesWrapper: parts: list[str], part_size: int = DEFAULT_PART_SIZE, ) -> files_pb2.CompleteUploadResponse: + """Завершает процесс загрузки файла. + + Arguments: + file_id (str): Рдентификатор загружаемого файла. + upload_id (str): Рдентификатор процесса загрузки. + parts (list[str]): РЎРїРёСЃРѕРє идентификаторов частей файла. + part_size (int, optional): Размер части файла. + РџРѕ умолчанию используется `DEFAULT_PART_SIZE`. + Returns: + files_pb2.CompleteUploadResponse: Ответ СЃ информацией Рѕ завершении загрузки. + """ message = await self.__stub.CompleteUpload( files_pb2.CompleteUploadRequest( upload=files_pb2.MultipartUpload( @@ -55,6 +115,14 @@ class PerxisFilesWrapper: class PerxisReferencesWrapper: + """Сервис для работы СЃРѕ ссылками РЅР° записи РІ Perxis. + + Ртот класс используется для получения связей (ссылок) РЅР° записи РІ системе Perxis через gRPC. + + Attributes: + __references (references_pb2_grpc.ReferencesStub): `ReferencesStub` объект. + """ + __references: references_pb2_grpc.ReferencesStub def __init__(self, references: references_pb2_grpc.ReferencesStub): @@ -63,7 +131,16 @@ class PerxisReferencesWrapper: async def get_references( self, references: list[Reference], space_id: str, env_id: str ) -> items_pb2.GetResponse: - """Метод получения связей.""" + """Получает СЃРІСЏР·Рё (ссылки) РЅР° записи. + + Arguments: + references (list[Reference]): РЎРїРёСЃРѕРє объектов Reference. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + + Returns: + items_pb2.GetResponse: Ответ СЃ данными. + """ message = await self.__references.Get( references_pb2.GetRequest( space_id=space_id, @@ -78,15 +155,38 @@ class PerxisReferencesWrapper: class PerxisItemsWrapper: + """Сервис для работы СЃ элементами РІ системе Perxis. + + Ртот класс предоставляет методы для выполнения различных операций СЃ элементами, + таких как получение, создание, обновление, РїРѕРёСЃРє, публикация Рё удаление элементов. + + Attributes: + __items (items_pb2_grpc.ItemsStub): `ItemsStub` объект. + """ + __items: items_pb2_grpc.ItemsStub - def __init__(self, items: items_pb2_grpc.ItemsStub): + def __init__(self, items: items_pb2_grpc.ItemsStub) -> None: + """Рнициализирует сервис для работы СЃ элементами. + + Arguments: + items (items_pb2_grpc.ItemsStub): `ItemsStub` объект. + """ self.__items = items async def get( self, item_id: str, collection_id: str, space_id: str, env_id: str ) -> items_pb2.GetResponse: - """Получение записи РїРѕ идентификатору.""" + """Получает элемент РїРѕ его идентификатору. + + Arguments: + item_id (str): Рдентификатор элемента для получения. + collection_id (str): Рдентификатор коллекции, Рє которой принадлежит элемент. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + items_pb2.GetResponse: Ответ СЃ данными элемента. + """ message = await self.__items.Get( items_pb2.GetRequest( item_id=item_id, @@ -100,6 +200,16 @@ class PerxisItemsWrapper: async def create( self, data: Struct, collection_id: str, space_id: str, env_id: str ) -> items_pb2.CreateResponse: + """Создает новый элемент РІ указанной коллекции. + + Arguments: + data (Struct): Данные элемента для создания. + collection_id (str): Рдентификатор коллекции для создания элемента. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + items_pb2.CreateResponse: Ответ СЃ данными созданного элемента. + """ message = await self.__items.Create( items_pb2.CreateRequest( item=items_pb2.Item( @@ -115,6 +225,17 @@ class PerxisItemsWrapper: async def update( self, item_id: str, data: Struct, collection_id: str, space_id: str, env_id: str ) -> Empty: + """Обновляет существующий элемент. + + Arguments: + item_id (str): Рдентификатор элемента для обновления. + data (Struct): Новые данные для элемента. + collection_id (str): Рдентификатор коллекции, Рє которой принадлежит элемент. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешном обновлении. + """ message = await self.__items.Update( items_pb2.UpdateRequest( item=items_pb2.Item( @@ -146,7 +267,27 @@ class PerxisItemsWrapper: hidden: bool = False, templates: bool = False, ) -> items_pb2.FindResponse: - """Метод РїРѕРёСЃРєР° записей РІ коллекции.""" + """Рщет записи РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР°. + sort_by (list[str] | None): Поля для сортировки. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + limit (int | None): Максимальное количество возвращаемых записей. + offset (int | None): Смещение для пагинации. + page_num (int | None): Номер страницы для пагинации. + page_size (int | None): Размер страницы для пагинации. + deleted (bool): Учитывать ли удаленные записи. + regular (bool): Учитывать ли обычные записи. + hidden (bool): Учитывать ли скрытые записи. + templates (bool): Учитывать ли шаблоны. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными записями. + """ message = await self.__items.Find( items_pb2.FindRequest( space_id=space_id, @@ -186,7 +327,23 @@ class PerxisItemsWrapper: page_num: int | None = None, page_size: int | None = DEFAULT_PAGE_SIZE, ) -> items_pb2.FindResponse: - """Метод РїРѕРёСЃРєР° опубликованных записей РІ коллекции.""" + """Рщет опубликованные записи РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР°. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + sort_by (list[str] | None): Поля для сортировки. + limit (int | None): Максимальное количество возвращаемых записей. + offset (int | None): Смещение для пагинации. + page_num (int | None): Номер страницы для пагинации. + page_size (int | None): Размер страницы для пагинации. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными опубликованными записями. + """ message = await self.__items.FindPublished( items_pb2.FindPublishedRequest( space_id=space_id, @@ -219,7 +376,20 @@ class PerxisItemsWrapper: sort_by: list[str] | None = None, page_size: int | None = DEFAULT_PAGE_SIZE, ) -> items_pb2.FindResponse: - """Метод РїРѕРёСЃРєР° всех опубликованных записей РІ коллекции.""" + """Рщет РІСЃРµ опубликованные записи РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР°. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + sort_by (list[str] | None): Поля для сортировки. + page_size (int | None): Размер страницы для пагинации. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными опубликованными записями. + """ kwargs = { "collection_id": collection_id, "filters": filters, @@ -248,7 +418,16 @@ class PerxisItemsWrapper: async def unpublish( self, item_id: str, collection_id: str, space_id: str, env_id: str ) -> Empty: - """Метод снятия СЃ публикации записи РІ коллекции.""" + """Снимает СЃ публикации запись РІ коллекции. + + Arguments: + item_id (str): Рдентификатор записи для снятия СЃ публикации. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешном снятии СЃ публикации. + """ message = await self.__items.Unpublish( items_pb2.UnpublishRequest( item=items_pb2.Item( @@ -264,7 +443,16 @@ class PerxisItemsWrapper: async def publish( self, item_id: str, collection_id: str, space_id: str, env_id: str ) -> Empty: - """Метод публикации записи РІ коллекции.""" + """Публикует запись РІ коллекции. + + Arguments: + item_id (str): Рдентификатор записи для публикации. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешной публикации. + """ message = await self.__items.Publish( items_pb2.PublishRequest( item=items_pb2.Item( @@ -292,7 +480,24 @@ class PerxisItemsWrapper: hidden: bool = False, templates: bool = False, ) -> items_pb2.FindResponse: - """Метод получения всех записей коллекции.""" + """Получает РІСЃРµ записи РёР· указанной коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции для получения записей. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + filters (list[str] | None): Необязательные фильтры для получения записей. + fields (list[str] | None): Необязательные поля для включения РІ ответ. + exclude_fields (bool): Указывать, РЅСѓР¶РЅРѕ ли исключать указанные поля РёР· ответа. + sort_by (list[str] | None): Необязательные поля для сортировки результатов. + page_size (int | None): Размер страницы для пагинации. + deleted (bool): Учитывать ли удаленные записи. + regular (bool): Учитывать ли обычные записи. + hidden (bool): Учитывать ли скрытые записи. + templates (bool): Учитывать ли шаблоны. + Returns: + items_pb2.FindResponse: Ответ, содержащий полученные записи. + """ items = [] storage_data = await self.find( collection_id=collection_id, @@ -347,6 +552,20 @@ class PerxisItemsWrapper: erase: bool = True, **kwargs, ) -> Empty: + """Удаляет запись РёР· указанной коллекции. + + Arguments: + item_id (str): Рдентификатор записи для удаления. + collection_id (str): Рдентификатор коллекции, РёР· которой РЅСѓР¶РЅРѕ удалить запись. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + update_attrs (bool): Обновить системные поля `created_by`, `created_at`, + `created_rev_at`, `updated_by`, `updated_at`. + erase (bool): Полное удаление без сохранения удаленной версии объекта. + **kwargs: Дополнительные параметры. + Returns: + Empty: Пустой ответ РїСЂРё успешном удалении. + """ message = await self.__items.Delete( items_pb2.DeleteRequest( item=items_pb2.Item( @@ -370,6 +589,19 @@ class PerxisItemsWrapper: update_attrs: bool = False, **kwargs, ) -> Empty: + """Восстанавливает запись РёР· состояния удаления РІ указанной коллекции. + + Arguments: + item_id (str): Рдентификатор записи для восстановления. + collection_id (str): Рдентификатор коллекции, РёР· которой РЅСѓР¶РЅРѕ восстановить запись. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + update_attrs (bool): Обновить системные поля `created_by`, `created_at`, + `created_rev_at`, `updated_by`, `updated_at`. + **kwargs: Дополнительные параметры. + Returns: + Empty: Пустой ответ РїСЂРё успешном восстановлении. + """ message = await self.__items.Undelete( items_pb2.UndeleteRequest( item=items_pb2.Item( @@ -392,6 +624,18 @@ class PerxisItemsWrapper: env_id: str, locale_id: str | None = None, ) -> items_pb2.GetPublishedResponse: + """Получает опубликованную запись РёР· указанной коллекции. + + Arguments: + item_id (str): Рдентификатор записи для получения. + collection_id (str): Рдентификатор коллекции, РёР· которой РЅСѓР¶РЅРѕ получить запись. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + locale_id (str | None): Рдентификатор языка перевода который будет использоваться. + Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию. + Returns: + items_pb2.GetPublishedResponse: Ответ СЃ данными опубликованной записи. + """ message = await self.__items.GetPublished( items_pb2.GetPublishedRequest( item_id=item_id, @@ -411,6 +655,17 @@ class PerxisItemsWrapper: aggregate_options: dict[str, str] | None = None, filters: list[str] | None = None, ) -> items_pb2.AggregateResponse: + """Выполняет агрегирование данных РІ указанной коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции для агрегирования данных. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + aggregate_options (dict[str, str] | None): Необязательные параметры агрегирования. + filters (list[str] | None): Необязательные фильтры для агрегирования. + Returns: + items_pb2.AggregateResponse: Ответ СЃ результатами агрегирования. + """ message = await self.__items.Aggregate( items_pb2.AggregateRequest( space_id=space_id, @@ -430,6 +685,17 @@ class PerxisItemsWrapper: aggregate_options: dict[str, str] | None = None, filters: list[str] | None = None, ) -> items_pb2.AggregatePublishedResponse: + """Выполняет агрегирование опубликованных данных РІ указанной коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции для агрегирования данных. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + aggregate_options (dict[str, str] | None): Необязательные параметры агрегирования. + filters (list[str] | None): Необязательные фильтры для агрегирования. + Returns: + items_pb2.AggregatePublishedResponse: Ответ СЃ результатами агрегирования опубликованных данных. + """ message = await self.__items.AggregatePublished( items_pb2.AggregatePublishedRequest( space_id=space_id, @@ -449,6 +715,17 @@ class PerxisItemsWrapper: space_id: str, env_id: str, ) -> items_pb2.GetRevisionResponse: + """Получает информацию Рѕ ревизии записи РёР· указанной коллекции. + + Arguments: + item_id (str): Рдентификатор записи для получения ревизии. + revision_id (str): Рдентификатор ревизии для получения. + collection_id (str): Рдентификатор коллекции, РёР· которой РЅСѓР¶РЅРѕ получить ревизию. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + items_pb2.GetRevisionResponse: Ответ СЃ данными Рѕ ревизии. + """ message = await self.__items.GetRevision( items_pb2.GetRevisionRequest( item_id=item_id, @@ -472,6 +749,21 @@ class PerxisItemsWrapper: limit: int | None = None, offset: int | None = None, ) -> items_pb2.ListRevisionsResponse: + """Получает СЃРїРёСЃРѕРє всех ревизий записи РёР· указанной коллекции. + + Arguments: + item_id (str): Рдентификатор записи для получения СЃРїРёСЃРєР° ревизий. + collection_id (str): Рдентификатор коллекции, РёР· которой РЅСѓР¶РЅРѕ получить ревизии. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + sort_by (list[str] | None): Необязательные параметры для сортировки. + fields (list[str] | None): Необязательные поля для включения РІ ответ. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + limit (int | None): Ограничение РЅР° количество возвращаемых ревизий. + offset (int | None): Смещение для пагинации. + Returns: + items_pb2.ListRevisionsResponse: Ответ СЃ данными Рѕ ревизиях. + """ message = await self.__items.ListRevisions( items_pb2.ListRevisionsRequest( item_id=item_id, @@ -498,6 +790,16 @@ class PerxisItemsWrapper: space_id: str, env_id: str, ) -> Empty: + """Архивирует запись РІ указанной коллекции. + + Arguments: + item_id (str): Рдентификатор записи для архивирования. + collection_id (str): Рдентификатор коллекции, содержащей запись. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешной архивации. + """ message = await self.__items.Archive( items_pb2.ArchiveRequest( item=items_pb2.Item( @@ -517,6 +819,16 @@ class PerxisItemsWrapper: space_id: str, env_id: str, ) -> Empty: + """Разархивирует ранее архивированную запись. + + Arguments: + item_id (str): Рдентификатор записи для разархивирования. + collection_id (str): Рдентификатор коллекции, содержащей запись. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешном разархивации. + """ message = await self.__items.Unarchive( items_pb2.UnarchiveRequest( item=items_pb2.Item( @@ -541,6 +853,21 @@ class PerxisItemsWrapper: limit: int | None = None, offset: int | None = None, ) -> items_pb2.FindArchivedResponse: + """Находит РІСЃРµ архивированные записи РІ указанной коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° архивированных записей. + sort_by (list[str] | None): Поля для сортировки результатов. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + limit (int | None): Максимальное количество возвращаемых архивированных записей. + offset (int | None): Смещение для пагинации. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными архивированными записями. + """ message = await self.__items.FindArchived( items_pb2.FindArchivedRequest( space_id=space_id, @@ -562,12 +889,32 @@ class PerxisItemsWrapper: class PerxisDataProvider: + """Провайдер данных для работы СЃ Perxis API. + + Позволяет выполнять операции СЃ данными, такие как получение, создание, обновление, + РїРѕРёСЃРє Рё удаление записей РІ коллекциях. + + Attributes: + channel (GrpcChannel): gRPC-канал для СЃРІСЏР·Рё СЃ сервером. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + references_wrapper (PerxisReferencesWrapper): Обертка для работы СЃРѕ ссылками РЅР° записи РІ Perxis. + items_wrapper (PerxisItemsWrapper): Обертка для работы СЃ элементами (записями) РІ Perxis. + """ + def __init__( self, channel: GrpcChannel, space_id: str, env_id: str, ) -> None: + """Рнициализация провайдера данных. + + Arguments: + channel (GrpcChannel): gRPC-канал для взаимодействия СЃ API. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + """ self.channel = channel self.space_id = space_id self.env_id = env_id @@ -579,7 +926,14 @@ class PerxisDataProvider: ) async def get(self, item_id: str, collection_id: str) -> items_pb2.GetResponse: - """Получение записи РїРѕ идентификатору.""" + """Получение записи РїРѕ идентификатору. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + Returns: + items_pb2.GetResponse: Ответ СЃ данными записи. + """ message = await self.items_wrapper.get( item_id=item_id, collection_id=collection_id, @@ -591,6 +945,14 @@ class PerxisDataProvider: async def create( self, data: Struct, collection_id: str ) -> items_pb2.CreateResponse: + """Создание РЅРѕРІРѕР№ записи РІ коллекции. + + Arguments: + data (Struct): Данные для создания записи. + collection_id (str): Рдентификатор коллекции. + Returns: + items_pb2.CreateResponse: Ответ СЃ данными созданной записи. + """ message = await self.items_wrapper.create( data=data, collection_id=collection_id, @@ -600,6 +962,15 @@ class PerxisDataProvider: return message async def update(self, item_id: str, data: Struct, collection_id: str) -> Empty: + """Обновляет существующую запись РІ коллекции. + + Arguments: + item_id (str): Рдентификатор записи, которую РЅСѓР¶РЅРѕ обновить. + data (Struct): Обновленные данные для записи. + collection_id (str): Рдентификатор коллекции, РІ которой находится запись. + Returns: + Empty: Пустой ответ РїСЂРё успешном удалении. + """ message = await self.items_wrapper.update( item_id=item_id, data=data, @@ -625,6 +996,25 @@ class PerxisDataProvider: hidden: bool = False, templates: bool = False, ) -> items_pb2.FindResponse: + """Рщет записи РІ коллекции СЃ возможностью фильтрации Рё сортировки. + + Arguments: + collection_id (str): Рдентификатор коллекции для РїРѕРёСЃРєР°. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° записей. + sort_by (list[str] | None): Поля для сортировки результатов. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + limit (int | None): Максимальное количество возвращаемых записей. + offset (int | None): Смещение для пагинации. + page_num (int | None): Номер страницы для пагинации. + page_size (int | None): Размер страницы. + deleted (bool): Включить удаленные записи РІ результат. + regular (bool): Включить регулярные записи РІ результат. + hidden (bool): Включить скрытые записи РІ результат. + templates (bool): Включить шаблоны РІ результат. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными записями. + """ message = await self.items_wrapper.find( collection_id=collection_id, space_id=self.space_id, @@ -656,6 +1046,21 @@ class PerxisDataProvider: page_num: int | None = None, page_size: int | None = DEFAULT_PAGE_SIZE, ) -> items_pb2.FindResponse: + """Рщет опубликованные записи РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции для РїРѕРёСЃРєР°. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° опубликованных записей. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + sort_by (list[str] | None): Поля для сортировки результатов. + limit (int | None): Максимальное количество возвращаемых записей. + offset (int | None): Смещение для пагинации. + page_num (int | None): Номер страницы для пагинации. + page_size (int | None): Размер страницы. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными опубликованными записями. + """ message = await self.items_wrapper.find_published( collection_id=collection_id, space_id=self.space_id, @@ -679,7 +1084,17 @@ class PerxisDataProvider: sort_by: list[str] | None = None, page_size: int | None = DEFAULT_PAGE_SIZE, ) -> items_pb2.FindResponse: - """Метод РїРѕРёСЃРєР° всех опубликованных записей РІ коллекции.""" + """Получает РІСЃРµ опубликованные записи РІ коллекции постранично. + + Arguments: + collection_id (str): Рдентификатор коллекции для РїРѕРёСЃРєР°. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° записей. + fields (list[str] | None): Поля, которые необходимо вернуть. + sort_by (list[str] | None): Поля для сортировки результатов. + page_size (int | None): Размер страницы. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными опубликованными записями. + """ kwargs = { "collection_id": collection_id, "filters": filters, @@ -703,6 +1118,14 @@ class PerxisDataProvider: yield await self.find_published(**kwargs) async def unpublish(self, item_id: str, collection_id: str) -> Empty: + """Снимает запись СЃ публикации. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + Returns: + Empty: Пустой ответ РїСЂРё успешном удалении. + """ message = await self.items_wrapper.unpublish( item_id=item_id, collection_id=collection_id, @@ -712,6 +1135,14 @@ class PerxisDataProvider: return message async def publish(self, item_id: str, collection_id: str) -> Empty: + """Публикует запись РІ коллекции. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + Returns: + Empty: Пустой ответ РїСЂРё успешном удалении. + """ message = await self.items_wrapper.publish( item_id=item_id, collection_id=collection_id, @@ -727,6 +1158,16 @@ class PerxisDataProvider: sort_by: list[str] | str = None, page_size: int | None = DEFAULT_PAGE_SIZE, ) -> items_pb2.FindResponse: + """Получает РІСЃРµ записи РёР· коллекции постранично. + + Arguments: + collection_id (str): Рдентификатор коллекции для РїРѕРёСЃРєР°. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° записей. + sort_by (list[str] | None): Поля для сортировки результатов. + page_size (int | None): Размер страницы. + Returns: + items_pb2.FindResponse: Ответ СЃ найденными записями. + """ message = await self.items_wrapper.fetch_all( collection_id=collection_id, space_id=self.space_id, @@ -740,6 +1181,13 @@ class PerxisDataProvider: async def get_references( self, references: list[Reference] ) -> items_pb2.GetResponse: + """Получает данные РїРѕ ссылкам. + + Arguments: + references (list[Reference]): РЎРїРёСЃРѕРє объектов Reference для получения данных. + Returns: + items_pb2.GetResponse: Ответ СЃ данными Рѕ записях. + """ message = await self.references_wrapper.get_references( references=references, space_id=self.space_id, env_id=self.env_id ) @@ -755,6 +1203,19 @@ class PerxisDataProvider: erase: bool = True, **kwargs, ) -> Empty: + """Удаляет запись РёР· коллекции. + + Arguments: + item_id (str): Рдентификатор записи для удаления. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + update_attrs (bool): Обновить системные поля `created_by`, `created_at`, + `created_rev_at`, `updated_by`, `updated_at`. + erase (bool): Полностью удалить запись. + Returns: + Empty: Пустой ответ РїСЂРё успешном удалении. + """ message = await self.items_wrapper.delete( item_id=item_id, collection_id=collection_id, @@ -775,6 +1236,18 @@ class PerxisDataProvider: update_attrs: bool = False, **kwargs, ) -> Empty: + """Восстанавливает ранее удаленную запись. + + Arguments: + item_id (str): Рдентификатор записи для восстановления. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + update_attrs (bool): Обновить системные поля `created_by`, `created_at`, + `created_rev_at`, `updated_by`, `updated_at`. + Returns: + Empty: Пустой ответ РїСЂРё успешном восстановлении. + """ message = await self.items_wrapper.undelete( item_id=item_id, collection_id=collection_id, @@ -793,6 +1266,18 @@ class PerxisDataProvider: env_id: str, locale_id: str | None = None, ) -> items_pb2.GetPublishedResponse: + """Получает опубликованные записи. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + locale_id (str | None): Рдентификатор языка перевода который будет использоваться. + Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию. + Returns: + items_pb2.GetPublishedResponse: Ответ СЃ опубликованными данными. + """ message = await self.items_wrapper.get_published( item_id=item_id, collection_id=collection_id, @@ -810,6 +1295,17 @@ class PerxisDataProvider: aggregate_options: dict[str, str] | None = None, filters: list[str] | None = None, ) -> items_pb2.AggregateResponse: + """Выполняет агрегацию данных РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + aggregate_options (dict[str, str] | None): Опции агрегации. + filters (list[str] | None): Фильтры для агрегации. + Returns: + items_pb2.AggregateResponse: Ответ СЃ результатами агрегации. + """ message = await self.items_wrapper.aggregate( collection_id=collection_id, space_id=space_id, @@ -827,6 +1323,17 @@ class PerxisDataProvider: aggregate_options: dict[str, str] | None = None, filters: list[str] | None = None, ) -> items_pb2.AggregatePublishedResponse: + """Выполняет агрегацию опубликованных данных РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + aggregate_options (dict[str, str] | None): Опции агрегации. + filters (list[str] | None): Фильтры для агрегации. + Returns: + items_pb2.AggregatePublishedResponse: Ответ СЃ результатами агрегации опубликованных данных. + """ message = await self.items_wrapper.aggregate_published( collection_id=collection_id, space_id=space_id, @@ -844,6 +1351,17 @@ class PerxisDataProvider: space_id: str, env_id: str, ) -> items_pb2.GetRevisionResponse: + """Получает ревизию записи. + + Arguments: + item_id (str): Рдентификатор записи. + revision_id (str): Рдентификатор ревизии. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + items_pb2.GetRevisionResponse: Ответ СЃ данными ревизии. + """ message = await self.items_wrapper.get_revision( item_id=item_id, revision_id=revision_id, @@ -865,6 +1383,21 @@ class PerxisDataProvider: limit: int | None = None, offset: int | None = None, ) -> items_pb2.ListRevisionsResponse: + """Получает СЃРїРёСЃРѕРє ревизий записи. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + sort_by (list[str] | None): Поля для сортировки. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + limit (int | None): Максимальное количество возвращаемых ревизий. + offset (int | None): Смещение для пагинации. + Returns: + items_pb2.ListRevisionsResponse: Ответ СЃ данными ревизий. + """ message = await self.items_wrapper.list_revisions( item_id=item_id, collection_id=collection_id, @@ -885,6 +1418,16 @@ class PerxisDataProvider: space_id: str, env_id: str, ) -> Empty: + """Архивирует запись. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешной архивации. + """ message = await self.items_wrapper.archive( item_id=item_id, collection_id=collection_id, @@ -900,6 +1443,16 @@ class PerxisDataProvider: space_id: str, env_id: str, ) -> Empty: + """Восстанавливает запись РёР· архива. + + Arguments: + item_id (str): Рдентификатор записи. + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + Returns: + Empty: Пустой ответ РїСЂРё успешном восстановлении. + """ message = await self.items_wrapper.archive( item_id=item_id, collection_id=collection_id, @@ -920,6 +1473,22 @@ class PerxisDataProvider: limit: int | None = None, offset: int | None = None, ) -> items_pb2.FindArchivedResponse: + """Рщет архивированные записи РІ коллекции. + + Arguments: + collection_id (str): Рдентификатор коллекции. + space_id (str): Рдентификатор пространства. + env_id (str): Рдентификатор окружения. + filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° архивированных записей. + sort_by (list[str] | None): Поля для сортировки результатов. + fields (list[str] | None): Поля, которые необходимо вернуть. + exclude_fields (bool): Рсключить указанные поля РёР· результата. + limit (int | None): Максимальное количество возвращаемых архивированных записей. + offset (int | None): Смещение для пагинации. + + Returns: + items_pb2.FindArchivedResponse: Ответ СЃ найденными архивированными записями. + """ message = await self.items_wrapper.find_archived( collection_id=collection_id, space_id=space_id, @@ -935,9 +1504,19 @@ class PerxisDataProvider: class PerxisFileProvider: + """Провайдер файлов для работы СЃ Perxis API. + + Позволяет загружать файлы Рё управлять РёРјРё. + """ + __files_wrapper: PerxisFilesWrapper def __init__(self, channel: GrpcChannel) -> None: + """Рнициализация провайдера файлов. + + Arguments: + channel (GrpcChannel): gRPC-канал для взаимодействия СЃ API. + """ self.__files_wrapper = PerxisFilesWrapper( stub=files_pb2_grpc.FilesStub(channel.channel) ) @@ -945,6 +1524,14 @@ class PerxisFileProvider: async def start_upload( self, file_name: str, file_size: int ) -> files_pb2.StartUploadResponse: + """Рнициализация загрузки файла. + + Arguments: + file_name (str): РРјСЏ загружаемого файла. + file_size (int): Размер файла РІ байтах. + Returns: + files_pb2.StartUploadResponse: Ответ СЃ параметрами загрузки. + """ message = await self.__files_wrapper.start_upload( file_name=file_name, file_size=file_size ) @@ -957,6 +1544,16 @@ class PerxisFileProvider: parts: list[str], part_size: int = DEFAULT_PART_SIZE, ) -> files_pb2.CompleteUploadResponse: + """Завершение загрузки файла. + + Arguments: + file_id (str): Рдентификатор файла. + upload_id (str): Рдентификатор загрузки. + parts (list[str]): РЎРїРёСЃРѕРє частей загруженного файла. + part_size (int, optional): Размер РѕРґРЅРѕР№ части. РџРѕ умолчанию `DEFAULT_PART_SIZE`. + Returns: + files_pb2.CompleteUploadResponse: Ответ СЃ информацией Рѕ завершённой загрузке. + """ message = await self.__files_wrapper.complete_upload( file_id=file_id, upload_id=upload_id, parts=parts, part_size=part_size )