
    jg                         d dl Z d dlZd dlZd dlm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 d dlmZmZmZ  G d	 d
e      Zy)    N)List)settings)BaseCommandCommandError)DEFAULT_DB_ALIAS)signalcommand)RemovedInNextVersionWarning)SQLITE_ENGINESPOSTGRESQL_ENGINESMYSQL_ENGINESc                   L     e Zd ZU dZg Zee   ed<   dZ fdZ	e
d        Z xZS )Commanda+  Generates the SQL to create your database for you, as specified in settings.py
The envisioned use case is something like this:

    ./manage.py sqlcreate [--database=<databasename>] | mysql -u <db_administrator> -p
    ./manage.py sqlcreate [--database=<databasname>] | psql -U <db_administrator> -Wrequires_system_checksTc                     t         |   |       |j                  ddddt        d       |j                  dt        dt        z  	       |j                  d
ddddd       y )Nz-Rz--routerstorerouterz:Use this router-database other then defined in settings.py)actiondestdefaulthelpz
--databasezGNominates a database to run command for. Defaults to the "%s" database.)r   r   z-Dz--drop
store_truedropFzCIf given, includes commands to drop any existing user and database.)superadd_argumentsadd_argumentr   )selfparser	__class__s     j/var/www/html/Stanley/venv/lib/python3.12/site-packages/django_extensions/management/commands/sqlcreate.pyr   zCommand.add_arguments   sy    f%*W8EUM 	 	
 	"2Z]mm 	 	
 	(<feV 	 	
    c                    |d   }|d   t         k7  r!t        j                  dt        d       |d   }t        j
                  j                  |      }|t        d|z        |j                  d      }|j                  d      }|j                  d	      }|j                  d
      }|j                  d      }	t        j                         }
|	sd}	|t        v r t        j                  j                  d       y |t        v rFt        j                  j                  d       t        d|z         t        d|d|d|
d|d	       y |t         v r{|d   r t        d|d       |rt        d|d       |r9|r7t        d|d|d       t        d|d|d       t        d|d |d       y t        d!       t        d|d"       y t        j                  j                  d#|z         t        d$|z         t        d|d%|d       y )&Ndatabaser   z2--router is deprecated. You should use --database.   )
stacklevelzUnknown database %sENGINEUSERPASSWORDNAMEHOST	localhostzH-- manage.py migrate will automatically create a sqlite3 database file.
z-- WARNING!: https://docs.djangoproject.com/en/dev/ref/databases/#collation-settings
-- Please read this carefully! Collation will be set to utf8_bin to have case-sensitive data.
z7CREATE DATABASE %s CHARACTER SET utf8 COLLATE utf8_bin;zGRANT ALL PRIVILEGES ON z.* to 'z'@'z' identified by 'z';r   zDROP DATABASE IF EXISTS ;zDROP USER IF EXISTS zCREATE USER z WITH ENCRYPTED PASSWORD 'z' CREATEDB;zCREATE DATABASE z WITH ENCODING 'UTF-8' OWNER "z";z!GRANT ALL PRIVILEGES ON DATABASE z TO z-- Assuming that unix domain socket connection mode is being used because
-- USER or PASSWORD are blank in Django DATABASES configuration.z WITH ENCODING 'UTF-8';z6-- Don't know how to handle '%s' falling back to SQL.
zCREATE DATABASE %s;z to )r   warningswarnr	   r   	DATABASESgetr   socketgethostnamer
   sysstderrwriter   printr   )r   argsoptionsr"   dbinfoenginedbuserdbpassdbnamedbhostdbclients              r   handlezCommand.handle)   s   :&8 00MMNPkxyzx(H##''1>4x?@@H%F#J'F#F#%%'  F^#JJhi}$JJ   KfTU&  ))vv?@v?@&QWY_`aRXZ`abffUVW VNO JJVY__`'&01&&QRr    )__name__
__module____qualname__r   r   r   str__annotations__can_import_settingsr   r   r?   __classcell__)r   s   @r   r   r      s=    XD )+DI*
 4S 4Sr    r   )r0   r2   r,   typingr   django.confr   django.core.management.baser   r   	django.dbr   "django_extensions.management.utilsr   #django_extensions.utils.deprecationr	   django_extensions.settingsr
   r   r   r    r    r   <module>rO      s6     
     A & < K X XNSk NSr    