
    j->                         S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJ	r
  \" S/ \R                  QSPS	PS
P5      r\" S/ \
R                  QS
P5      r	 " S S\5      rg)    )
namedtupleN)models)BaseDatabaseIntrospection)	FieldInfo)	TableInfor   is_autofieldis_jsoncommentr   c                   ~  ^  \ rS rSrSr\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S	\R                   S
\R"                  S0rU 4S jrS rS rS rSS jrS rS rS rSrU =r$ )DatabaseIntrospection      	DateField
FloatFieldBinaryField	CharField	TextFieldDurationFieldDecimalFieldDateTimeFieldc                 n  > U[         R                  :X  al  USS u  p4US:X  aW  US:  a  UR                  (       a  S$ S$ SUs=:  a  S:  a  O  OUR                  (       a  gUS:X  a  g	UR                  (       a  g
gUS:X  a  gO&U[         R                  :X  a  UR                  (       a  g[
        TU ]  X5      $ )N      r      BigAutoFieldBigIntegerFieldr   SmallAutoFieldBooleanField	AutoFieldIntegerFieldr   	JSONField)oracledbNUMBERr   NCLOBr	   superget_field_type)self	data_typedescription	precisionscale	__class__s        _/var/www/html/KUNJ/venv/lib/python3.13/site-packages/django/db/backends/oracle/introspection.pyr'   $DatabaseIntrospection.get_field_type#   s    '*1Q/Izr> '33 ' /
 &Q&;+C+C+!^) --&)$# (..([-@-@w%i==    c           	          UR                  S5        UR                  5        Vs/ s H(  n[        U R                  US   5      US   US   5      PM*     sn$ s  snf )z>Return a list of table and view names in the current database.a  
            SELECT
                user_tables.table_name,
                't',
                user_tab_comments.comments
            FROM user_tables
            LEFT OUTER JOIN
                user_tab_comments
                ON user_tab_comments.table_name = user_tables.table_name
            WHERE
                NOT EXISTS (
                    SELECT 1
                    FROM user_mviews
                    WHERE user_mviews.mview_name = user_tables.table_name
                )
            UNION ALL
            SELECT view_name, 'v', NULL FROM user_views
            UNION ALL
            SELECT mview_name, 'v', NULL FROM user_mviews
        r   r      )executefetchallr   identifier_converter)r(   cursorrows      r.   get_table_list$DatabaseIntrospection.get_table_list<   sa      	, (
( d//A7QQH(
 	
 
s   /Ac                    UR                  SX"U/5        UR                  5       nU(       a  US   OSnUR                  SXB/5        UR                  5        VVVVV	V
Vs0 s H1  u  nnnnn	n
nUUU(       a  US:w  a  UR                  5       OSUU	U
U4_M3     nn
n	nnnnnU =R                  S-  sl        UR                  SR                  U R                  R                  R                  U5      U R                  5      5        / nUR                   H  nUS   nX   u  nnnn	n
nU0 -  nUS   [        R                  :X  a  US	   S
:X  a  US   S:X  a  SnSnOUS   =(       d    SnUS	   =(       d    SnUR                  [        U R                  U5      US   UUS   UU/USS QUPUPU	PU
PUP76 5        M     U$ s  snn
n	nnnnf )zQ
Return a description of the table with the DB-API cursor.description
interface.
a  
            SELECT user_tables.default_collation
            FROM user_tables
            WHERE
                user_tables.table_name = UPPER(%s) AND
                NOT EXISTS (
                    SELECT 1
                    FROM user_mviews
                    WHERE user_mviews.mview_name = user_tables.table_name
                )
            UNION ALL
            SELECT user_views.default_collation
            FROM user_views
            WHERE user_views.view_name = UPPER(%s)
            UNION ALL
            SELECT user_mviews.default_collation
            FROM user_mviews
            WHERE user_mviews.mview_name = UPPER(%s)
            r    a  
            SELECT
                user_tab_cols.column_name,
                user_tab_cols.data_default,
                CASE
                    WHEN user_tab_cols.collation = %s
                    THEN NULL
                    ELSE user_tab_cols.collation
                END collation,
                CASE
                    WHEN user_tab_cols.char_used IS NULL
                    THEN user_tab_cols.data_length
                    ELSE user_tab_cols.char_length
                END as display_size,
                CASE
                    WHEN user_tab_cols.identity_column = 'YES' THEN 1
                    ELSE 0
                END as is_autofield,
                CASE
                    WHEN EXISTS (
                        SELECT  1
                        FROM user_json_columns
                        WHERE
                            user_json_columns.table_name = user_tab_cols.table_name AND
                            user_json_columns.column_name = user_tab_cols.column_name
                    )
                    THEN 1
                    ELSE 0
                END as is_json,
                user_col_comments.comments as col_comment
            FROM user_tab_cols
            LEFT OUTER JOIN
                user_col_comments ON
                user_col_comments.column_name = user_tab_cols.column_name AND
                user_col_comments.table_name = user_tab_cols.table_name
            WHERE user_tab_cols.table_name = UPPER(%s)
            NULLNr   z,SELECT * FROM {} WHERE ROWNUM < 2 AND {} > 0   r!   r      r   )r3   fetchoner4   rstripcache_bust_counterformat
connectionops
quote_namer*   r#   r$   appendr   r5   )r(   r6   
table_namer7   default_table_collationcolumndefault	collationdisplay_sizer   r	   r
   	field_mapr*   descnamer+   r,   s                     r.   get_table_description+DatabaseIntrospection.get_table_descriptionW   s<    	& Z0)	
, oo,/#a&R$J %1M'	
r "#
 
" # $+60A t   ## 	 
& 	1$:AA##..z:D<S<S	

 &&D7D BJDAw(//)d1go$q'Q, 	 GLq	Q1--d3G G !"X   !  % 'D y
 
s   8F9c                 "    UR                  5       $ )z7Identifier comparison is case insensitive under Oracle.)lower)r(   rO   s     r.   r5   *DatabaseIntrospection.identifier_converter   s    zz|r0    c                 @   UR                  SU/5        UR                  5       nU(       a:  U R                  US   5      U R                  U5      U R                  US   5      S./$ U H3  n[        U[        R
                  5      (       d  M$  X%R                  S./s  $    / $ )Na  
            SELECT
                user_tab_identity_cols.sequence_name,
                user_tab_identity_cols.column_name
            FROM
                user_tab_identity_cols,
                user_constraints,
                user_cons_columns cols
            WHERE
                user_constraints.constraint_name = cols.constraint_name
                AND user_constraints.table_name = user_tab_identity_cols.table_name
                AND cols.column_name = user_tab_identity_cols.column_name
                AND user_constraints.constraint_type = 'P'
                AND user_tab_identity_cols.table_name = UPPER(%s)
            r   r   )rO   tablerI   )rW   rI   )r3   r?   r5   
isinstancer   r   rI   )r(   r6   rG   table_fieldsr7   fs         r.   get_sequences#DatabaseIntrospection.get_sequences   s     L!	
& oo !55c!f=!66zB"77A?  A!V--..",ABB  	r0   c                 D   UR                  5       nUR                  SU/5        UR                  5        VVVVs0 s HT  u  nnnnU R                  U5      U R                  U5      U R                  U5      U R                  R                  U5      4_MV     snnnn$ s  snnnnf )z
Return a dictionary of
    {
        field_name: (field_name_other_table, other_table, db_on_delete)
    }
representing all foreign keys in the given table.
a  
    SELECT ca.column_name, cb.table_name, cb.column_name, user_constraints.delete_rule
    FROM   user_constraints, USER_CONS_COLUMNS ca, USER_CONS_COLUMNS cb
    WHERE  user_constraints.table_name = %s AND
           user_constraints.constraint_name = ca.constraint_name AND
           user_constraints.r_constraint_name = cb.constraint_name AND
           ca.position = cb.position)upperr3   r4   r5   on_delete_typesget)r(   r6   rG   
field_namerel_table_namerel_field_name	on_deletes          r.   get_relations#DatabaseIntrospection.get_relations  s      %%'
( L		
, "
 # %%j1)).9)).9$$((34  #
 	
 
s   AB
c                     UR                  SU/5        UR                  5        Vs/ s H  o0R                  US   5      PM     sn$ s  snf )Na  
            SELECT
                cols.column_name
            FROM
                user_constraints,
                user_cons_columns cols
            WHERE
                user_constraints.constraint_name = cols.constraint_name AND
                user_constraints.constraint_type = 'P' AND
                user_constraints.table_name = UPPER(%s)
            ORDER BY
                cols.position
            r   )r3   r4   r5   )r(   r6   rG   r7   s       r.   get_primary_key_columns-DatabaseIntrospection.get_primary_key_columns&  sK     L	
  >D__=NO=Nc))#a&1=NOOOs   Ac                 X   0 nUR                  SU/5        UR                  5        H2  u  pEpgnU R                  U5      nUR                  S5      UUSUUS.X4'   M4     UR                  SU/5        UR                  5        H2  u  pEpU R                  U5      nSSX4SSUR                  S5      S.X4'   M4     UR                  SU/5        UR                  5        HN  u  pKpunU R                  U5      nSUS	:H  SSS
US:X  a  SOUUR                  S5      UR                  S5      S.X4'   MP     U$ )z]
Retrieve any constraints or keys (unique, pk, fk, check, index) across
one or more columns.
aL  
            SELECT
                user_constraints.constraint_name,
                LISTAGG(LOWER(cols.column_name), ',')
                    WITHIN GROUP (ORDER BY cols.position),
                CASE user_constraints.constraint_type
                    WHEN 'P' THEN 1
                    ELSE 0
                END AS is_primary_key,
                CASE
                    WHEN user_constraints.constraint_type IN ('P', 'U') THEN 1
                    ELSE 0
                END AS is_unique,
                CASE user_constraints.constraint_type
                    WHEN 'C' THEN 1
                    ELSE 0
                END AS is_check_constraint
            FROM
                user_constraints
            LEFT OUTER JOIN
                user_cons_columns cols
                ON user_constraints.constraint_name = cols.constraint_name
            WHERE
                user_constraints.constraint_type = ANY('P', 'U', 'C')
                AND user_constraints.table_name = UPPER(%s)
            GROUP BY user_constraints.constraint_name, user_constraints.constraint_type
            ,N)columnsprimary_keyuniqueforeign_keycheckindexa  
            SELECT
                cons.constraint_name,
                LISTAGG(LOWER(cols.column_name), ',')
                    WITHIN GROUP (ORDER BY cols.position),
                LOWER(rcols.table_name),
                LOWER(rcols.column_name)
            FROM
                user_constraints cons
            INNER JOIN
                user_cons_columns rcols
                ON rcols.constraint_name = cons.r_constraint_name AND rcols.position = 1
            LEFT OUTER JOIN
                user_cons_columns cols
                ON cons.constraint_name = cols.constraint_name
            WHERE
                cons.constraint_type = 'R' AND
                cons.table_name = UPPER(%s)
            GROUP BY cons.constraint_name, rcols.table_name, rcols.column_name
            F)rm   rn   ro   rp   rq   rl   a  
            SELECT
                ind.index_name,
                LOWER(ind.index_type),
                LOWER(ind.uniqueness),
                LISTAGG(LOWER(cols.column_name), ',')
                    WITHIN GROUP (ORDER BY cols.column_position),
                LISTAGG(cols.descend, ',') WITHIN GROUP (ORDER BY cols.column_position)
            FROM
                user_ind_columns cols, user_indexes ind
            WHERE
                cols.table_name = UPPER(%s) AND
                NOT EXISTS (
                    SELECT 1
                    FROM user_constraints cons
                    WHERE ind.index_name = cons.index_name
                ) AND cols.index_name = ind.index_name
            GROUP BY ind.index_name, ind.index_type, ind.uniqueness
            rn   Tnormalidx)rm   rn   ro   rp   rq   typerl   orders)r3   r4   r5   split)r(   r6   rG   constraints
constraintrl   pkrn   rp   other_tableother_columntype_ru   s                r.   get_constraints%DatabaseIntrospection.get_constraints9  sm   
 6 L9	
< 7=oo6G2JU22:>J"==-! #'K# 7H 	( L+	
. ?Eoo>O:J22:>J$ +:"==-'K# ?P 	& L)	
, ;A//:K6Jv22:>J$ H,#!&(!2"==- ,,s+	'K# ;L r0   )rU   )__name__
__module____qualname____firstlineno__rA   r#   DB_TYPE_DATEDB_TYPE_BINARY_DOUBLEDB_TYPE_BLOBDB_TYPE_CHARDB_TYPE_CLOBDB_TYPE_INTERVAL_DSDB_TYPE_NCHARDB_TYPE_NCLOBDB_TYPE_NVARCHARDB_TYPE_NUMBERDB_TYPE_TIMESTAMPDB_TYPE_VARCHARdata_types_reverser'   r8   rP   r5   r[   re   rh   r}   __static_attributes____classcell__)r-   s   @r.   r   r      s     	{&&}{{$$o!!;""O  +>2
6CJ"H 
DP&t tr0   r   )collectionsr   r#   	django.dbr   %django.db.backends.base.introspectionr   r   BaseFieldInfor   BaseTableInfo_fieldsr   rU   r0   r.   <module>r      so    "   K L LO=((O.O)OYO	 {$Gm&;&;$GY$GH	]5 ]r0   