a
    8¤Xh¦  ã                   @   sŒ   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
„ d
eƒZdS )é    N)ÚList)Úsettings)ÚBaseCommandÚCommandError)ÚDEFAULT_DB_ALIAS)Úsignalcommand)ÚRemovedInNextVersionWarning)ÚSQLITE_ENGINESÚPOSTGRESQL_ENGINESÚMYSQL_ENGINESc                       sB   e Zd ZU dZg Zee ed< dZ‡ fdd„Z	e
dd„ ƒZ‡  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                    sP   t ƒ  |¡ |jddddtdd |jdtdt d	 |jd
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__© út/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/django_extensions/management/commands/sqlcreate.pyr      s    
þþ
þzCommand.add_argumentsc                 O   s–  |d }|d t kr,tjdtdd |d }tj |¡}|d u rLtd| ƒ‚| d¡}| d¡}| d	¡}| d
¡}| d¡}	t 	¡ }
|	sŽd}	|t
v r¤tj d¡ nî|tv rÚtj d¡ td| ƒ td|||
|f ƒ n¸|tv rf|d rtd|f ƒ |rtd|f ƒ |rN|rNtd||f ƒ td||f ƒ td||f ƒ ntdƒ td|f ƒ n,tj d| ¡ td| ƒ td||f ƒ d S )NÚdatabaser   z2--router is deprecated. You should use --database.é   )Ú
stacklevelzUnknown database %sZENGINEÚUSERZPASSWORDÚNAMEZ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 %s.* to '%s'@'%s' identified by '%s';r   zDROP DATABASE IF EXISTS %s;zDROP USER IF EXISTS %s;z5CREATE USER %s WITH ENCRYPTED PASSWORD '%s' CREATEDB;z4CREATE DATABASE %s WITH ENCODING 'UTF-8' OWNER "%s";z*GRANT ALL PRIVILEGES ON DATABASE %s TO %s;zŠ-- Assuming that unix domain socket connection mode is being used because
-- USER or PASSWORD are blank in Django DATABASES configuration.z)CREATE DATABASE %s WITH ENCODING 'UTF-8';z6-- Don't know how to handle '%s' falling back to SQL.
zCREATE DATABASE %s;z*GRANT ALL PRIVILEGES ON DATABASE %s to %s;)r   ÚwarningsÚwarnr   r   Z	DATABASESÚgetr   ÚsocketÚgethostnamer	   ÚsysÚstderrÚwriter   Úprintr
   )r   ÚargsÚoptionsr   ZdbinfoZengineZdbuserZdbpassZdbnameZdbhostZdbclientr   r   r   Úhandle)   sN    




ÿ


ÿzCommand.handle)Ú__name__Ú
__module__Ú__qualname__r   r   r   ÚstrÚ__annotations__Zcan_import_settingsr   r   r0   Ú__classcell__r   r   r   r   r      s   
r   )r(   r*   r%   Útypingr   Zdjango.confr   Zdjango.core.management.baser   r   Z	django.dbr   Z"django_extensions.management.utilsr   Z#django_extensions.utils.deprecationr   Zdjango_extensions.settingsr	   r
   r   r   r   r   r   r   Ú<module>   s   