e dZddlZddlmZddlmZmZmZmZddl Z ddl m Z m Z m Z m Z mZmZddlmZmZeGddZd eefd Zd Zd eeeeffd ZdS) zF Represents storage where ssa data is collected, stored and extracted N) dataclass)ListIteratorTupleDict)funccastcaseliteral_columndistincttext) session_scope RequestResultcDeZdZUeed<eeed<eed<eed<dS) DomainData domain_namedomain_total_reqsis_a_wordpress_domain urls_numberN)__name__ __module__ __qualname__str__annotations__rintboolJ/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/modules/storage.pyrrsFCy   rrreturnc #zKt|5}|tjt jdtjt jtjt j tj t j ttj tjt jdtjtjt jdtj}t!j|d}|D]^\}}t%|}d}dgdz}|D]*\} } } } } | |t'| <t|| }+t)||| |V_ ddddS#1swxYwYdS)z7 Iterates data from database domain-by-domain. %Hc|dSNrritems rz#iter_domains_data../s VZ[\V]r)keyr)rrrrN)rqueryrdomainrstrftime created_atCountidmax wordpresscountr pathgroup_byorder_by itertoolsgroupbytuplerr)enginedbresults_by_hourresults_by_hour_groupedrgroupdomain_results_by_hourrrequests_number_by_hour_hour requests_num is_wordpressurlss riter_domains_datarEs v  !"((  M$ 8 9 9 J}' ( ( H], - - Jx 233 4 4   (  M$ 8 9 9   (  M$ 8 9 9   #,"3OI]I]"^"^"^"9   K%*5\\ "K()cBh #=S 5 594|T5A'D 2!+t44 '"9&2'      #!!!!!!!!!!!!!!!!!!sFF00F47F4c #zKt|5}|tjt jdtjt jttj tj  dt j tj dt jttjtj  dtj|kt%tj|jddijtjt jdtjtjt jdtj}d}d gd zd gd zd gd z}}}|D]q\} } } } } |r/|| kr)|t3|||| fVd gd zd gd zd gd z}}}| |t5| <| |t5| <| |t5| <| }r| t3| ||| fVddddS#1swxYwYdS) z6 Iterates urls data from database url-by-url. r"url_throttled_reqsurl_total_reqs url_slow_reqs literal_bindsT)compile_kwargsNrr))r3rGrHrI)rr*rr3rr,r-Sumr hitting_limits sqlalchemyIntegerlabelr.r/is_slow_requestfilterr+r in_ expressioncompilestringr4r5dictr)r9r all_pathsr: urls_data previous_pathrGrHrIr3rAurl_throttled_req url_total_req url_slow_reqs riter_urls_datar^Cs v  1 "HH   M$ 8 9 9 HT,j.@  u)** J   e$%% HT-z/ACC  eO$$    &  K /  & #'' 22=EEVegkUlEmmt u u  (   dM4L M M  (   dM4L M M  % , C"HqcBhb-:NKT ! ! FD$)=, 1$!6!6#T&'9#1"/ &&&C"HqcBhb5BN"-> s4yy )(5N3t99 %'3M#d)) $ MMD1)'        Y1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 sJJ00J47J4c#Kt|5}|tjtjtj|ktj}tj t|d}|D]\}}|d|DfV ddddS#1swxYwYdS)zA Get information about durations of requests url-by-url. c|dSr$rr%s rr'z#get_url_durations..s $q'rcg|]\}}|Srr).0r@durations r z%get_url_durations..s:::[Q:::rN) rr*rr3rcrRr+r5r6r7list)r9rr:rYdurations_by_pathr(r=s rget_url_durationsrg{s) v   ;"HH    "   &  K /  (    &- OO1133+ ; ;JC::E:::: : : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sB$CC C)__doc__r6 dataclassesrtypingrrrrrNrr r r r r ssa.dbrrrrEr^rrrgrrrrls>!!!!!!............GGGGGGGGGGGGGGGG////////  %*!5%%%%N5 5 5 p;d3c ?.C;;;;;;r