+
    ñçÀj   ã            	       óˆ  € ^ RI HtHtHt ^ RIHt ^ RIHt ^ RIt]P                  P                  ]P                  P                  ]P                  P                  ]P                  P                  ]4      4      4      4      tR]P                  P                  ]R4       2t]! ]RR7      t]! ]]R	R
7      t]! 4       tR tR tR# )é    )Úcreate_async_engineÚAsyncSessionÚasync_sessionmaker)Údeclarative_base)ÚtextNzsqlite+aiosqlite:///z
billing.dbT)ÚechoF)Úclass_Úexpire_on_commitc                 ó°   "  € \        4       ;_uu_4       GR j  x€L
 p V 5x € R R R 4      GR j  x€L
  R #  L L  + GR j  x€L 
 '       g   i     R # ; i5i)N)ÚAsyncSessionLocal)Úsessions    Ú*/var/www/html/bestweb/app/core/database.pyÚget_dbr      s,   é € Ü ×"×"Ô" gØ‹÷ #×"×"×"×"×"üsA   ‚A™5šA�9£A®7¯A·A¹A	¿AÁ 
A	ÁA	Á	Ac               ƒ   ó
  "  € ^ RI Hp  \        P                  4       ;_uu_4       GRj  x€L
 pVP	                  V P
                  P                  4      G Rj  x€L
  / RRbRRbRRbRR	bR
RbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRb/ R R!bR"R#bR$RbR%R&bR'R(bR)RbR*RbR+RbR,RbR-RbR.R/bR0RbR1RbR2R3bR4R3bR5R3bR6R3bCR7RR8RR9R:R;RR<RR=RR>RR?RR@RARBRC/
CpVP                  \        RD4      4      G Rj  x€L
 P                  4        Uu0 uF  q3^,          kK  	  ppVP                  4        F5  w  rVWT9  g   K  VP                  \        REV RFV 24      4      G Rj  x€L
  K7  	  VP                  \        RG4      4      G Rj  x€L
 P                  4       pV F0  w  pVP                  \        RH4      RIRJVRK 2RLV/4      G Rj  x€L
  K2  	  VP                  \        RM4      4      G Rj  x€L
  VP                  \        RN4      4      G Rj  x€L
  VP                  \        RO4      4      G Rj  x€L
  VP                  \        RP4      4      G Rj  x€L
  VP                  \        RQ4      4      G Rj  x€L
  RRRRSR/p	VP                  \        RT4      4      G Rj  x€L
 P                  4        Uu0 uF  q3^,          kK  	  p
pV	P                  4        F5  w  rVWZ9  g   K  VP                  \        RUV RFV 24      4      G Rj  x€L
  K7  	  VP                  \        RV4      4      G Rj  x€L
 P                  4        Uu0 uF  q3^,          kK  	  ppRWRXRYRRZRR[R/pVP                  4        F5  w  rVW[9  g   K  VP                  \        R\V RFV 24      4      G Rj  x€L
  K7  	  R]R^RR_RR`RRaR	RRRR/RbRRRR/RcRdRReRfRgR/RhRiRRjRRkRlRmRReRfRgR/RnR_R/RoRpRRqRR^RR_RRrR	RsR//pVP                  4        F›  w  rïVP                  \        RtV Ru24      4      G Rj  x€L
 P                  4        Uu0 uF  q3^,          kK  	  ppVP                  4        F9  w  rVVV9  g   K  VP                  \        RvV RwV RFV 24      4      G Rj  x€L
  K;  	  K�  	  RRR4      GRj  x€L
  R#  EL{ ELQ EL²u upi  ELR EL/ ELò ELÏ EL° EL‘ ELr ELS EL.u upi  ELÎ EL«u upi  ELA LÆu upi  La LK  + GRj  x€L 
 '       g   i     R# ; i5i)xr   )ÚBaseNÚprovisioning_statuszVARCHAR DEFAULT 'not_started'Úmikrotik_provisioning_statuszVARCHAR DEFAULT 'pending'Úolt_provisioning_statusÚprovisioning_messageÚTEXTÚprovisioned_atÚDATETIMEÚis_archivedzBOOLEAN DEFAULT 0Ú	play_typezVARCHAR DEFAULT '1play'Újatuh_tempoÚservice_profileÚVARCHARÚprovisioning_modezVARCHAR DEFAULT 'private_pppoe'Úpppoe_usernameÚpppoe_passwordÚonu_idÚINTEGERÚwan_vlanzINTEGER DEFAULT 175Úservice_vlanÚ
pppoe_vlanzINTEGER DEFAULT 100Úhotspot_vlanzINTEGER DEFAULT 150Ú	iptv_vlanzINTEGER DEFAULT 200Úolt_vlan_profilezVARCHAR DEFAULT 'bnbv1009'Úodp_idÚ
olt_vendorzVARCHAR DEFAULT 'ZTE'Ú	olt_modelzVARCHAR DEFAULT 'C320'Úservice_package_idÚservice_profile_idÚservice_modeÚmanagement_pppoe_vlanÚodp_portÚont_management_modezVARCHAR DEFAULT 'none'Úmanagement_pppoe_usernameÚmanagement_pppoe_passwordÚont_sn_modezVARCHAR DEFAULT 'manual'Úonu_id_modeÚolt_port_modeÚont_brand_modeÚont_rx_powerÚont_tx_powerÚhardware_discovery_statuszVARCHAR DEFAULT 'unavailable'Úodp_latitudeÚodp_longitudeÚcustomer_codeÚnikÚpppoe_secret_revealed_atÚpppoe_secret_versionzINTEGER DEFAULT 1Úservice_modes_jsonzTEXT DEFAULT '["pppoe"]'zPRAGMA table_info(customers)z!ALTER TABLE customers ADD COLUMN Ú zJSELECT id FROM customers WHERE customer_code IS NULL OR customer_code = ''z9UPDATE customers SET customer_code = :code WHERE id = :idÚcodezPLG-Ú07dÚidzXCREATE UNIQUE INDEX IF NOT EXISTS ix_customers_customer_code ON customers(customer_code)zaCREATE UNIQUE INDEX IF NOT EXISTS ix_customers_nik_unique ON customers(nik) WHERE nik IS NOT NULLz›CREATE UNIQUE INDEX IF NOT EXISTS ix_customers_pppoe_username_unique ON customers(pppoe_username) WHERE pppoe_username IS NOT NULL AND pppoe_username <> ''z{CREATE UNIQUE INDEX IF NOT EXISTS ix_customers_ont_sn_unique ON customers(ont_sn) WHERE ont_sn IS NOT NULL AND ont_sn <> ''a  
            UPDATE customers
            SET status = 'active',
                provisioning_message = 'Internet aktif; status dipulihkan oleh rekonsiliasi billing.'
            WHERE status = 'suspended'
              AND provisioning_status = 'provisioned'
              AND NOT EXISTS (
                  SELECT 1 FROM invoices
                  WHERE invoices.customer_id = customers.id
                    AND invoices.status <> 'paid'
                    AND invoices.due_date <= CURRENT_TIMESTAMP
              )
        Úused_atÚ
expires_atzPRAGMA table_info(vouchers)z ALTER TABLE vouchers ADD COLUMN z!PRAGMA table_info(voucher_agents)Úcommission_ratezINTEGER DEFAULT 0Únama_ispÚ
domain_ispÚprefixz&ALTER TABLE voucher_agents ADD COLUMN Ú	customersÚolt_device_idÚmikrotik_device_idÚolt_adapter_keyÚolt_fields_jsonÚservice_packagesÚmikrotik_devicesÚareaÚstatuszVARCHAR DEFAULT 'registered'Úcredential_idÚolt_devicesÚlocationÚpop_nameÚmanagement_protocolzVARCHAR DEFAULT 'ssh'Úapi_portÚodpsÚprovisioning_jobsÚvendorÚadapter_keyÚpayload_summaryÚexecuted_atzPRAGMA table_info(Ú)zALTER TABLE z ADD COLUMN )Úapp.models.modelsr   ÚengineÚbeginÚrun_syncÚmetadataÚ
create_allÚexecuter   ÚfetchallÚitems)r   ÚconnÚcolumnsÚrowÚexistingÚnameÚ
definitionÚrowsÚcustomer_idÚvoucher_columnsÚexisting_voucherÚexisting_agentsÚagent_columnsÚtable_columnsÚtableÚ	additionsÚexisting_table_columnss                    r   Úinit_dbr{      sÜ  é € Ý&Ü�|‰|�~�~Œ~ Ø�m‰m˜DŸM™M×4Ñ4Ó5×5Ð5ð/
Ø!Ð#Bð/
à*Ð,Gð/
ð &Ð'Bð/
ð # Fð	/
ð
 ˜jð/
ð Ð.ð/
ð Ð2ð/
ð ˜:ð/
ð ˜yð/
ð  Ð!Bð/
ð ˜ið/
ð ˜ið/
ð �ið/
ð Ð-ð/
ð Ð1ð/
ð  Ð/ð!/
ð" Ð1ñ#/
ð$ Ð.ð%/
ð& Ð <ð'/
ð, �ið-/
ð. Ð1ð//
ð0 Ð1ð1/
ð2 ! )ð3/
ð4 ! )ð5/
ð6 Ð=ð7/
ð8 $ Yð9/
ð: ˜	ð;/
ð< "Ð#;ð=/
ð> (¨ð?/
ð@ (¨ðA/
ðB Ð5ðC/
ðD Ð5ðE/
ðF Ð7ðG/
ðH Ð8ñI/
ðJ ˜IØ˜IØ'Ð)HØ˜IØ˜YØ˜YØ�9Ø&¨
Ø"Ð$7Ø Ð">ñ]/
ˆð` .2¯\©\¼$Ð?]Ó:^Ó-_×'_×&iÑ&iÔ&kÓlÑ&k˜s˜—F�FÑ&kˆÐlØ '§¡¦ÑˆDØÖ#Ø—l‘l¤4Ð*KÈDÈ6ÐQRÐS]ÐR^Ð(_Ó#`Óa×aÒañ !0ð —l‘l¤4Ð(tÓ#uÓv×v÷  Añ  Aó  CˆÛ"‰Nˆ[Ø—,‘,œtÐ$_Ó`ÐciÐmqÐr}ð  Bð  rCð  lDð  FJð  LWð  cXó  Y÷  Yò  Yñ #à�l‰lœ4Ð zÓ{Ó|×|Ð|Ø�l‰lœ4ð  !Dó  Eó  F÷  	Fð  	FØ�l‰lœ4ð  !~ó  ó  @÷  	@ð  	@Ø�l‰lœ4ð  !^ó  _ó  `÷  	`ð  	`ð �l‰lœ4ð !ó ó ÷ 	ð 	ð �zØ˜*ð
ˆð 6:·\±\Ä$ÐGdÓBeÓ5f×/f×.pÑ.pÔ.rÓsÑ.r s ŸF˜FÑ.rÐÐsØ /× 5Ñ 5Ö 7ÑˆDØÖ+Ø—l‘l¤4Ð*JÈ4È&ÐPQÐR\ÐQ]Ð(^Ó#_Ó`×`Ò`ñ !8ð 59·L±LÄÐFiÓAjÓ4k×.k×-uÑ-uÔ-wÓxÑ-w c˜qŸ6˜6Ñ-wˆÐxàÐ2Ø˜	Ø˜)Ø�ið	
ˆð !.× 3Ñ 3Ö 5ÑˆDØÖ*Ø—l‘l¤4Ð*PÐQUÐPVÐVWÐXbÐWcÐ(dÓ#eÓf×fÒfñ !6ð Ø Ð,@À)Ø! 9Ð.?ÀØÐ3°^ÐEZðð
 ØÐ3°^ÐEZð!ð Ø˜	 8Ð-KÈ_Ð^gð!ð Ø˜I z°9Ð>SÐUlØ˜I xÐ1OÐQ`Ðbkðð Ð)¨9Ð5ØØ˜) ]°I¸ÐPYØ$ iÐ1BÀFÈMÐ[eð"ð#
ˆð, !.× 3Ñ 3Ö 5ÑˆEØ?C¿|¹|ÌDÐSeÐfkÐelÐlmÐQnÓLoÓ?p×9p×8zÑ8zÔ8|Ó%}Ñ8|°¨!§f fÑ8|Ð"Ð%}Ø$-§O¡OÖ$5Ñ �ØÐ5Ö5ØŸ,™,¤t¨l¸5¸'ÀÈdÈVÐSTÐU_ÐT`Ð,aÓ'bÓc×cÒcó %6ñ !6÷s �~Œ~Ú5òd (`ùÒlò bâvò YÚ|ò 	Fò 	@ò 	`ò	ò" 0gùÒsò aÚ.kùÒxò gñ4 :qùÒ%}ñ d÷{ �~�~‹~üs´  ‚'T©R$ªT­)S+ÁR'ÁB!S+Ã8R*Ã9S+ÄR-ÄS+Ä=#S+Å R2
Å!%S+ÆR5Æ?S+ÇR8
Ç%S+Ç,R;Ç-!S+ÈR>È!S+È0SÈ1!S+ÉSÉ!S+É4SÉ5'S+ÊS
ÊS+Ê1SËS+Ë!#S+ÌS
Ì%S+Ì*SÌ+S+Ì?SÍ$S+Í9#S+ÎS
ÎA<S+ÐS 
ÐS+Ð.S"
Ð?S+Ñ&S+ÒS'ÒS+ÒTÒS)ÒTÒ'S+Ò*S+Ò-S+Ò5S+Ò8S+Ò;S+Ò>S+ÓS+ÓS+ÓS+Ó
S+ÓS+ÓS+ÓS+Ó S+Ó"S+Ó)TÓ+T	Ó1S4Ó2
T	Ó=T	Ó?	T)Úsqlalchemy.ext.asyncior   r   r   Úsqlalchemy.ormr   Ú
sqlalchemyr   ÚosÚpathÚdirnameÚabspathÚ__file__ÚBASE_DIRÚjoinÚDATABASE_URLrc   r   r   r   r{   © ó    r   Ú<module>r‰      s™   ðß XÑ XÝ +Ý Û 	à�7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨2¯7©7¯?©?¸2¿7¹7¿?¹?È8Ó;TÓ+UÓVÓW€Ø% b§g¡g§l¡l°8¸\Ó&JÐ%KÐL€á	˜\°Ô	5€Ù& v°lÐUZÔ[Ð ÙÓ€òôdrˆ   