o
    /h                     @   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 )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                    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__ j/var/www/html/env_mimamsha/lib/python3.10/site-packages/django_extensions/management/commands/sqlcreate.pyr      s0   	
zCommand.add_argumentsc                 O   s  |d }|d t krtjdtdd |d }tj|}|d u r&td| |d}|d}|d	}|d
}|d}	t	 }
|	sGd}	|t
v rStjd d S |tv rotjd td|  td|||
|f  d S |tv r|d rtd|f  |rtd|f  |r|rtd||f  td||f  td||f  d S td td|f  d S tjd|  td|  td||f  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 %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   	DATABASESgetr   socketgethostnamer	   sysstderrwriter   printr
   )r   argsoptionsr   dbinfoenginedbuserdbpassdbnamedbhostdbclientr   r   r   handle7   sv   





zCommand.handle)__name__
__module____qualname__r   r   r   str__annotations__can_import_settingsr   r   r;   __classcell__r   r   r   r   r      s   
 r   )r,   r.   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   r   r   <module>   s   