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
R5IShvN UR
RU5IShvN URnSnSnSnURRSS9IShvN nUH8n[R"U5nURU5IShvN US-
nM: UR
R5IShvN [$R&"S
5IShvN S n
X¡lX1lXAlXQl[R"[R5UlUR
R5IShvN UUUU
S.$GNFGN&NÁ![a'n [ R#S U 5 US-
nSn A GMSn A ff=fN°![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_syncéôØÜ—|’|¤H§L¡LÓ
ˆ ð
 Øg‰gn‰nÓ×ÐØg‰go‰o˜iÓ—,‘,ˆàˆØˆ Ø$(ˆ
ð "Ø"&§,¡,×"@Ñ"@ÀsÐ"@Ð"K×Kˆ)ð&Ü"0×"DÒ"DÀXÓ"N×Ó=×# (—''—."× ×& 5× $ˆØ$3Ô!Ø!-ÔØ"/ÔÜ!)§¢¬h¯l©lÓ!;ˆ ÔØg‰gn‰nÓ×ÐðØ ñ 
ð
òM ÚLñ>øä ó—NNÐ#HÈ#Ô  %—Lûð&úñ

6øôó L‰LÐ4°cÔ  Hˆ!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:H55IShvN 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_equipmentSéà—ww—Ü ”>Ó "× ×)BÑ)BÀdÈ<ÑFXÑ)XÓ 
÷
ˆð׿ Ø  ™LˆHŒMØ"Ÿh™h Ó4ˆHŒOØ $§¡¨°RÓ 8ˆ Ø#'§8¡8¨M¸2Ó#>ˆ Ø#'§8¡8¨M¸2Ó#>ˆ Ø&*§h¡hÐ/?Ó&@ˆ "Ÿh™h 0ˆHŒOØ$(§H¡H¨^Ó$<ˆ !ŸX™X g¨rÓ2ˆHŒNØ!%§¡¨+°tÓ!<ˆHÕ ä  Ñ˜&—xx ¨"ÓŸ *¨bÓ ŸH™H ]°BÓ ŸH™H ]°BÓ#Ÿx™xÐ(8Ó—xÓ!ŸX™X nÓ—h‘h˜w¨ÓŸ(™( ;°Ó ˆHð
G‰GK‰K˜Õ !ò=
ùsAH ÁHÁF5H cƒód# URR[[5R [R
R
55RS55IShvN 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_syncuéà—w‘w—Ü ”7‹O× $¤W×%7Ñ%7×%<Ñ%<Ó%>Ó ?× EÀaÓ 
÷
ˆð×)ˆÞØ!%¸!ÀwÑ ŸØ—j
ð
ñ

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