o
    J
                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlZG dd de	Z
eejG d	d
 d
e	ZG dd deZG dd deZG dd deZG dd dejZdS )zIAdd, replace or delete the cached resource URIs from a single collection.    )absolute_import)division)unicode_literalsN)resource_cachec                   @      e Zd ZdZdd ZdS )
_TableRowsz0An _UpdateCacheOp._GetTablesFromUris dict entry.c                 C   s   || _ g | _d S N)tablerows)selfr	    r   G/tmp/google-cloud-sdk/lib/googlecloudsdk/core/cache/cache_update_ops.py__init__    s   
z_TableRows.__init__N)__name__
__module____qualname____doc__r   r   r   r   r   r          r   c                   @   s.   e Zd ZdZdd Zdd Zejdd ZdS )	_UpdateCacheOpz&The cache update operation base class.c                 C   s
   || _ d S r   )_completer_class)r   	completerr   r   r   r   )   s   
z_UpdateCacheOp.__init__c           
      C   s   zWt  H}| j|d}i }|D ]#}||}||}||j}|s-t|}|||j< |j	| qt
|D ]
\}}	| ||	 q9W d   W dS 1 sPw   Y  W dS  tya   Y dS w )z?Applies UpdateRows() to tables that contain the resources uris.)cacheN)r   ResourceCacher   StringToRowGetTableForRowgetnamer   r
   appendsix	iteritems
UpdateRows	Exception)
r   urisr   r   tablesurirowr	   entryr
   r   r   r   Update,   s&   



&z_UpdateCacheOp.Updatec                 C   s   dS )zUpdates table with rows.Nr   r   r	   r
   r   r   r   r    ?   s   z_UpdateCacheOp.UpdateRowsN)	r   r   r   r   r   r'   abcabstractmethodr    r   r   r   r   r   %   s    r   c                   @   r   )AddToCacheOpzAn AddToCache operation.c                 C      | | dS )zAdds rows to table.N)AddRowsr(   r   r   r   r    H      zAddToCacheOp.UpdateRowsNr   r   r   r   r    r   r   r   r   r+   E   r   r+   c                   @   r   )DeleteFromCacheOpzA DeleteFromCache operation.c                 C   r,   )zDeletes rows from table.N)
DeleteRowsr(   r   r   r   r    P   r.   zDeleteFromCacheOp.UpdateRowsNr/   r   r   r   r   r0   M   r   r0   c                   @   r   )ReplaceCacheOpzA ReplaceCache operation.c                 C   s   |   || dS )zReplaces table with rows.N)r1   r-   r(   r   r   r   r    X   s   zReplaceCacheOp.UpdateRowsNr/   r   r   r   r   r2   U   r   r2   c                   @   s   e Zd ZdZdS )NoCacheUpdaterzNo cache updater.N)r   r   r   r   r   r   r   r   r3   ^   s    r3   )r   
__future__r   r   r   r)   googlecloudsdk.core.cacher   r   objectr   add_metaclassABCMetar   r+   r0   r2   BaseUpdaterr3   r   r   r   r   <module>   s   
	