Ë
    qûàg"  ã                   ó²   — d dl Zd dlmZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZ d d
lmZ  G d„ de
«      Zy)é    N©Úcount)Úsettings)ÚBaseCommandÚCommandError)ÚDEFAULT_DB_ALIAS)ÚTEST_DATABASE_PREFIX)ÚSQLITE_ENGINESÚPOSTGRESQL_ENGINESÚMYSQL_ENGINES)Úparse_mysql_cnf)Úsignalcommand)ÚRemovedInNextVersionWarningc                   ó2   ‡ — e Zd ZdZˆ fd„Zed„ «       Zˆ xZS )ÚCommandz%Drops test database for this project.c                 óP  •— t         ‰| �  |«       |j                  dddddd¬«       |j                  dd	d
dd d¬«       |j                  ddd
dd d¬«       |j                  ddd
dd d¬«       |j                  ddd
dt        d¬«       |j                  dt        dt        z  ¬«       y )Nz	--noinputz
--no-inputÚstore_falseÚinteractiveTz:Tells Django to NOT prompt the user for input of any kind.)ÚactionÚdestÚdefaultÚhelpz-Uz--userÚstoreÚuserz=Use another user for the database then defined in settings.pyz-Pz
--passwordÚpasswordzAUse another password for the database then defined in settings.pyz-Dz--dbnameÚdbnamez5Use another database name then defined in settings.pyz-Rz--routerÚrouterz:Use this router-database other then defined in settings.pyz
--databasezGNominates a database to run command for. Defaults to the "%s" database.)r   r   )ÚsuperÚadd_argumentsÚadd_argumentr   )ÚselfÚparserÚ	__class__s     €úv/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django_extensions/management/commands/drop_test_database.pyr   zCommand.add_arguments   sã   ø€ Ü‰Ñ˜fÔ%Ø×ÑØ˜¨mÀ-ØÐ[ð 	ô 	
ð 	×ÑØ�( 7°ÀØPð 	ô 	
ð 	×ÑØ�, w°ZÈØTð 	ô 	
ð 	×ÑØ�* W°8ÀTØHð 	ô 	
ð 	×ÑØ�* W°8ÔEUØMð 	ô 	
ð 	×ÑØÔ"2ØZÔ]mÑmð 	õ 	
ó    c                 óx  ‡— |d   }|d   t         k7  r!t        j                  dt        d¬«       |d   }t        j
                  j                  |«      }|€t        d|z  «      ‚|j                  d«      }d	x}x}xŠx}}	|d
k(  rt        |«      \  }}Š}}	|d   xs |j                  d«      xs |}|d   xs |j                  d«      xs |}	 |d   d   Š‰€t        |d   xs |j                  d«      z   Š‰�‰d	k(  rt        d«      ‚|j                  d«      xs |}|j                  d«      xs |	}	|d   }
|d   rt        dj                  ‰¬«      «      }nd}|dk7  rt        d«       yˆfd„}|t        v ryt        j                   d|z  «       d„ }	  ||«      D ]P  }t"        j$                  j'                  |«      s n/t        j                   d|z  «       t#        j(                  |«       ŒR �nÕ|t,        v r¿ddl}||d œ}|j1                  d!«      r||d"<   n||d#<   |	rt3        |	«      |d$<    |j4                  d3i |¤Ž}|j7                  «       } |d%j                  «      D ]Q  }d&|z  }|j9                  |«      }|d'k  r �nCd(|z  }t        j                   d)|z   d*z   «       |j9                  |«       ŒS �n|t:        v røt<        j>                  jA                  d+«      }|rddl!}nddl"}dd,i}|r||d<   |r||d<   |r||d#<   |	r|	|d$<    |j4                  d3i |¤Ž}|rd-|_#        n|jI                  d«       |j7                  «       } |d%j                  «      D ][  }d.|z  }	 |j9                  |«       |jJ                  d'k  r nBd/|z  }t        j                   d)|z   d*z   «       |j9                  |«       Œ] nt        d1|z  «      ‚|
dk\  s|d   rt        d2«       yy# t        $ r dŠY �Œw xY w# t*        $ r Y yw xY w# |jL                  $ r,}t        jN                  d0tQ        |«      z  «       Y d}~ yd}~ww xY w)4z$Drop test database for this project.Údatabaser   z2--router is deprecated. You should use --database.é   )Ú
stacklevelNzUnknown database %sÚENGINEÚ Úmysqlr   ÚUSERr   ÚPASSWORDÚTESTÚNAMEr   z?You need to specify DATABASE_NAME in your Django settings file.ÚHOSTÚPORTÚ	verbosityr   aG  
You have requested to drop all test databases.
This will IRREVERSIBLY DESTROY
ALL data in the database "{db_name}"
and all cloned test databases generated via
the "--parallel" flag (these are sequentially
named "{db_name}_1", "{db_name}_2", etc.).
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: )Údb_nameÚyeszReset cancelled.c              3   óV   •‡ K  — ‰–— ˆˆ fd„t        d«      D «       E d{  –—†  y7 Œ­w)a}  
            Return a generator of all possible test database names.
            e.g., 'test_foo', 'test_foo_1', test_foo_2', etc.

            formatter: func returning a clone db name given the primary db name
            and the clone's number, e.g., 'test_foo_1' for mysql/postgres, and
            'test_foo_1..sqlite3' for sqlite (re: double dots, see comments).
            c              3   ó0   •K  — | ]  } ‰‰|«      –— Œ y ­w)N© )Ú.0ÚnÚdatabase_nameÚ	formatters     €€r$   ú	<genexpr>z=Command.handle.<locals>.get_database_names.<locals>.<genexpr>q   s   øè ø€ ÒF¸™	 -°×3ÑFùs   ƒé   Nr   )r<   r;   s   `€r$   Úget_database_namesz*Command.handle.<locals>.get_database_namesg   s!   ùè ø€ ð  ÒÜF¼UÀ1»XÔF×FÒFús   „)¡'¢)zUnlinking %s databasesc                 ól   — t         j                  j                  | «      \  }}dj                  |||«      S )Nz{}_{}.{})ÚosÚpathÚsplitextÚformat)ÚnameÚnumberÚfilenameÚexts       r$   Úformat_filenamez'Command.handle.<locals>.format_filename{   s1   € Ü "§¡× 0Ñ 0°Ó 6‘�˜#ð "×(Ñ(¨°6¸3Ó?Ð?r%   zUnlinking database named "%s"r   )r   Úpasswdú/Úunix_socketÚhostÚportz{}_{}zKSELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='%s';r>   zDROP DATABASE IF EXISTS `%s`zExecuting: "ú"ÚpsycopgÚ	template1Tz>SELECT datname FROM pg_catalog.pg_database WHERE datname='%s';zDROP DATABASE IF EXISTS "%s";z	Error: %szUnknown database engine %szReset successful.r8   ))r   ÚwarningsÚwarnr   r   Ú	DATABASESÚgetr   r   ÚKeyErrorr	   ÚinputrD   Úprintr
   ÚloggingÚinforA   rB   ÚisfileÚunlinkÚOSErrorr   ÚMySQLdbÚ
startswithÚintÚconnectÚcursorÚexecuter   Ú	importlibÚutilÚ	find_specrP   Úpsycopg2Ú
autocommitÚset_isolation_levelÚrowcountÚProgrammingErrorÚ	exceptionÚstr)r!   ÚargsÚoptionsr'   ÚdbinfoÚenginer   r   Údatabase_hostÚdatabase_portr3   Úconfirmr?   rI   r4   ÚDatabaseÚkwargsÚ
connectionrb   Úexists_queryÚ	row_countÚ
drop_queryÚhas_psycopg3Úconn_paramsÚer;   s                            @r$   ÚhandlezCommand.handle1   sœ  ø€ ð ˜:Ñ&ˆØ�8ÑÔ 0Ò0Ü�M‰MÐNÔPkÐxyÕzØ˜xÑ(ˆHä×#Ñ#×'Ñ'¨Ó1ˆØˆ>ÜÐ4°xÑ?Ó@Ð@à—‘˜HÓ%ˆàJLÐLˆÐLˆxÐL˜-ÐL¨-¸-Ø�WÒÜL[Ð\bÓLcÑIˆT�8˜]¨M¸=à�v‰Ò< &§*¡*¨VÓ"4Ò<¸ˆØ˜:Ñ&ÒL¨&¯*©*°ZÓ*@ÒLÀHˆð	!Ø" 6™N¨6Ñ2ˆMð Ð Ü0°G¸HÑ4EÒ4[ÈÏÉÐTZÓI[Ñ\ˆMàÐ  M°RÒ$7ÜÐ`ÓaÐaàŸ
™
 6Ó*Ò;¨mˆØŸ
™
 6Ó*Ò;¨mˆà˜KÑ(ˆ	Ø�=Ò!Üð 	/÷ 06©v¸m¨vÓ/Ló	N‰Gð ˆGà�eÒÜÐ$Ô%Øô
	Gð ”^Ñ#ô �L‰LÐ1°FÑ:Ô;ò@ðÙ1°/ÓBò '�GÜŸ7™7Ÿ>™>¨'Ô2ÙÜ—L‘LÐ!@À7Ñ!JÔKÜ—I‘I˜gÕ&ð	'ùð ”}Ñ$Û&àØ"ñˆFð ×'Ñ'¨Ô,Ø(5��}Ò%à!.��v‘áÜ!$ ]Ó!3��v‘à)˜×)Ñ)Ñ3¨FÑ3ˆJØ×&Ñ&Ó(ˆFá-¨g¯n©nÓ=ò 	+�àaØñð ð #ŸN™N¨<Ó8�	Ø˜q’=ÚØ;¸gÑE�
Ü—‘˜^¨jÑ8¸3Ñ>Ô?Ø—‘˜zÕ*ò	+ð Ô)Ñ)Ü$Ÿ>™>×3Ñ3°IÓ>ˆLÙÜ*ã+à# [Ð1ˆKÙØ&*�˜FÑ#ÙØ*2�˜JÑ'ÙØ&3�˜FÑ#ÙØ&3�˜FÑ#à)˜×)Ñ)Ñ8¨KÑ8ˆJÙØ(,�
Õ%à×.Ñ.¨qÔ1Ø×&Ñ&Ó(ˆFá-¨g¯n©nÓ=ò �Ø_Øñ �ðØ—N‘N <Ô0ð —‘¨Ò*ÙØ!BÀWÑ!L�JÜ—L‘L °*Ñ!<¸sÑ!BÔCØ—N‘N :Õ.ñô  Ð;¸fÑDÓEÐEà˜Š>˜W ]Ò3ÜÐ%Õ&ð 4øôY ò 	!Ø ‹Mð	!ûôF ò ÙðûðF  ×0Ñ0ò Ü×%Ñ% k´C¸³FÑ&:Ô;ÝûðúsC   ÃO ÆAO/ Í" O>Î1O>ÏO,Ï+O,Ï/	O;Ï:O;Ï>P9Ð!P4Ð4P9)Ú__name__Ú
__module__Ú__qualname__r   r   r   r~   Ú__classcell__)r#   s   @r$   r   r      s#   ø„ Ø2€Dô
ð6 ñc'ó ôc'r%   r   )Úimportlib.utilrd   Ú	itertoolsr   rA   rY   rR   Údjango.confr   Údjango.core.management.baser   r   Ú	django.dbr   Ú django.db.backends.base.creationr	   Údjango_extensions.settingsr
   r   r   Ú"django_extensions.management.mysqlr   Ú"django_extensions.management.utilsr   Ú#django_extensions.utils.deprecationr   r   r8   r%   r$   ú<module>r�      s=   ðã Ý Û 	Û Û å  ß AÝ &Ý Aç XÑ XÝ >Ý <Ý KôB'ˆkõ B'r%   