
    "lj8                         d dl Z d dlZd dlZd dlmZmZ d dlmZ ddlmZ defdZ	ddej                  d	edz  defd
Zy)    N)UTCdatetime)Path   )isoreturnc                  \    t        t              j                         j                  d   dz  S )N   
migrations)r   __file__resolveparents     Q/opt/struktur/hermes-workspace/worker-watcher/src/worker_watcher/db/migrations.pymigration_dirr   
   s%    >!!#++A.==r   
connection	directoryc                    |xs
 t               }| j                  d       | j                  d      D ch c]  }t        |d          }}t        |j	                  d            }|D ]8  }t        j                  d|j                        }|s't        |j                  d            }|j                  d      }	t        j                  |	j                               j                         }
||v rD| j                  d	|f      j                         }|r |d   |
k7  rt        d
|j                         | 5  | j!                  |	       | j                  d||j                  t#        t%        j&                  t(                    |
f       d d d        |j+                  |       ; t-        |d      S c c}w # 1 sw Y   /xY w)NzCREATE TABLE IF NOT EXISTS schema_migrations (version INTEGER PRIMARY KEY, name TEXT NOT NULL, applied_at TEXT NOT NULL, checksum TEXT NOT NULL)z%SELECT version FROM schema_migrationsr   z*.sqlz(\d+)_.*\.sql$   zutf-8)encodingz8SELECT checksum FROM schema_migrations WHERE version = ?zmigration checksum changed: zVINSERT INTO schema_migrations(version, name, applied_at, checksum) VALUES (?, ?, ?, ?))default)r   executeintsortedglobrematchnamegroup	read_texthashlibsha256encode	hexdigestfetchoneRuntimeErrorexecutescriptr   r   nowr   addmax)r   r   folderrowappliedfilesfiler   versionsqlchecksumstoreds               r   apply_migrationsr5      s   )-/F  j  k&0&8&89`&abss3q6{bGb6;;w'(E *DII6ekk!n%nngn.>>#**,/99;g''(beldnoxxzF&)x/"%A$))#MNN 	$$S)h$))Sc):%;XF	 	G%& w""+ c	 	s   F/4AF44F=	)N)r"   r   sqlite3r   r   pathlibr   timeutilr   r   
Connectionr   r5   r   r   r   <module>r:      sH     	  "  >t >#!3!3 #t #WZ #r   