o
    l>jv                     @  s   d Z ddl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 er0ddlmZ 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ZdS )z'High-level Notes data transfer objects.    )annotations)datetime)TYPE_CHECKINGIteratorListLiteralOptional)computed_field)FrozenServiceModel   )NotesServicec                   @  sR   e Zd ZU dZded< ded< ded< ded< ded	< ded
< ded< ded< dS )NoteSummaryz2Lightweight metadata returned by list/search APIs.stridOptional[str]titlesnippetzOptional[datetime]modified_at	folder_idfolder_namebool
is_deleted	is_lockedN)__name__
__module____qualname____doc____annotations__ r   r   W/home/thesage/.local/lib/python3.10/site-packages/pyicloud/services/notes/models/dto.pyr      s   
 r   c                   @  sd   e Zd ZU dZded< ded< ded< ded< ded	< ded
< ded< dddZdddddZdS )
AttachmentzMetadata for a note attachment.r   r   r   filenameutiOptional[int]sizedownload_urlpreview_urlthumbnail_url	directoryservice'NotesService'returnc                C  s   | | |S )zDDownload the attachment to ``directory`` using the provided service.)_download_attachment_to)selfr(   r)   r   r   r   save_to(   s   zAttachment.save_toi   
chunk_sizer0   intIterator[bytes]c                c  s    |j | |dE dH  dS )z@Yield the attachment bytes in chunks using the provided service.r/   N)_stream_attachment)r-   r)   r0   r   r   r   stream-   s   zAttachment.streamN)r(   r   r)   r*   r+   r   )r)   r*   r0   r1   r+   r2   )r   r   r   r   r   r.   r4   r   r   r   r   r       s   
 
r    c                   @  s@   e Zd ZU dZded< dZded< ded< eedd
dZdS )Notez3Full note payload returned by ``NotesService.get``.r   textNhtmlzOptional[List[Attachment]]attachmentsr+   Optional[bool]c                 C  s   | j du rdS t| j S )zKReturn ``True``/``False`` when attachments were loaded, otherwise ``None``.N)r8   r   )r-   r   r   r   has_attachments<   s   

zNote.has_attachments)r+   r9   )	r   r   r   r   r   r7   r	   propertyr:   r   r   r   r   r5   5   s   
 r5   c                   @  s.   e Zd ZU ded< ded< ded< ded< d	S )

NoteFolderr   r   r   namer9   has_subfoldersr#   countNr   r   r   r   r   r   r   r   r<   E   s
   
 r<   c                   @  s   e Zd ZU ded< ded< dS )ChangeEventzLiteral['updated', 'deleted']typer   noteNr@   r   r   r   r   rA   L   s   
 rA   N)r   
__future__r   r   typingr   r   r   r   r   pydanticr	   pyicloud.common.modelsr
   r)   r   r   r    r5   r<   rA   r   r   r   r   <module>   s    