+
    |w¼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RWV9  d#   VP                  \        RX4      4      G Rj  x€L
  RYRZRR[RR\RR]R	RRRR/R^RRRR/R_R`RRaRbRcR/RdReRRfRRgRhRiRRaRbRcR/RjR[R/RkRlRRmRRZRR[RRnR	RoR//pVP                  4        Fš  w  rÞVP                  \        RpV Rq24      4      G Rj  x€L
 P                  4        Uu0 uF  q3^,          kK  	  ppVP                  4        F8  w  rVW_9  g   K  VP                  \        RrV RsV RFV 24      4      G Rj  x€L
  K:  	  Kœ  	  RRR4      GRj  x€L
  R#  ELP EL& EL‡u upi  EL' EL ELÇ EL¤ EL… ELf ELG EL( ELu upi  EL£ EL€u upi  EL< LÅu upi  La LK  + GRj  x€L 
 '       g   i     R# ; i5i)tr   )Ú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_ratezGALTER TABLE voucher_agents ADD COLUMN commission_rate INTEGER DEFAULT 0Ú	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Útable_columnsÚtableÚ	additionsÚexisting_table_columnss                   r   Úinit_dbrw      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Ø OÔ3Ø—,‘,œtÐ$mÓnÓo×oÐoð Ø Ð,@À)Ø! 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ØŸ,™,¤t¨l¸5¸'ÀÈdÈVÐSTÐU_ÐT`Ð,aÓ'bÓc×cÒcó %6ñ !6÷e �~Œ~Ú5òd (`ùÒlò bâvò YÚ|ò 	Fò 	@ò 	`ò	ò" 0gùÒsò aÚ.kùÒxâoñ4 :qùÒ%}ñ d÷m �~�~‹~üs®  ‚'S©Q9ªS­)S ÁQ<ÁB!S Ã8Q?Ã9S ÄRÄS Ä=#S Å R
Å!%S ÆR
Æ?S ÇR
Ç%S Ç,RÇ-!S ÈRÈ!S È0RÈ1!S ÉRÉ!S É4RÉ5'S ÊRÊS Ê1R"ËS Ë!#S ÌR'
Ì%S Ì*R*Ì+S Ì?R-Í&S Í6R2Í7A8S Ï/R5
Ï0S ÐR7
ÐS Ð4&S ÑR<ÑS Ñ'SÑ2R>Ñ3SÑ<S Ñ?S ÒS Ò
S ÒS ÒS ÒS ÒS ÒS ÒS ÒS Ò"S Ò*S Ò-S Ò5S Ò7S Ò>SÓ S	ÓS	Ó
S	ÓS	Ó	S)Úsqlalchemy.ext.asyncior   r   r   Úsqlalchemy.ormr   Ú
sqlalchemyr   ÚosÚpathÚdirnameÚabspathÚ__file__ÚBASE_DIRÚjoinÚDATABASE_URLr`   r   r   r   rw   © ó    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Ô[Ð ÙÓ€òôxdr„   