Files
hms-licht-ton/backend/app/services/__pycache__/sync_service.cpython-313.pyc
T

79 lines
8.2 KiB
Plaintext
Raw Normal View History

ó
ÞNj+ãó¬•SrSSKrSSKJrJr SSKJr SSKJr SSKJ r SSK
J r SSK J
r
SS KJr SS
KJr \R$"\5r"S S 5rg)
zNEquipment sync service: import from Rentman, upsert into DB, invalidate cache.éN)ÚdatetimeÚtimezone)ÚAny)Úselect)Ú AsyncSession)ÚEquipmentCache)ÚSyncLog)ÚRentmanService)Úcachec ó¨•\rSrSrSrSS\S\S-SS4SjjrS\\ \
44Sjr S \\ \
4SS4S
jr S\\ \
44S jr
SS \S
\S\\ \
44SjjrSrg)Ú SyncServiceézCOrchestrates equipment import from Rentman into the local database.NÚdbÚrentmanÚreturncó@•XlU=(d
[5Ulg©N)rr
r)Úselfrrs ÚF/a0/usr/workdir/hms-licht-ton-t04/backend/app/services/sync_service.pyÚ__init__ÚSyncService.__init__s€ØŒØ×2¤.Ó"2ˆ� ócƒó\# •[SS[R"[R5S9nUR
R
U5 UR
R5IShv•N UR
RU5IShv•N URnSnSnSnURRSS9IShv•N nUH8n[R"U5nURU5IShv•N US-
nM: UR
R5IShv•N [$R&"S
5IShv•N S n
X¡lX1lXAlXQl[R"[R5UlUR
R5IShv•N UUUU
S.$GNFGN&NôNÁ![a'n [ R#S U 5 US-
nSn A GMSn A ff=fNÌN°![a-n [ R)S U 5 [+U 5nS
n
Sn A NÞSn A ff=fN‡7f)a'Execute a full equipment sync.
1. Create sync_log entry (status=running)
2. Paginate GET /equipment from Rentman
3. Upsert each item into equipment_cache
4. Invalidate Redis cache (equipment:*)
5. Update sync_log (status=completed or failed)
Returns dict with sync_id, items_processed, status.
Ú equipmentÚrunning)Ú sync_typeÚstatusÚ
started_atNréd)Úlimitéz#Failed to upsert equipment item: %sz equipment:*Ú completedzEquipment sync failed: %sÚfailed)Úsync_idÚitems_processedÚ items_failedr)r rÚnowrÚutcrÚaddÚcommitÚrefreshÚidrÚget_all_equipmentr
Útransform_equipmentÚ_upsert_equipmentÚ ExceptionÚloggerÚwarningr Údelete_patternÚerrorÚstrrr%r&Ú
error_messageÚ completed_at) rÚ log_entryr$r%r&r6Ú
all_equipmentÚraw_itemÚ transformedÚexcÚ
status_vals rÚrun_syncÚSyncService.run_syncsÞé€ôØ!ØÜ—|’|¤H§L¡LÓ1ñ
ˆ ð
�‰� ‰ �IÔØ�g‰g�n‰nÓ×ÐØ�g‰g�o‰o˜iÓ(×(Ð(Ø—,‘,ˆàˆØˆ Ø$(ˆ
ð "Ø"&§,¡,×"@Ñ"@ÀsÐ"@Ð"K×KˆMÛ)�ð&Ü"0×"DÒ"DÀXÓ"N�KØ×0Ñ0°Ó=×=Ð=Ø# qÑ(’Oñ *ð—'‘'—.‘.Ó"× "Ð "ô×&Ò& }Ó5× 5Ð 5à$ˆJð&ÔØ$3Ô!Ø!-ÔØ"/ÔÜ!)§¢¬h¯l©lÓ!;ˆ ÔØ�g‰g�n‰nÓ×ÐðØ.Ø(Ø ñ 
ð
òM Ú(ñLñ>øä ó&Ü—N‘NÐ#HÈ#ÔNØ  AÑ%—Lûð&úñ
#ñ
6øôó "Ü �L‰LÐ4°cÔ :Ü ›HˆMØ!�Jûð "úñ ùsÇ‚A&H,Á(F.Á)"H, F1 H,Â#G0Â?F4à G0Ã
*F8Ã4F6Ã5 F8Ã>!G0ÄG,Ä G0Ä=G.Ä>G0ÅAH,Æ"H*Æ# H,Æ1H,Æ4G0Æ6F8Æ8
G)ÇG$ÇG0Ç$G)Ç)G0Ç.G0Ç0
H'Ç:#H"ÈH,È"H'È'H,Údatacƒó# •URR[[5R [R
US:H55IShv•N nUR
5nU(a×USUlURSS5Ul URSS5Ul
URSS5Ul URSS5Ul URS 5Ul
URS
5UlURS 5UlURS S5UlURS
S5Ulg[USUSURSS5URSS5URSS5URSS5URS 5URS
5URS 5URS S5URS
S5S9 nURR%U5 gGNµ7f)z6Insert or update a single equipment row by rentman_id.Ú
rentman_idNÚnameÚnumberÚÚcategoryÚ subcategoryÚ descriptionÚspecificationsÚimagesÚ rental_priceÚbrandÚ availableT) rBrCrDrFrGrHrIrJrKrLrM)rÚexecuterrÚwhererBÚscalar_one_or_nonerCÚgetrDrFrGrHrIrJrKrLrMr))rr@ÚresultÚexistingÚnew_items rr/ÚSyncService._upsert_equipmentSs©é€à—w‘w—‘Ü ”>Ó "× (Ñ (¬×)BÑ)BÀdÈ<ÑFXÑ)XÓ Yó
÷
ˆð×,Ñ,Ó.ˆæ Ø  ™LˆHŒMØ"Ÿh™h x°Ó4ˆHŒOØ $§¡¨°RÓ 8ˆHÔ Ø#'§8¡8¨M¸2Ó#>ˆHÔ Ø#'§8¡8¨M¸2Ó#>ˆHÔ Ø&*§h¡hÐ/?Ó&@ˆHÔ #Ø"Ÿh™h xÓ0ˆHŒOØ$(§H¡H¨^Ó$<ˆHÔ !Ø!ŸX™X g¨rÓ2ˆHŒNØ!%§¡¨+°tÓ!<ˆHÕ ä%Ø  Ñ-ؘ&‘\Ø—x‘x ¨"Ó-ØŸ™ *¨bÓ1Ø ŸH™H ]°BÓ7Ø ŸH™H ]°BÓ7Ø#Ÿx™xÐ(8Ó9Ø—x‘x Ó)Ø!ŸX™X nÓ5Ø—h‘h˜w¨Ó+ØŸ(™( ;°Ó5ñ ˆHð
�G‰G�K‰K˜Õ !ò=
ùs‚AH ÁHÁF5H cƒód# •URR[[5R [R
R
55RS55IShv•N nUR5nU(dSSSS.$UR
URURS.$NE7f)z.Return the most recent sync_log entry summary.r!NrÚnever)Ú last_syncr%r) rrNrr Úorder_byrÚdescr rPr%r)rrRÚlogs rÚ
get_last_syncÚSyncService.get_last_syncusŽé€à—w‘w—‘Ü ”7‹O× $Ñ $¤W×%7Ñ%7×%<Ñ%<Ó%>Ó ?× EÑ EÀaÓ Hó
÷
ˆð×'Ñ'Ó)ˆÞØ!%¸!ÀwÑOÐ OàŸ™Ø"×2Ñ2Ø—j‘jñ
ð
ñ

ùs‚A&B0Á(B.Á)AB0ÚpageÚ page_sizecƒó2# •US-
U-nURR[[5R [R
R