
    ZThr                        d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ  G d	 d
      Zy)    )annotations)ListOptionalcast)	FieldMask)DeleteAssetRequestGetAssetRequestGetAssetResponseUpdateAssetRequestUpdateAssetResponse)AssetServiceStub)list_assets_impl)AssetConfig)SiftChannelc                  f    e Zd ZU dZded<   d
dZddZddZ	 	 d	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 dd	Z	y)AssetServicezn
    A service for managing assets. Allows for creating, updating, and retrieving assets in the Sift API.
    r   _asset_service_stubc                $    t        |      | _        y )N)r   r   )selfchannels     Z/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/asset/service.py__init__zAssetService.__init__   s    #3G#<     c                    t        |      }	 t        t        | j                  j	                  |            }|j
                  rt        j                  |j
                        S dS #  Y yxY w)z
        Retrieves an asset by its ID.

        Args:
            asset_id: The ID of the asset to retrieve.

        Returns:
            The Asset if found, None otherwise.
        asset_idN)r	   r   r
   r   GetAssetassetr   
from_asset)r   r   reqress       r   	get_assetzAssetService.get_asset   s[     x0	')A)A)J)J3)OPC8;		;))#))4KtK	s   AA$ "A$ $A(c                R    t        |      }| j                  j                  |       y)z-
        Deletes an asset by its ID.
        r   N)r   r   DeleteAsset)r   r   r    s      r   delete_assetzAssetService.delete_asset/   s"     !(3  ,,S1r   Nc                |    t        | j                  ||      D cg c]  }t        j                  |       c}S c c}w )z
        Lists assets in an organization.

        Args:
            names: Optional list of names to filter by.
            ids: Optional list of IDs to filter by.

        Returns:
            A list of assets matching the criteria.
        )r   r   r   r   )r   namesidsr   s       r   list_assetszAssetService.list_assets6   s>    " *$*B*BE3O
 ""5)
 	
 
s   9c                ,   g }|r|j                  d       |r|j                  d       t        |j                         t        |            }t	        t
        | j                  j                  |            }t        j                  |j                        S )a  
        Updates an existing asset.

        Args:
            asset: The asset to update.
            update_tags: Whether to update the tags.
            update_metadata: Whether to update the metadata.

        Returns:
            The updated AssetConfig.
        tagsmetadata)paths)r   update_mask)appendr   to_assetr   r   r   r   UpdateAssetr   r   r   )r   r   update_tagsupdate_metadatar.   r    r!   s          r   update_assetzAssetService.update_assetJ   s|     v&z* .."!4
 &(@(@(L(LS(QR%%cii00r   )r   r   )r   strreturnzOptional[AssetConfig])r   r5   r6   None)NN)r'   Optional[List[str]]r(   r8   r6   zList[AssetConfig])TT)r   r   r2   boolr3   r9   r6   r   )
__name__
__module____qualname____doc____annotations__r   r"   r%   r)   r4    r   r   r   r      ss     *)="2 &*#'
"
 !
 
	
* UY1 1/31MQ1	1r   r   N)
__future__r   typingr   r   r   google.protobuf.field_mask_pb2r   sift.assets.v1.assets_pb2r   r	   r
   r   r   sift.assets.v1.assets_pb2_grpcr   sift_py.asset._internal.sharedr   sift_py.asset.configr   sift_py.grpc.transportr   r   r?   r   r   <module>rH      s5    " ' ' 4  < ; , .O1 O1r   