§
    £˜ºh„g  ã                  ó„  — d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZ ddlmZmZmZ dd	lmZmZmZ dd
lmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z) erddl*m+Z+ dZ,dZ-dZ.dZ/dZ0 G d„ d¦  «        Z1 G d„ de1¦  «        Z2 G d„ de1¦  «        Z3 G d„ de1¦  «        Z4 G d„ de4¦  «        Z5dS )z,Implementation of the CRUD database objects.é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚDictÚListÚOptionalÚUnioné   )ÚDbDoc)ÚER_NO_SUCH_TABLEÚER_TABLE_EXISTS_ERRORÚER_X_CMD_NUM_ARGUMENTSÚER_X_INVALID_ADMIN_COMMAND)ÚNotSupportedErrorÚOperationalErrorÚProgrammingError)Ú
deprecatedÚescapeÚquote_identifier)	ÚAddStatementÚCreateCollectionIndexStatementÚDeleteStatementÚFindStatementÚInsertStatementÚModifyStatementÚRemoveStatementÚSelectStatementÚUpdateStatement)ÚConnectionTypeÚ
SchemaTypeÚSessionTypeÚ
StrOrBytes)ÚResultz_SELECT COUNT(*) FROM information_schema.views WHERE table_schema = '{0}' AND table_name = '{1}'z`SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '{1}'zJSELECT COUNT(*) FROM information_schema.schemata WHERE schema_name = '{0}'zSELECT COUNT(*) FROM {0}.{1}zDROP TABLE IF EXISTS {0}.{1}c                  óâ   — e Zd ZdZdd„Zedd
„¦   «         Zedd„¦   «         Zedd„¦   «         Zdd„Z	dd„Z
dd„Zdd„Zd d„Z edd¦  «        d d„¦   «         Z edd¦  «        dd„¦   «         ZdS )!ÚDatabaseObjectz¢Provides base functionality for database objects.

    Args:
        schema (mysqlx.Schema): The Schema object.
        name (str): The database object name.
    Úschemar    Únamer"   ÚreturnÚNonec                óì   — || _         t          |t          ¦  «        r|                     ¦   «         n|| _        | j                              ¦   «         | _        | j                             ¦   «         | _        d S ©N)	Ú_schemaÚ
isinstanceÚbytesÚdecodeÚ_nameÚget_sessionÚ_sessionÚget_connectionÚ_connection)Úselfr&   r'   s      úS/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/mysqlx/crud.pyÚ__init__zDatabaseObject.__init__V   s\   € Ø#)ˆŒÝ+5°d½EÑ+BÔ+BÐL˜$Ÿ+š+™-œ-˜-ÈˆŒ
Ø%)¤\×%=Ò%=Ñ%?Ô%?ˆŒØ+/¬=×+GÒ+GÑ+IÔ+IˆÔÐÐó    r!   c                ó   — | j         S )z,:class:`mysqlx.Session`: The Session object.©r2   ©r5   s    r6   ÚsessionzDatabaseObject.session\   s   € ð Œ}Ðr8   c                ó   — | j         S )z*:class:`mysqlx.Schema`: The Schema object.©r,   r;   s    r6   r&   zDatabaseObject.schemaa   s   € ð Œ|Ðr8   Ústrc                ó   — | j         S )z&str: The name of this database object.©r0   r;   s    r6   r'   zDatabaseObject.namef   s   € ð ŒzÐr8   r   c                ó   — | j         S )z~Returns the underlying connection.

        Returns:
            mysqlx.connection.Connection: The connection object.
        )r4   r;   s    r6   r3   zDatabaseObject.get_connectionk   s   € ð ÔÐr8   c                ó   — | j         S )zwReturns the session of this database object.

        Returns:
            mysqlx.Session: The Session object.
        r:   r;   s    r6   r1   zDatabaseObject.get_sessions   s   € ð Œ}Ðr8   c                ó   — | j         S )z{Returns the Schema object of this database object.

        Returns:
            mysqlx.Schema: The Schema object.
        r>   r;   s    r6   Ú
get_schemazDatabaseObject.get_schema{   s   € ð Œ|Ðr8   c                ó   — | j         S )zwReturns the name of this database object.

        Returns:
            str: The name of this database object.
        rA   r;   s    r6   Úget_namezDatabaseObject.get_nameƒ   s   € ð ŒzÐr8   r   c                ó   — t           ‚)zÓVerifies if this object exists in the database.

        Returns:
            bool: `True` if object exists in database.

        Raises:
           NotImplementedError: This method must be implemented.
        )ÚNotImplementedErrorr;   s    r6   Úexists_in_databasez!DatabaseObject.exists_in_database‹   s
   € õ "Ð!r8   z8.0.12z)Use 'exists_in_database()' method insteadc                ó*   — |                       ¦   «         S )a+  Verifies if this object exists in the database.

        Returns:
            bool: `True` if object exists in database.

        Raises:
           NotImplementedError: This method must be implemented.

        .. deprecated:: 8.0.12
           Use ``exists_in_database()`` method instead.
        )rJ   r;   s    r6   Ú	am_i_realzDatabaseObject.am_i_real–   s   € ð ×&Ò&Ñ(Ô(Ð(r8   zUse 'get_name()' method insteadc                ó*   — |                       ¦   «         S )zÅReturns the name of this database object.

        Returns:
            str: The name of this database object.

        .. deprecated:: 8.0.12
           Use ``get_name()`` method instead.
        )rG   r;   s    r6   Úwho_am_izDatabaseObject.who_am_i¥   s   € ð �}Š}‰ŒÐr8   N)r&   r    r'   r"   r(   r)   )r(   r!   )r(   r    )r(   r?   )r(   r   )r(   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   Úpropertyr<   r&   r'   r3   r1   rE   rG   rJ   r   rL   rN   © r8   r6   r%   r%   N   sW  € € € € € ðð ðJð Jð Jð Jð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ð  ð  ð  ðð ð ð ðð ð ð ðð ð ð ð	"ð 	"ð 	"ð 	"ð €Z�ÐEÑFÔFð)ð )ð )ñ GÔFð)ð €Z�Ð;Ñ<Ô<ð	ð 	ð 	ñ =Ô<ð	ð 	ð 	r8   r%   c                  óˆ   ‡ — e Zd ZdZd!ˆ fd„Zd"d
„Zd#d„Z	 d$d%d„Zd&d„Zd$d%d„Z	d$d'd„Z
d$d(d„Zd)d„Z	 	 d*d+d„Z	 d,d-d „Zˆ xZS ).ÚSchemazÆA client-side representation of a database schema. Provides access to
    the schema contents.

    Args:
        session (mysqlx.XSession): Session object.
        name (str): The Schema name.
    r<   r!   r'   r?   r(   r)   c                óZ   •— || _         t          ¦   «                              | |¦  «         d S r+   )r2   Úsuperr7   )r5   r<   r'   Ú	__class__s      €r6   r7   zSchema.__init__»   s*   ø€ Ø%,ˆŒÝ‰Œ×Ò˜˜tÑ$Ô$Ð$Ð$Ð$r8   Úboolc                ó–   — t                                t          | j        ¦  «        ¦  «        }| j                             |¦  «        dk    S ©z�Verifies if this object exists in the database.

        Returns:
            bool: `True` if object exists in database.
        r
   )Ú_COUNT_SCHEMAS_QUERYÚformatr   r0   r4   Úexecute_sql_scalar©r5   Úsqls     r6   rJ   zSchema.exists_in_database¿   s=   € õ #×)Ò)­&°´Ñ*<Ô*<Ñ=Ô=ˆØÔ×2Ò2°3Ñ7Ô7¸1Ò<Ð<r8   úList[Collection]c                ó@  — | j                              dd| j        i¦  «        }|                     ¦   «          g }|D ]b}|d         dk    rŒ	 t	          | |d         ¦  «        }n&# t
          $ r t	          | |d         ¦  «        }Y nw xY w|                     |¦  «         Œc|S )zyReturns a list of collections for this schema.

        Returns:
            `list`: List of Collection objects.
        Úlist_objectsr&   ÚtypeÚ
COLLECTIONÚ
TABLE_NAMEr'   )r4   Úget_row_resultr0   Ú	fetch_allÚ
CollectionÚ
ValueErrorÚappend)r5   ÚrowsÚcollectionsÚrowÚ
collections        r6   Úget_collectionszSchema.get_collectionsÈ   sÃ   € ð Ô×.Ò.¨~ÀÈ$Ì*Ð?UÑVÔVˆØ�ŠÑÔÐØˆØð 	+ð 	+ˆCØ�6Œ{˜lÒ*Ð*Øð;Ý'¨¨c°,Ô.?Ñ@Ô@�
�
øÝð ;ð ;ð ;Ý'¨¨c°&¬kÑ:Ô:�
�
�
ð;øøøà×Ò˜zÑ*Ô*Ð*Ð*ØÐs   ÁA"Á" BÂBFÚcheck_existenceÚTablec                ó.   — |                       ||¦  «        S )zuReturns a a table object for the given collection

        Returns:
            mysqlx.Table: Table object.

        )Ú	get_table)r5   r'   rr   s      r6   Úget_collection_as_tablezSchema.get_collection_as_tableÛ   s   € ð �~Š~˜d OÑ4Ô4Ð4r8   úList[Table]c                ó>  — | j                              dd| j        i¦  «        }|                     ¦   «          g }d}|D ]_}|d         |v rS	 t	          | |d         ¦  «        }n&# t
          $ r t	          | |d         ¦  «        }Y nw xY w|                     |¦  «         Œ`|S )zoReturns a list of tables for this schema.

        Returns:
            `list`: List of Table objects.
        rd   r&   )ÚTABLEÚVIEWre   rg   r'   )r4   rh   r0   ri   rs   rk   rl   )r5   rm   ÚtablesÚobject_typesro   Útables         r6   Ú
get_tableszSchema.get_tablesæ   sÄ   € ð Ô×.Ò.¨~ÀÈ$Ì*Ð?UÑVÔVˆØ�ŠÑÔÐØˆð
ˆð ð 	%ð 	%ˆCØ�6Œ{˜lÐ*Ð*ð5Ý! $¨¨LÔ(9Ñ:Ô:�E�EøÝ!ð 5ð 5ð 5Ý! $¨¨F¬Ñ4Ô4�E�E�Eð5øøøà—’˜eÑ$Ô$Ð$øØˆs   Á
A!Á! BÂBc                óp   — t          | |¦  «        }|r#|                     ¦   «         st          d¦  «        ‚|S )zwReturns the table of the given name for this schema.

        Returns:
            mysqlx.Table: Table object.
        zTable does not exist)rs   rJ   r   )r5   r'   rr   r}   s       r6   ru   zSchema.get_tableü   sC   € õ �d˜DÑ!Ô!ˆØð 	?Ø×+Ò+Ñ-Ô-ð ?Ý&Ð'=Ñ>Ô>Ð>Øˆr8   ÚViewc                óp   — t          | |¦  «        }|r#|                     ¦   «         st          d¦  «        ‚|S )ztReturns the view of the given name for this schema.

        Returns:
            mysqlx.View: View object.
        zView does not exist)r€   rJ   r   )r5   r'   rr   Úviews       r6   Úget_viewzSchema.get_view  sC   € õ �D˜$ÑÔˆØð 	>Ø×*Ò*Ñ,Ô,ð >Ý&Ð'<Ñ=Ô=Ð=Øˆr8   rj   c                óp   — t          | |¦  «        }|r#|                     ¦   «         st          d¦  «        ‚|S )z†Returns the collection of the given name for this schema.

        Returns:
            mysqlx.Collection: Collection object.
        zCollection does not exist)rj   rJ   r   )r5   r'   rr   rp   s       r6   Úget_collectionzSchema.get_collection  sF   € õ    dÑ+Ô+ˆ
Øð 	DØ×0Ò0Ñ2Ô2ð DÝ&Ð'BÑCÔCÐCØÐr8   c           	     ó®   — | j                              dt                               t	          | j        ¦  «        t	          |¦  «        ¦  «        d¦  «         dS )zmDrops a collection.

        Args:
            name (str): The name of the collection to be dropped.
        ra   FN)r4   Úexecute_nonqueryÚ_DROP_TABLE_QUERYr^   r   r0   )r5   r'   s     r6   Údrop_collectionzSchema.drop_collection   s\   € ð 	Ô×)Ò)ØÝ×$Ò$Ý  ¤Ñ,Ô,Õ.>¸tÑ.DÔ.Dñô ð ñ	
ô 	
ð 	
ð 	
ð 	
r8   NÚreuse_existingÚ
validationú%Optional[Dict[str, Union[str, Dict]]]Úkwargsr   c                óò  — |st          d¦  «        ‚d|v r"t          j        dt          ¦  «         |d         }t	          | |¦  «        }| j        |dœ}|��
t          |t          ¦  «        r|st          d¦  «        ‚d}|D ]}||vrt          d|› �¦  «        ‚Œg }	d	|v rC|d	         }
t          |
t          ¦  «        st          d
¦  «        ‚|	 	                    d	|
f¦  «         d|v rs|d         }t          |t          t          f¦  «        st          d¦  «        ‚|	 	                    dt          |t          ¦  «        rt          j        |¦  «        n|f¦  «         d|	f|d<   	 | j                             ddd|¦  «         ny# t          $ rl}|j        t           k    rt#          d¦  «        |‚|j        t$          k    r|st          d|› d�¦  «        |‚nt          |j        |j        ¦  «        |‚Y d}~nd}~ww xY w|S )aJ  Creates in the current schema a new collection with the specified
        name and retrieves an object representing the new collection created.

        Args:
            name (str): The name of the collection.
            reuse_existing (bool): `True` to reuse an existing collection.
            validation (Optional[dict]): A dict, containing the keys `level`
                                         with the validation level and `schema`
                                         with a dict or a string representation
                                         of a JSON schema specification.

        Returns:
            mysqlx.Collection: Collection object.

        Raises:
            :class:`mysqlx.ProgrammingError`: If ``reuse_existing`` is False
                                              and collection exists or the
                                              collection name is invalid.
            :class:`mysqlx.NotSupportedError`: If schema validation is not
                                               supported by the server.

        .. versionchanged:: 8.0.21
        úCollection name is invalidÚreusezG'reuse' is deprecated since 8.0.21. Please use 'reuse_existing' instead)r&   r'   NúInvalid value for 'validation'©Úlevelr&   ú Invalid option in 'validation': r“   úInvalid value for 'level'r&   úInvalid value for 'schema'r‹   ÚoptionsÚmysqlxÚcreate_collectionTúlYour MySQL server does not support the requested operation. Please update to MySQL 8.0.19 or a later versionúCollection 'z' already exists)r   ÚwarningsÚwarnÚDeprecationWarningrj   r0   r-   Údictr?   rl   ÚjsonÚdumpsr4   r‡   r   Úerrnor   r   r   Úmsg)r5   r'   rŠ   r‹   r�   rp   ÚfieldsÚvalid_optionsÚoptionr—   r“   r&   Úerrs                r6   r™   zSchema.create_collection.  s±  € ð< ð 	AÝ"Ð#?Ñ@Ô@Ð@à�fÐÐÝŒMð6å"ñô ð ð
 $ Gœ_ˆNå  dÑ+Ô+ˆ
Ø,0¬JÀÐ!EÐ!EˆàÑ!Ý˜j­$Ñ/Ô/ð I°zð IÝ&Ð'GÑHÔHÐHà/ˆMØ$ð Xð X�Ø Ð.Ð.Ý*Ð+VÈfÐ+VÐ+VÑWÔWÐWð /ð ˆGà˜*Ð$Ð$Ø" 7Ô+�Ý! %­Ñ-Ô-ð HÝ*Ð+FÑGÔGÐGØ—’ ¨Ð/Ñ0Ô0Ð0à˜:Ð%Ð%Ø# HÔ-�Ý! &­3µ¨+Ñ6Ô6ð IÝ*Ð+GÑHÔHÐHØ—’à Ý.8¸ÅÑ.FÔ.FÐR�œ
 6Ñ*Ô*Ð*ÈFðñô ð ð ".¨wÐ 7ˆF�9Ñð	DØÔ×-Ò-ØÐ-¨t°Vñô ð ð øõ  ð 	Dð 	Dð 	DØŒyÕ2Ò2Ð2Ý'ðñô ð ð	ð
 ŒyÕ1Ò1Ð1Ø%ð Ý*Ø= tÐ=Ð=Ð=ñô àððõ
 ' s¤w°´	Ñ:Ô:ÀÐCðð ð ð ð øøøøð	Døøøð Ðs   Å E> Å>
G4ÆA"G/Ç/G4c                ó  — |st          d¦  «        ‚t          |t          ¦  «        r|st          d¦  «        ‚d}|D ]}||vrt          d|› �¦  «        ‚Œg }d|v rC|d         }t          |t          ¦  «        st          d¦  «        ‚|                     d|f¦  «         d|v rs|d         }t          |t          t          f¦  «        st          d¦  «        ‚|                     dt          |t          ¦  «        rt          j        |¦  «        n|f¦  «         | j        |d	|fd
œ}	 | j         	                    ddd|¦  «         dS # t          $ r@}	|	j        t          k    rt          d¦  «        |	‚t          |	j        |	j        ¦  «        |	‚d}	~	ww xY w)a
  Modifies a collection using a JSON schema validation.

        Args:
            name (str): The name of the collection.
            validation (Optional[dict]): A dict, containing the keys `level`
                                         with the validation level and `schema`
                                         with a dict or a string representation
                                         of a JSON schema specification.

        Raises:
            :class:`mysqlx.ProgrammingError`: If the collection name or
                                              validation is invalid.
            :class:`mysqlx.NotSupportedError`: If schema validation is not
                                               supported by the server.

        .. versionadded:: 8.0.21
        r�   r‘   r’   r”   r“   r•   r&   r–   r‹   )r&   r'   r—   r˜   Úmodify_collection_optionsTrš   N)r   r-   rŸ   r?   rl   r    r¡   r0   r4   r‡   r   r¢   r   r   r£   )
r5   r'   r‹   r¥   r¦   r—   r“   r&   r¤   r§   s
             r6   Úmodify_collectionzSchema.modify_collection�  s
  € ð( ð 	AÝ"Ð#?Ñ@Ô@Ð@å˜*¥dÑ+Ô+ð 	E°:ð 	EÝ"Ð#CÑDÔDÐDà+ˆØ ð 	Tð 	TˆFØ˜]Ð*Ð*Ý&Ð'RÈ&Ð'RÐ'RÑSÔSÐSð +àˆà�jÐ Ð Ø˜wÔ'ˆEÝ˜e¥SÑ)Ô)ð DÝ&Ð'BÑCÔCÐCØ�NŠN˜G UÐ+Ñ,Ô,Ð,à�zÐ!Ð!Ø Ô)ˆFÝ˜f¥s­D kÑ2Ô2ð EÝ&Ð'CÑDÔDÐDØ�NŠNàÝ*4°V½TÑ*BÔ*BÐN•D”J˜vÑ&Ô&Ð&Èðñô ð ð ”jØØ$ gÐ.ð
ð 
ˆð	@ØÔ×-Ò-ØÐ5°t¸Vñô ð ð ð øõ  ð 	@ð 	@ð 	@ØŒyÕ6Ò6Ð6Ý'ðñô ð ð	õ
 # 3¤7¨C¬IÑ6Ô6¸CÐ?øøøøð	@øøøs   Ä#E Å
FÅ;FÆF)r<   r!   r'   r?   r(   r)   ©r(   rZ   )r(   rb   )F)r'   r?   rr   rZ   r(   rs   )r(   rw   )r'   r?   rr   rZ   r(   r€   )r'   r?   rr   rZ   r(   rj   )r'   r?   r(   r)   )FN)
r'   r?   rŠ   rZ   r‹   rŒ   r�   r   r(   rj   r+   )r'   r?   r‹   rŒ   r(   r)   )rO   rP   rQ   rR   r7   rJ   rq   rv   r~   ru   rƒ   r…   r‰   r™   rª   Ú__classcell__)rY   s   @r6   rV   rV   ²   sY  ø€ € € € € ðð ð%ð %ð %ð %ð %ð %ð=ð =ð =ð =ðð ð ð ð( 27ð	5ð 	5ð 	5ð 	5ð 	5ðð ð ð ð,
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð"  %Ø<@ð	]ð ]ð ]ð ]ð ]ð@ NRðB@ð B@ð B@ð B@ð B@ð B@ð B@ð B@ð B@r8   rV   c                  ót   — e Zd ZdZd$d„Zd%d&d	„Zd'd„Zd(d„Zd)d„Zd*d„Z	d+d„Z
d,d„Zd-d „Zd-d!„Zd.d"„Zd/d#„ZdS )0rj   z�Represents a collection of documents on a schema.

    Args:
        schema (mysqlx.Schema): The Schema object.
        name (str): The collection name.
    r(   rZ   c                óÆ   — t                                t          | j        j        ¦  «        t          | j        ¦  «        ¦  «        }| j                             |¦  «        dk    S r\   ©Ú_COUNT_TABLES_QUERYr^   r   r,   r'   r0   r4   r_   r`   s     r6   rJ   zCollection.exists_in_databaseÚ  óL   € õ "×(Ò(­°´Ô0AÑ)BÔ)BÅFÈ4Ì:ÑDVÔDVÑWÔWˆØÔ×2Ò2°3Ñ7Ô7¸1Ò<Ð<r8   NÚ	conditionúOptional[str]r   c                ób   — t          | |¦  «        }| j                             ¦   «         |_        |S )zÔRetrieves documents from a collection.

        Args:
            condition (Optional[str]): The string with the filter expression of
                                       the documents to be retrieved.
        )r   r4   Úget_next_statement_idÚstmt_id©r5   r²   Ústmts      r6   ÚfindzCollection.findã  s.   € õ ˜T 9Ñ-Ô-ˆØÔ'×=Ò=Ñ?Ô?ˆŒØˆr8   Úvaluesr   r   c                ó0   —  t          | ¦  «        j        |Ž S )zÑAdds a list of documents to a collection.

        Args:
            *values: The document list to be added into the collection.

        Returns:
            mysqlx.AddStatement: AddStatement object.
        )r   Úadd)r5   rº   s     r6   r¼   zCollection.addî  s   € ð &�|˜DÑ!Ô!Ô% vÐ.Ð.r8   r?   r   c                ób   — t          | |¦  «        }| j                             ¦   «         |_        |S )ap  Removes documents based on the ``condition``.

        Args:
            condition (str): The string with the filter expression of the
                             documents to be removed.

        Returns:
            mysqlx.RemoveStatement: RemoveStatement object.

        .. versionchanged:: 8.0.12
           The ``condition`` parameter is now mandatory.
        )r   r4   rµ   r¶   r·   s      r6   ÚremovezCollection.removeù  ó.   € õ ˜t YÑ/Ô/ˆØÔ'×=Ò=Ñ?Ô?ˆŒØˆr8   r   c                ób   — t          | |¦  «        }| j                             ¦   «         |_        |S )ar  Modifies documents based on the ``condition``.

        Args:
            condition (str): The string with the filter expression of the
                             documents to be modified.

        Returns:
            mysqlx.ModifyStatement: ModifyStatement object.

        .. versionchanged:: 8.0.12
           The ``condition`` parameter is now mandatory.
        )r   r4   rµ   r¶   r·   s      r6   ÚmodifyzCollection.modify
  r¿   r8   Úintc                óX  — t                                t          | j        j        ¦  «        t          | j        ¦  «        ¦  «        }	 | j                             |¦  «        }nI# t          $ r<}|j	        t          k    r&t          d| j        › d| j        j        › d�¦  «        |‚‚ d}~ww xY w|S )z}Counts the documents in the collection.

        Returns:
            int: The total of documents in the collection.
        r›   ú' does not exist in schema 'ú'N©Ú_COUNT_QUERYr^   r   r,   r'   r0   r4   r_   r   r¢   r   ©r5   ra   Úresr§   s       r6   ÚcountzCollection.count  sÍ   € õ ×!Ò!Ý˜Tœ\Ô.Ñ/Ô/Õ1AÀ$Ä*Ñ1MÔ1Mñ
ô 
ˆð	ØÔ"×5Ò5°cÑ:Ô:ˆCˆCøÝð 	ð 	ð 	ØŒyÕ,Ò,Ð,Ý&ð- 4¤:ð -ð -ØœÔ)ð-ð -ð -ñô ð ðð øøøøð	øøøð ˆ
ó   ÁA! Á!
B'Á+7B"Â"B'Ú
index_nameÚfields_descúDict[str, Any]r   c                ó$   — t          | ||¦  «        S )ab  Creates a collection index.

        Args:
            index_name (str): Index name.
            fields_desc (dict): A dictionary containing the fields members that
                                constraints the index to be created. It must
                                have the form as shown in the following::

                                   {"fields": [{"field": member_path,
                                                "type": member_type,
                                                "required": member_required,
                                                "array": array,
                                                "collation": collation,
                                                "options": options,
                                                "srid": srid},
                                                # {... more members,
                                                #      repeated as many times
                                                #      as needed}
                                                ],
                                    "type": type}
        )r   )r5   rÌ   rÍ   s      r6   Úcreate_indexzCollection.create_index/  s   € õ0 .¨d°JÀÑLÔLÐLr8   r)   c           	     óf   — | j                              ddd| j        j        | j        |dœ¦  «         dS )z[Drops a collection index.

        Args:
            index_name (str): Index name.
        r˜   Údrop_collection_indexF)r&   rp   r'   N)r4   r‡   r,   r'   r0   )r5   rÌ   s     r6   Ú
drop_indexzCollection.drop_indexI  sL   € ð 	Ô×)Ò)ØØ#Øàœ,Ô+Ø"œjØ"ðð ñ			
ô 		
ð 		
ð 		
ð 		
r8   Údoc_idÚdocúUnion[Dict, DbDoc]ú'Result'c                óÞ   — d|v r|d         |k    rt          d¦  «        ‚|                      d¦  «                             d|¦  «                             d|¦  «                             ¦   «         S )zÒReplaces the Document matching the document ID with a new document
        provided.

        Args:
            doc_id (str): Document ID
            doc (:class:`mysqlx.DbDoc` or `dict`): New Document
        Ú_idúKReplacement document has an _id that is different than the matched documentú	_id = :idú$Úid)r   rÁ   ÚsetÚbindÚexecute©r5   rÔ   rÕ   s      r6   Úreplace_onezCollection.replace_oneZ  sr   € ð �Cˆ<ˆ<˜C œJ¨&Ò0Ð0Ý"ð#ñô ð ð �{Š{˜;Ñ'Ô'×+Ò+¨C°Ñ5Ô5×:Ò:¸4ÀÑHÔH×PÒPÑRÔRÐRr8   c                ó"  — d|v r|d         |k    rt          d¦  «        ‚t          |t          ¦  «        st          |¦  «        }|                      |                     |¦  «        ¦  «                             d¦  «                             ¦   «         S )zÏUpserts the Document matching the document ID with a new document
        provided.

        Args:
            doc_id (str): Document ID
            doc (:class:`mysqlx.DbDoc` or dict): New Document
        rÙ   rÚ   T)r   r-   r   r¼   ÚcopyÚupsertrà   rá   s      r6   Úadd_or_replace_onezCollection.add_or_replace_onei  s‰   € ð �Cˆ<ˆ<˜C œJ¨&Ò0Ð0Ý"ð#ñô ð õ ˜#�uÑ%Ô%ð 	Ý˜‘*”*ˆCØ�xŠx˜Ÿš Ñ(Ô(Ñ)Ô)×0Ò0°Ñ6Ô6×>Ò>Ñ@Ô@Ð@r8   c                óÖ   — |                       d¦  «                             d|¦  «                             ¦   «         }|                     ¦   «         }| j                             ¦   «          |S )z½Returns a Document matching the Document ID.

        Args:
            doc_id (str): Document ID

        Returns:
            mysqlx.DbDoc: The Document matching the Document ID.
        rÛ   rÝ   )r¹   rß   rà   Ú	fetch_oner4   Úfetch_active_result)r5   rÔ   ÚresultrÕ   s       r6   Úget_onezCollection.get_onez  s\   € ð —’˜;Ñ'Ô'×,Ò,¨T°6Ñ:Ô:×BÒBÑDÔDˆØ×ÒÑ Ô ˆØÔ×,Ò,Ñ.Ô.Ð.Øˆ
r8   c                óx   — |                       d¦  «                             d|¦  «                             ¦   «         S )z¦Removes a Document matching the Document ID.

        Args:
            doc_id (str): Document ID

        Returns:
            mysqlx.Result: Result object.
        rÛ   rÝ   )r¾   rß   rà   )r5   rÔ   s     r6   Ú
remove_onezCollection.remove_oneˆ  s2   € ð �{Š{˜;Ñ'Ô'×,Ò,¨T°6Ñ:Ô:×BÒBÑDÔDÐDr8   r«   r+   )r²   r³   r(   r   )rº   r   r(   r   )r²   r?   r(   r   )r²   r?   r(   r   ©r(   rÂ   )rÌ   r?   rÍ   rÎ   r(   r   )rÌ   r?   r(   r)   )rÔ   r?   rÕ   rÖ   r(   r×   )rÔ   r?   r(   r   )rÔ   r?   r(   r×   )rO   rP   rQ   rR   rJ   r¹   r¼   r¾   rÁ   rÊ   rÐ   rÓ   râ   ræ   rë   rí   rT   r8   r6   rj   rj   Ò  s%  € € € € € ðð ð=ð =ð =ð =ð	ð 	ð 	ð 	ð 	ð	/ð 	/ð 	/ð 	/ðð ð ð ð"ð ð ð ð"ð ð ð ð(Mð Mð Mð Mð4
ð 
ð 
ð 
ð"Sð Sð Sð SðAð Að Að Að"ð ð ð ð	Eð 	Eð 	Eð 	Eð 	Eð 	Er8   rj   c                  óJ   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )rs   zîRepresents a database table on a schema.

    Provides access to the table through standard INSERT/SELECT/UPDATE/DELETE
    statements.

    Args:
        schema (mysqlx.Schema): The Schema object.
        name (str): The table name.
    r(   rZ   c                óÆ   — t                                t          | j        j        ¦  «        t          | j        ¦  «        ¦  «        }| j                             |¦  «        dk    S r\   r¯   r`   s     r6   rJ   zTable.exists_in_databaseŸ  r±   r8   r¤   r?   r   c                ó\   — t          | g|¢R Ž }| j                             ¦   «         |_        |S )zËCreates a new :class:`mysqlx.SelectStatement` object.

        Args:
            *fields: The fields to be retrieved.

        Returns:
            mysqlx.SelectStatement: SelectStatement object
        )r   r4   rµ   r¶   ©r5   r¤   r¸   s      r6   ÚselectzTable.select¨  ó4   € õ ˜tÐ- fÐ-Ð-Ð-ˆØÔ'×=Ò=Ñ?Ô?ˆŒØˆr8   r   r   c                ó\   — t          | g|¢R Ž }| j                             ¦   «         |_        |S )zÊCreates a new :class:`mysqlx.InsertStatement` object.

        Args:
            *fields: The fields to be inserted.

        Returns:
            mysqlx.InsertStatement: InsertStatement object
        )r   r4   rµ   r¶   rò   s      r6   ÚinsertzTable.insertµ  rô   r8   r   c                ó`   — t          | ¦  «        }| j                             ¦   «         |_        |S )z‹Creates a new :class:`mysqlx.UpdateStatement` object.

        Returns:
            mysqlx.UpdateStatement: UpdateStatement object
        )r   r4   rµ   r¶   ©r5   r¸   s     r6   ÚupdatezTable.updateÂ  s,   € õ ˜tÑ$Ô$ˆØÔ'×=Ò=Ñ?Ô?ˆŒØˆr8   r   c                ó`   — t          | ¦  «        }| j                             ¦   «         |_        |S )zãCreates a new :class:`mysqlx.DeleteStatement` object.

        Returns:
            mysqlx.DeleteStatement: DeleteStatement object

        .. versionchanged:: 8.0.12
           The ``condition`` parameter was removed.
        )r   r4   rµ   r¶   rø   s     r6   ÚdeletezTable.deleteÌ  s,   € õ ˜tÑ$Ô$ˆØÔ'×=Ò=Ñ?Ô?ˆŒØˆr8   rÂ   c                óX  — t                                t          | j        j        ¦  «        t          | j        ¦  «        ¦  «        }	 | j                             |¦  «        }nI# t          $ r<}|j	        t          k    r&t          d| j        › d| j        j        › d�¦  «        |‚‚ d}~ww xY w|S )ziCounts the rows in the table.

        Returns:
            int: The total of rows in the table.
        zTable 'rÄ   rÅ   NrÆ   rÈ   s       r6   rÊ   zTable.countÙ  sÍ   € õ ×!Ò!Ý˜Tœ\Ô.Ñ/Ô/Õ1AÀ$Ä*Ñ1MÔ1Mñ
ô 
ˆð	ØÔ"×5Ò5°cÑ:Ô:ˆCˆCøÝð 	ð 	ð 	ØŒyÕ,Ò,Ð,Ý&ð-˜dœjð -ð -ØœÔ)ð-ð -ð -ñô ð ðð øøøøð	øøøð ˆ
rË   c                óÆ   — t                                t          | j        j        ¦  «        t          | j        ¦  «        ¦  «        }| j                             |¦  «        dk    S )zŒDetermine if the underlying object is a view or not.

        Returns:
            bool: `True` if the underlying object is a view.
        r
   ©Ú_COUNT_VIEWS_QUERYr^   r   r,   r'   r0   r4   r_   r`   s     r6   Úis_viewzTable.is_viewí  óL   € õ !×'Ò'­¨t¬|Ô/@Ñ(AÔ(AÅ6È$Ì*ÑCUÔCUÑVÔVˆØÔ×2Ò2°3Ñ7Ô7¸1Ò<Ð<r8   Nr«   )r¤   r?   r(   r   )r¤   r   r(   r   )r(   r   )r(   r   rî   )rO   rP   rQ   rR   rJ   ró   rö   rù   rû   rÊ   r   rT   r8   r6   rs   rs   ”  sª   € € € € € ðð ð=ð =ð =ð =ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð(=ð =ð =ð =ð =ð =r8   rs   c                  ó   — e Zd ZdZdd„ZdS )r€   zÌRepresents a database view on a schema.

    Provides a mechanism for creating, alter and drop views.

    Args:
        schema (mysqlx.Schema): The Schema object.
        name (str): The table name.
    r(   rZ   c                óÆ   — t                                t          | j        j        ¦  «        t          | j        ¦  «        ¦  «        }| j                             |¦  «        dk    S r\   rþ   r`   s     r6   rJ   zView.exists_in_database  r  r8   Nr«   )rO   rP   rQ   rR   rJ   rT   r8   r6   r€   r€   ÷  s2   € € € € € ðð ð=ð =ð =ð =ð =ð =r8   r€   )6rR   Ú
__future__r   r    rœ   Útypingr   r   r   r   r   r	   Údbdocr   Ú	errorcoder   r   r   r   Úerrorsr   r   r   Úhelpersr   r   r   Ú	statementr   r   r   r   r   r   r   r   r   Útypesr   r    r!   r"   rê   r#   rÿ   r°   r]   rÇ   rˆ   r%   rV   rj   rs   r€   rT   r8   r6   ú<module>r     s×  ðð: 3Ð 2à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€à BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fàð ØÐÐÐÐÐð8ð ð
8ð ð
 Qð ð .€Ø2Ð ðað að að að añ aô að aðH]@ð ]@ð ]@ð ]@ð ]@ˆ^ñ ]@ô ]@ð ]@ð@	Eð Eð Eð Eð E�ñ Eô Eð EðD`=ð `=ð `=ð `=ð `=ˆNñ `=ô `=ð `=ðF=ð =ð =ð =ð =ˆ5ñ =ô =ð =ð =ð =r8   