�
J�g�t � �Z � d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dlm
Z
d d lmZ d d
lmZ d dlm
Z
d dlmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! ddl"m#Z# ddl"m$Z$ ddl"m%Z% ddl"m&Z& ddl"m'Z' ddl"m(Z( dd l"m)Z) dd!l"m*Z* dd"l"m+Z+ dd#l,m-Z- dd$l,m.Z. d%d&l/m0Z0 d%d'l1m2Z2 d%d(l3m4Z4 d%d)l3m5Z5 d%d*l6m7Z7 d%d+l6m8Z8 d%d,l0m9Z9 d%d-l:m;Z; erld d.lm<Z< d d/lm=Z= d d0lm>Z> d d1l?m@Z@ d d2lAmBZB d d3lCmDZD d d4lEmFZF d d5lEmGZG d d6lmHZH d d7lmIZI d d8lmJZJ d d9lKmLZL d d:lKmMZM d d;lNmOZO dd<l"mPZP d%d=lQmRZR d%d>lSmTZT d%d?lUmVZV ejW eX� � ZY G d@� dAe.� � ZZ G dB� dCe%� � Z[ e;e+dD� � dfdK�� � Z\ e;e[dD� � dgdL�� � Z] e;e&dD� � dhdN�� � Z^ e;e*dD� � didP�� � Z_ e8j` dQ� � e7j` dQdR� � e4ja �b dS� � G dT� dUe4ja � � � � � � � � Zce2jd �e ec� � djdY�� � Zfe2jg �e e� � dkd^�� � Zhdld_�Zidmdb�Zjdnde�ZkdS )o� )�annotationsN)�Any)�cast)�Dict)�List)�Optional)�Sequence)�Tuple)�
TYPE_CHECKING)�Union)�Column)�literal_column)�Numeric)�text)�types)�BIGINT)�ExcludeConstraint)�INTEGER)�CreateIndex)�ColumnClause)�
TextClause)�FunctionElement)�NULLTYPE� )�alter_column)�alter_table)�AlterColumn)�
ColumnComment)�format_column_name)�format_table_name)�format_type)�IdentityColumnDefault)�RenameTable)�ComparisonResult)�DefaultImpl� )�util)�render)�ops)� schemaobj)�BatchOperations)�
Operations)�sqla_compat)�compiles)�Literal)�Index)�UniqueConstraint)�ARRAY)�
PGDDLCompiler)�HSTORE)�JSON)�JSONB)�
ClauseElement)�
ColumnElement)�quoted_name)�MetaData)�Table)�
TypeEngine)�_ServerDefault)�AutogenContext)�_f_name)�MigrationContextc �| � � e Zd ZdZdZej ddhfz ZdQd�Zd� Zd
� Z dRdS� fd"�
Z
d#� Zd$� Z e
j d%� � e
j d&� � e
j d'� � e
j d(� � e
j d)� � fZdTd+�ZdUd/�ZdVd3�ZdWd7�ZdXd;�ZdYd>�Z dZd[� fdC�
Zd\dH�Zd]dJ�Zd^dL�Zd_dN�Zd`dP�Z� xZS )a�PostgresqlImpl�
postgresqlT�FLOATzDOUBLE PRECISION�indexr0 �kwr �return�Nonec �
� |j � dd � � pd}|D ]B}||j j vr2|j � t |t j � � � � �C| � t |fi |��� � d S )N�postgresql_include� )
�kwargs�get�table�c�
append_columnr
�sqltypes�NullType�_execr )�selfrE rF rJ �cols �f/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/alembic/ddl/postgresql.py�create_indexzPostgresqlImpl.create_indexU s� � � #�\�-�-�.B�D�I�I�O�R��%� � �C��%�+�-�'�'���)�)��3�� 1�2�2�� � ��
�
�
�;�u�+�+��+�+�,�,�,�,�,� c �n � |j D ],}|j �#|j |j v r| � |� � �-d S �N)�constraints�name�named_constraints�drop_constraint)rT �
batch_implrN �
constraints rV �prep_table_for_batchz#PostgresqlImpl.prep_table_for_batcha sK � ��+� 1� 1�J���+��O�z�'C�C�C��$�$�Z�0�0�0�� 1� 1rX c � � |j r||j j u rdS |}||k }|rdS d |||j fv r| S |j j }t |t � � rEt |j t � � st j
dd|� � }d|� d�}t |� � }| j }|�J �|�
t j t |� � |k � � � � S )NFz^'|'$� �')�primary_keyrN �_autoincrement_column�server_default�arg�
isinstance�str�typer �re�subr �
connection�scalarr- �_select) rT �inspector_column�metadata_column�rendered_metadata_default�rendered_inspector_default�conn_col_default�defaults_equal�metadata_default�conns rV �compare_server_defaultz%PostgresqlImpl.compare_server_defaulti s* � �
�'� ��?�#8�#N�N�N��5�5��)�-F�F��� ��5���%��*�
�
�
�
&�%�%�*�9�=���&��,�,� @��.�3�W�=�=�
;�#%�6�(�B�8H�#I�#I� �#:�'7�#:�#:�#:� �-�.>�?�?�� ��������;�;����/�0�0�4D�D�
�
�
�
�
�
rX NF�
table_namerj �column_name�nullable�Optional[bool]rg �%Union[_ServerDefault, Literal[False]]r\ �
Optional[str]�type_�Optional[TypeEngine]�schema�
autoincrement�
existing_type�existing_server_default�Optional[_ServerDefault]�existing_nullable�existing_autoincrementc
� �� |
� dd � � }|�|�t j d� � �|�*| � t |||||| |
|�� � � � t � � j ||f|||||| |
||d� |
�� d S )N�postgresql_usingz6postgresql_using must be used with the type_ parameter)r� �usingr� r� r� ) r| rg r\ r� r� r� r� r� r� )�popr'