
    h                     F    d dl Z d dlmZ d dlmZ d dlmZ  G d de      Zy)    N)
errorcodes)BaseDatabaseCreation)strip_quotesc                   B     e Zd Zd ZddZd Zd Zd fd	ZddZ xZ	S )	DatabaseCreationc                 L    | j                   j                  j                  |      S )N)
connectionops
quote_name)selfnames     i/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/db/backends/postgresql/creation.py_quote_namezDatabaseCreation._quote_name   s    ""--d33    c                     d}|r|dj                  |      z  }|r#|dj                  | j                  |            z  }|xr d|z   S )N z ENCODING '{}'z TEMPLATE {}WITH)formatr   )r   encodingtemplatesuffixs       r   _get_database_create_suffixz,DatabaseCreation._get_database_create_suffix   sR    &--h77Fn++D,<,<X,FGGF)&6/)r   c                     | j                   j                  d   }|d   J d       | j                  |d   |j                  d            S )NTEST	COLLATIONzHPostgreSQL does not support collation setting at database creation time.CHARSETTEMPLATE)r   r   )r	   settings_dictr   get)r   test_settingss     r   sql_table_creation_suffixz*DatabaseCreation.sql_table_creation_suffix   sa    55f=[)1 	
V	
1 //"9-"&&z2 0 
 	
r   c                 ^    |j                  dt        |      g       |j                         d uS )Nz7SELECT 1 FROM pg_catalog.pg_database WHERE datname = %s)executer   fetchone)r   cursordatabase_names      r   _database_existsz!DatabaseCreation._database_exists    s-    PS_`mSnRop ,,r   c                 :   	 |r| j                  ||d         ry t        | 	  |||       y # t        $ rd}t	        |j
                  dd      t        j                  k7  r*| j                  d|z         t        j                  d       n|s Y d }~y Y d }~y d }~ww xY w)Ndbnamepgcoder   z+Got an error creating the test database: %s   )r'   super_execute_create_test_db	Exceptiongetattr	__cause__r   DUPLICATE_DATABASElogsysexit)r   r%   
parameterskeepdbe	__class__s        r   r-   z(DatabaseCreation._execute_create_test_db$   s    	$//
88LM G+FJG 	q{{Hb1Z5R5RRFJK   		s   - - 	BABBc           	         | j                   j                          | j                   j                  d   }| j                  |      d   }| j	                  |      | j                  |      d}| j                         5 }	 | j                  |||       d d d        y # t        $ r 	 |dk\  r%| j                  d| j                  ||      d       |j                  d|z         | j                  |||       n?# t        $ r3}| j                  d|z         t        j                  d	       Y d }~nd }~ww xY wY w xY w# 1 sw Y   y xY w)
NNAME)r   )r)   r      z'Destroying old test database for alias z...zDROP DATABASE %(dbname)sz*Got an error cloning the test database: %sr+   )r	   closer   get_test_db_clone_settingsr   r   _nodb_cursorr-   r.   r2   _get_database_display_strr#   r3   r4   )	r   r   	verbosityr6   source_database_nametarget_database_nametest_db_paramsr%   r7   s	            r   _clone_test_dbzDatabaseCreation._clone_test_db5   s<    	#<<VD#>>vFvN&&';<66@T6U
   	 F ,,V^VL	  	   
 	  A~ ::9FZ["  NN#=#NO00P   HHIAMNHHQKK 
 	  	 sU   <D;>B	D8$AC65D86	D2?)D-(D8-D22D85D;7D88D;;E)NN)F)
__name__
__module____qualname__r   r   r!   r'   r-   rD   __classcell__)r8   s   @r   r   r   	   s!    4*
-" r   r   )r3   psycopg2r    django.db.backends.base.creationr   django.db.backends.utilsr   r    r   r   <module>rM      s     
  A 1D + D r   