o
    í·Çi—  ã                   @   s–   U d Z ddlmZmZ ddlmZ ddlZdZe	e
d< dZee	df e
d< dZee	ee	 df e
d	< dZee	ee	 df e
d
< ddd„Zddd„ZdS )z}deduplicate model_providers by name

Revision ID: b3c4d5e6f7a8
Revises: f6e5d4c3b2a1
Create Date: 2026-03-28 18:30:00+08:00

é    )ÚSequenceÚUnion)ÚopNÚb3c4d5e6f7a8ÚrevisionÚf6e5d4c3b2a1Údown_revisionÚbranch_labelsÚ
depends_onÚreturnc                     s|   t  ¡ } |  t d¡¡}| ¡ }|D ])}|\}‰ }‡ fdd„|D ƒ}|r;|  t d¡ˆ |dœ¡ |  t d¡d|i¡ qd S )Nz©
        SELECT name, MIN(id) as keep_id, ARRAY_AGG(id ORDER BY id) as all_ids
        FROM public.model_providers
        GROUP BY name
        HAVING COUNT(*) > 1
    c                    s   g | ]}|ˆ kr|‘qS © r   )Ú.0Úid©Úkeep_idr   ú2alembic/versions/20260328_1830_dedupe_providers.pyÚ
<listcomp>#   s    zupgrade.<locals>.<listcomp>z¢
                    UPDATE public.models
                    SET provider_id = :keep_id
                    WHERE provider_id = ANY(:remove_ids)
                )r   Ú
remove_idszx
                    DELETE FROM public.model_providers
                    WHERE id = ANY(:remove_ids)
                r   )r   Úget_bindÚexecuteÚsaÚtextÚfetchall)ÚconnÚresultÚ
duplicatesÚrowÚnameÚall_idsr   r   r   r   Úupgrade   s"   
ú
û€ðr   c                   C   s   d S )Nr   r   r   r   r   Ú	downgrade:   s   r    )r   N)Ú__doc__Útypingr   r   Úalembicr   Ú
sqlalchemyr   r   ÚstrÚ__annotations__r   r	   r
   r   r    r   r   r   r   Ú<module>   s    
&