e^ ddlZddlZddlZddlmZmZddlmZmZmZm Z m Z m Z m Z m Z ddlmZddlmZddlmZdZdZeZGd d eZd Zd Zd ZdZdZddZejdefdZdS)N)datetime timedelta)ColumnBooleanDateTimeIntegerString create_engineeventfunc)declarative_base) Inspector)Sessionz/var/lve/ssa.dbceZdZdZdZeedZeeddZ eeddZ eedZ eedZ ee dZee dZeedZeedZee dZeedej Zeedejej Zd S) RequestResultay Describes processed request stored in database file. E.g. { "timestamp": "1650008727", "url": "http://mydomain.com/index.php", "duration": 162077, "hitting_limits": false, "throttled_time": 0, "io_throttled_time": 0, "wordpress": true } Note: created_at, updated_at is saved in local TZ format scrape_resultT) primary_keyF)indexnullable)r)timezone)server_default)onupdaterN)__name__ __module__ __qualname____doc__ __tablename__rridr domainpath timestampdurationris_slow_requesthitting_limitsthrottled_timeio_throttled_time wordpressrr now created_at updated_at=/opt/cloudlinux/venv/lib64/python3.11/site-packages/ssa/db.pyrr"sM $M T * * *B VF$ 7 7 7F 6&u 5 5 5Dw///Ivg...HfWu555OVGe444NVGe444Nw777w///I$/// KKKJ$///($(**U]UYU]U_U_```JJJr-rcBtjttz }t |5}|t t j|k ddddS#1swxYwYdS)zD Removes outdated records from database, saving disk space. )daysN) rtodayrRETENTION_TIME_DAYS session_scopequeryrfilterr*delete)engine n_days_agosessions r.cleanup_old_datar:Gs!!I3F$G$G$GGJ v  ' m$$ VM,z9 : : VXXXsABBBcft|s!tj|dSdSN) is_db_presentBasemetadata create_all)r7s r.create_db_if_not_existrARs8  )   ((((())r-ctjtsdSt j|}d|D}t|dkS)NFcg|]}|Sr,r,).0tables r. z!is_db_present..[s G G Ge G G Gr-r)osr!isfileSSA_DBr from_engineget_table_nameslen)r7database_inspectiontabless r.r=r=Ws^ 7>>& ! !u#/77 G G!4!D!D!F!F G G GF v;;?r-c0|ddS)NzPRAGMA journal_mode = WAL)execute) dbapi_con con_records r.setup_wal_moderS_s 122222r-cdt|rdfd}td|d}tj|dtt ||S)Nzfile:z?mode=roc0tjdS)NT)uri)sqlite3connect)connection_stringsr.z!_setup_database..gsgo&7TBBBr-z sqlite:////F)creatorechorX)rIr r listenrSrA)readonlyr[r7rYs @r._setup_databaser_csz(((;0:::BBBBG wUF LN3336""" Mr-Fc t|Sr<)r_)r^s r.setup_databaseraps 8 $ $$r-returnc#Kt|} |V|n#|xYw |dS#|wxYw)zF Provide a transactional scope around a series of operations. )bindN)rcommitrollbackclose)r7r9s r.r3r3ts 6"""G      s-AAAA4)F) rG contextlibrWrr sqlalchemyrrrrr r r r sqlalchemy.ext.declarativer sqlalchemy.engine.reflectionrsqlalchemy.ormrrIr2r>rr:rAr=rSr_racontextmanagerr3r,r-r.rns ((((((((877777222222"""""" "a"a"a"a"aD"a"a"aJ))) 333   %%%%  W      r-