
    kh                         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dS )    N)List)settings)BaseCommandCommandError)DEFAULT_DB_ALIAS)signalcommand)RemovedInNextVersionWarning)SQLITE_ENGINESPOSTGRESQL_ENGINESMYSQL_ENGINESc                   X     e Zd ZU dZg Zee         ed<   dZ fdZ	e
d             Z xZS )Commanda0  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                                          |           |                    ddddt          d           |                    dt          dt          z  	           |                    d
ddddd           d S )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     f/var/www/histauto/venv/lib/python3.11/site-packages/django_extensions/management/commands/sqlcreate.pyr   zCommand.add_arguments   s    f%%%$M 	 	
 	
 	
 	$1 	 	 	
 	
 	
 	V 	 	
 	
 	
 	
 	
    c                    |d         }|d         t           k    r$t          j        dt          d           |d         }t          j                            |          }|t          d|z            |                    d          }|                    d          }|                    d	          }|                    d
          }|                    d          }	t          j	                    }
|	sd}	|t          v r!t          j                            d           d S |t          v rOt          j                            d           t          d|z             t          d|d|d|
d|d	           d S |t           v r|d         r(t          d|d           |rt          d|d           |rF|rDt          d|d|d           t          d|d|d           t          d|d |d           d S t          d!           t          d|d"           d S t          j                            d#|z             t          d$|z             t          d|d%|d           d S )&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.handle7   s   :&8 000MD+   
 x(H#''11>4x?@@@H%%F##J''F##F##%''  	! F^##J[     }$$J  
 KfTUUUE66666888VVV5     )))v Avvv?@@@ AEvvv?@@@ O& Ovvvvv'   vvvvv'   ffffffUVVVVVW   VVVMNNNNN JIFR   '&0111E&&&&&&QRRRRRr    )__name__
__module____qualname__r   r   r   str__annotations__can_import_settingsr   r   r?   __classcell__)r   s   @r   r   r      s         D )+DI***
 
 
 
 
8 ES ES ]ES ES ES ES E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      s     



                    A A A A A A A A & & & & & & < < < < < < K K K K K K X X X X X X X X X XmS mS mS mS mSk mS mS mS mS mSr    