
    Ti
                         d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	 ddl
mZ dZded	d
ed	de	d	gZ G d d      Zy)    )ListTypeN)V1InitialSchema)V2AddCanvases)V3AddComfyWorkflow   )	Migration   )version	migration   c                   x    e Zd Zdededeee      fdZdededeee      fdZde	j                  dededd	fd
Zy	)MigrationManagercurrent_versiontarget_versionreturnc                 T    t         D cg c]  }|d   |kD  r
|d   |k  r| c}S c c}w )zGet list of migrations to applyr   )ALL_MIGRATIONSselfr   r   ms       U/home/jay/workspace/tools/ai-image-gen/jaaz-app/server/services/migrations/manager.pyget_migrations_to_applyz(MigrationManager.get_migrations_to_apply   s<    ) VaY</1a	ln6T  V 	V Vs   %c                 f    t        t              D cg c]  }|d   |k  r
|d   |kD  r| c}S c c}w )z"Get list of migrations to rollbackr   )reversedr   r   s       r   get_migrations_to_rollbackz+MigrationManager.get_migrations_to_rollback   sA    #N3 VaY<?2q|n7T  V 	V Vs   .connfrom_version
to_versionNc                 4   ||k  rt        d|d|       | j                  ||      }t        d|       |D ]a  }|d   } |       }t        d|j                   d|j                          |j	                  |       |j                  d|j                  f       c yy)	z4Apply or rollback migrations to reach target versionu    🦄 Applying migrations forwardz->u   🦄 Migrations to applyr   zApplying migration z: z!UPDATE db_version SET version = ?N)printr   r   descriptionupexecute)r   r   r   r   migrations_to_applyr   migration_classs          r   migratezMigrationManager.migrate$   s    *$4lD*U"&">">|Z"X,.AB0 X	"+K"8+-	+I,=,=+>bAVAV@WXYT"@9CTCTBVWX %    )__name__
__module____qualname__intr   r   r	   r   r   sqlite3
Connectionr'    r(   r   r   r      s    Vs VC VTXY]^gYhTi V
V# Vs VW[\`aj\kWl V
XG.. Xc Xs XW[ Xr(   r   )typingr   r   r-   %services.migrations.v1_initial_schemar   #services.migrations.v2_add_canvasesr   )services.migrations.v3_add_comfy_workflowr    r	   CURRENT_VERSIONr   r   r/   r(   r   <module>r6      sX      A = H   $
 "
 'X Xr(   