~~`dZddlmZddlmZddlmZmZmZm Z m Z m Z m Z m Z ddlZddlmZmZmZmZmZmZmZmZddlmZddlmZdd lmZdd lmZ dd l!m"Z"d d l#m$Z$erd dl%m&Z&m'Z'GddZ(GddZ)GddeZGddeeZGddeeZGddee ZGddZ*dS)zRun migrations.) annotations)suppress) TYPE_CHECKINGAnyCallableDictListUnioncastoverloadN)SQLContext MySQLDatabase OperationPostgresqlDatabaseSqliteDatabasemake_index_name operation) MySQLMigrator)PostgresqlMigrator)SchemaMigrator)SqliteMigrator)depricated_method)logger) TModelType TVModelTypec@eZdZdZddZddZddZdd Zdd Zd Z dS)ORM __tables__ __models__selfc"i|_i|_dSNr r#s w/builddir/build/BUILD/imunify360-venv-2.6.2/opt/imunify360/venv/lib/python3.11/site-packages/peewee_migrate/migrator.py__init__z ORM.__init__#s1313modelrcL||j|j<||j|jj<dSr%r"__name__r!_meta table_namer#r*s r'addzORM.add's'*/'27 .///r)cD|j|j=|j|jj=dSr%r,r0s r'removez ORM.remove+s# OEN + OEK2 3 3 3r)namestrreturnc|j|Sr%)r"r#r4s r' __getattr__zORM.__getattr__/t$$r)c|j|Sr%)r!r8s r' __getitem__zORM.__getitem__2r:r)cNt|jSr%)iterr"valuesr&s r'__iter__z ORM.__iter__5sDO**,,---r)N)r#r)r*r)r4r5r6r) r- __module__ __qualname__ __slots__r(r1r3r9r<r@r)r'rr s,I444488884444%%%%%%%%.....r)rceZdZdZd?dZdZdZdZed@d Z edAdZ dBdZ dCdZ dDdZ e e dZ d@dZe edZdddEdZe ed ZdFd#Ze ed$ZdFd%Ze ed&ZdddGd(Ze ed)ZdHd,Ze ed-ZdId/ZdJd0Zd1d2dKd4ZdKd5ZdLd6ZdLd7ZdMd;Z dNd<Z!dLd=Z"d>S)OMigratorzProvide migrations.databaseUnion[pw.Database, pw.Proxy]ct|_t|tjr|j}||_g|_t ||_ dS)zInitialize the migrator.N) rorm isinstancepwProxyobj __database____ops__r from_database __migrator__)r#rGs r'r(zMigrator.__init__<sS h ) ) $|H$9; *88BBr)c|jD]p}t|tr5tjd|j|j|Ltjd|j|qg|_dS)zRun operations.z%s %szRun %sN) rPrKrrinfomethodargsrunr-)r#ops r'__call__zMigrator.__call__Gsx,  B"i((  GRY888 Hbk222 r)c*t|jS)zIterate over models.)r>rJr&s r'r@zMigrator.__iter__RsDH~~r)c t|S)zySync the current snapshot but not run operations. >> with migrator.sync(): >> # ... do changes ) SyncContextr&s r'fakez Migrator.fakeVs 4   r)r*rr6cdSr%rDr0s r' __get_model__zMigrator.__get_model__^ r)r5rcdSr%rDr0s r'r_zMigrator.__get_model__br`r)Union[TVModelType, str]Union[TVModelType, TModelType]ct|trM||jjvr|jj|S||jjvr |j|St d|z|S)zGet model by name.zModel %s not found)rKr5rJr"r! ValueErrorr0s r'r_zMigrator.__get_model__fsi eS ! ! ;+++x*511+++x&1E9:: : r)sqlctt|jj|g|R}|j|dS)Execute raw SQL.N)r rrRrfrPappend)r#rfparamsrXs r'rfz Migrator.sqlrsF )2T.23@@@@ A A Br)funcrcJ|jfddS)zRun a python function.ciSr%rD)rVrkkwargssr'zMigrator.run..ysDD$$9&$9$9r)N)rPri)r#rkrVrns ```r'rWz Migrator.runws1 999999:::::r)pythonc|j}|j||j|_|j|j|S)zxCreate model and table in database. :param model: Model class >> migrator.create_model(Model) )r.rJr1rOrGrPri create_table)r#r*metas r' create_modelzMigrator.create_model}sG{  U)  E./// r)rrTcascadeUnion[str, TModelType]rvboolc||}|j||j|j||dS)zDrop model and table from database. :param model: Model class or table name :param cascade(true): Drop table with cascade >> migrator.remove_model(Model, cascade=True) ruN)r_rJr3rPrirR drop_tabler#r*rvs r' remove_modelzMigrator.remove_models]""5))  D-888PPQQQQQr)rzfieldspw.Fieldc ||}|j}|D]\}}||||j|j|j|j ||j r@|j|j |j|j fd|S)Change fields. :param model: Model class or table name >> migrator.change_fields(Model, name=pw.CharField(null=True)) Tunique) r_r.items add_fieldrPrirR add_columnr/ column_namer add_index)r#r*r}rsr4fields r' add_fieldszMigrator.add_fieldss""5)){!<<>>  KD% NN4 ' ' ' L  !,,OU%6    |  ##%//%BSAU^b/cc r) add_columnsc ||}|j}|D]\}}|j||}|o|j}|||t|tj r8|j |j |j|||jkr>|j |j |j||jt|tj r||jr|jnd}|jr|jnd} |j |j |j|j|jjj|jj|| q|j |j |j|j||j|jkr|jr[|jf|jf} |j | |j |j j|jg| R#|j} t5t65|j|jfdfdddn #1swxYwY|j |j |j| |S)rRESTRICTTN)r_r.rr}getrrrKrLForeignKeyFieldrPrirRdrop_foreign_key_constraintr/ rename_column on_delete on_updateadd_foreign_key_constraint rel_model rel_fieldr4 change_columnrindexesrrrer3 drop_index) r#r*r}rsr4r old_fieldold_column_namerrindexs r' change_fieldszMigrator.change_fieldss#""5))!K!<<>>2 Z2 ZKD% e44I'AI,AO NN4 ' ' ')R%788  ##%AA$/Sbcc%"333 ##%33%:K %!344 /4NEOOJ /4NEOOJ  ##%@@)-8,!!     L  !//OU%6    |y///| Z*,el: ##E*** ##$?D$5$?$XRW$X$X$XYYYY)j))FFL''%*;)=t(DEEEFFFFFFFFFFFFFFF ##D$5$@$@RW$X$XYYYY s/#JJ" %J" change_columnsnamesc||}|j}fd|jD}|D]}||||jrSt |j|jg}|j |j |j||j |j |j|j||S)zRemove fields from model. :param model: Model class or table name :param cascade(true): Drop columns with cascade >> migrator.remove_fields(Model, "name", "age", cascade=True) c&g|] }|jv |SrD)r4).0rrs r' z*Migrator.remove_fields..s%QQQEUZ5=P=P%=P=P=Pr)ru)r_r.r}r? __del_field__rrr/rrPrirRr drop_column)r#r*rvrrsr}r index_names ` r' remove_fieldszMigrator.remove_fieldss""5)){QQQQT[%7%7%9%9QQQ  E   ue , , ,| _,T_u?P>QRR  ##D$5$@$@R\$]$]^^^ L  !--OU%6.      r) drop_columnsold_namenew_namec||}|j}|j|}t|tjr|j}||||x|_|_t|tjr|jdz|_| |||j |j |j||j|S)zRename field in model. :param model: Model class or table name :param old_name: Old field name :param new_name: New field name >> migrator.rename_field(Model, "name", "full_name") _id)r_r.r}rKrLrrrr4rrPrirRrr/)r#r*rrrsrs r' rename_fieldzMigrator.rename_fields""5)){ H% eR/ 0 0 )(H 5%((()11 U& eR/ 0 0 : % 1E 9E  x'''    + +DOXuGX Y Y    r)rrcV|j}||jt||jt |t jrX|j}|j|jkr|dz }t||rt||t|j |j dSdS)zDelete field from model.rN) r. remove_fieldr4delattrrKrLrrhasattrrbackref)r#r*rrs obj_id_names r'rzMigrator.__del_field__,s{ %*%%%uz""" eR/ 0 0 4+K EJ..u$ uk** ,{+++ EOU] 3 3 3 3 3  4 4r)c(||}|j}|j}|j|||_|j||j|j |||S)zRename table in database.) r_r.r/rJr3r1rPrirR rename_table)r#r*rrsrs r'rzMigrator.rename_table9s""5)){? "  U D-::8XNNOOO r)Frcolumnsc||}|j}|j||fg}|D]X}|j|}t |dkr||_| |_||j Y|j |j |j |||S)zCreate indexes.rr)r_r.rrir}rlenrrrrPrRrr/)r#r*rrrscolumns_colrs r'rzMigrator.add_indexDs""5)){ Wf-... / /CKOOC((E7||q  % "(j OOE- . . . . D-77Z`7aabbb r)c||}|j}g}D]Z}|j|}|st dkrdx|_|_||j[t|j |}fd|j D|_ |j |j |j ||S)z Drop indexes.rFc*g|]\}}|k ||fSrDrD)rcols_rs r'rz'Migrator.drop_index..fs&SSSitQ7d??q ???r))r_r.r}rrrrrirrr/rrPrRr)r#r*rrsrrrrs ` r'rzMigrator.drop_indexVs""5)){ / /CKOOC((E 7||q  -22 u{ OOE- . . . .$T_h?? SSSS4<SSS  D-88*UUVVV r)c||}|j}|D]S}|j|}d|_|j|j|j|j T|S)z Add not null.F) r_r.r}nullrPrirR add_not_nullr/rr#r*rrsr4rs r'rzMigrator.add_not_nulljsw""5)){ d dDK%EEJ L   1 > >tPUPa b b c c c c r)c||}|j}|D]S}|j|}d|_|j|j|j|j T|S)zDrop not null.T) r_r.r}rrPrirR drop_not_nullr/rrs r'rzMigrator.drop_not_nulltsw""5)){ e eDK%EEJ L   1 ? ?QVQb c c d d d d r)r4defaultrc||}|j}|j|}|x|j|<|_|j|j|j |||S)z Add default.) r_r.r}defaultsrrPrirR apply_defaultr/)r#r*r4rrsrs r' add_defaultzMigrator.add_default~sn""5)){ D!/66 eu} D-;;DOTSXYYZZZ r)c||}|j}|j|j|j|||S)zAdd constraint.)r_r.rPrirRadd_constraintr/)r#r*r4 constraintrss r'rzMigrator.add_constraintsO""5)){ D-<.s. X X X$T  . .t E E X X Xr))r_r.rPextend)r#r*rrss` @r'drop_constraintszMigrator.drop_constraintssZ""5)){  X X X X XRW X X X    r)N)rGrH)r*rr6r)r*r5r6r)r*rbr6rc)rfr5)rkr)r*rwrvrx)r*rwr}r~r6r)r*rwrr5rvrxr6r)r*rwrr5rr5r6r)r*rrr~)r*rwrr5r6r)r*rwrr5r6r)r*rwrr5r6r)r*rwr4r5rrr6r)r*rw)#r-rArB__doc__r(rYr@r]r r_rfrWrrprtrrr|rzrrrrrrrrrrrrrrrrrrDr)r'rFrF9s C C C C   !!!   X    X         ;;;; sH - -F    %$\>BBLMQ R R R R R R#"<>>J.$#J >>K====~'&}6FGGNKO2%$]NCCL4&%lODDM 4 4 4 4    NS$(r)rFceZdZdZeddZdddd ZeddZed dZ ed!dZ d"dZ d#fd Z xZ S)$rzImplement migrations.rGrHr6ct|trt|St|trt |St|t rt |Std|z)zInitialize migrator by db.zUnsupported database: %s)rKrrrrrrre)clsrGs r'rQzSchemaMigrator.from_databasesy h 2 3 3 0%h// / h / / ,!(++ + h . . + ** *3h>???r)Trur*rrvrxCallable[[], Any]cfdS)z Drop table.c0S)Nrurz)rvr*sr'roz+SchemaMigrator.drop_table..su'''88r)rDr{s ``r'rzzSchemaMigrator.drop_tables888888r)rfr5r ct|g|RS)rh)r )r#rfrjs r'rfzSchemaMigrator.sqls3     r)tablerrr~List[Union[Context, Operation]]c||||}|js)|||||S)zChange column.)alter_change_columnrrir)r#rrr operationss r'rzSchemaMigrator.change_columnsW 7;6N6N ;7 7 z E   d//{CC D D Dr)columnc|j}t|r |}||||}|d}|||S)Nz SET DEFAULT )rcallable _alter_column make_contextliteralrfdb_value)r#rrrr alter_columnctxs r'rzSchemaMigrator.add_defaultsy- G   giiG#'#5#5d6G6G6I6I5RX#Y#Y &..??wwu~~g..///r)c|}|jdc}|_|||d||}||_|gS)Support change columns.T ALTER COLUMN rr _alter_tablerrfddlr#rrrr field_nulls r'rz"SchemaMigrator.alter_change_columnsp!!!&T EJU++334DEEII%))TW..YY u r)rc |j}tt|j|||fi|}t |t jr||_|S)zFix fieldname for ForeignKeys.)r4superralter_add_columnrKrLr)r#rrrrnr4rX __class__s r'rzSchemaMigrator.alter_add_columnsVz 9U>4 ( ( 9%e ^ ^W] ^ ^ eR/ 0 0 EJ r))rGrHr6r)r*rrvrxr6r)rfr5r6r )rr5rr5rr~r6r)rr5rr5rr~rr5rr5rr~r6r)rr5rr5rr~r6r)r-rArBr classmethodrQrzrrfrrrr __classcell__)rs@r'rrs @ @ @[ @@D999999!!!Y!   Y 000Y0r)rceZdZdZd d Zd S) rzSupport MySQL.rr5rrr~r6rc|}|jdc}|_|||d||}||_|gS)rTz MODIFY COLUMN rrs r'rz!MySQLMigrator.alter_change_columnsp!!!&T EJU++334EFFJJ599UX>>ZZ u r)Nrr-rArBrrrDr)r'rrs.r)rceZdZdZd d Zd S) rz%Support the migrations in postgresql.rr5rrr~r6rc|}|jdc}|_|jgc}|_||}|jdt jd||| d |}||c|_|_|g}|j *| | ||||S)rTrTYPEr)rr constraintsrnodesinsertrLr rrrfrrir) r#rrrrfnfcrress r'rz&PostgresqlMigrator.alter_change_columns!!TEJ % 12E iinn BF6NN+++U++334DEEII#NN(*B% E%e = $ JJt''vu== > > > r)NrrrDr)r'rrs.//r)rc(eZdZdZdddd ZddZdS)rz!Support the migrations in sqlite.Trur*pw.Modelrvrxr6rcfdS)z0Sqlite doesnt support cascade syntax by default.c0dS)NFrur)r*sr'roz+SqliteMigrator.drop_table..su'''66r)rDr{s ` r'rzzSqliteMigrator.drop_tables66666r)rr5rrr~List[Union[Operation, Context]]cBfd}|||gS)rc}|||dS)Nr)rrfrquery)c_namec_defrrr#s r'rz.SqliteMigrator.alter_change_column..fn sB##%%C GGEIIcNN # # #99;;q> !r))_update_column)r#rrrrs` ` r'rz"SqliteMigrator.alter_change_columns?  " " " " " " ##E626677r)N)r*rrvrxr6r)rr5rr5rr~r6r)r-rArBrrzrrDr)r'rrsO++=A777777 8 8 8 8 8 8r)rc eZdZdZdZdZdS)r\c"||_d|_dSr%)migratorops)r#rs r'r(zSyncContext.__init__s  r)cBt|jj|_|Sr%)listrrPrr&s r' __enter__zSyncContext.__enter__s -.. r)c(|j|j_dSr%)rrrP)r#exc_typeexc_valexc_tbs r'__exit__zSyncContext.__exit__s $ r)N)r-rArBr(rrrDr)r'r\r\sA)))))r)r\)+r __future__r contextlibrtypingrrrrr r r r peeweerLplayhouse.migrater rrrrrrrrMqMrPgMrScMrSqMpeewee_migrate.utilsrlogsrtypesrrrrFr\rDr)r'r&s""""""RRRRRRRRRRRRRRRRRRRR                    322222777777333333333333222222/................2\\\\\\\\~ AAAAASAAAH     NC   (88888^S888( ) ) ) ) ) ) ) ) ) )r)