
    ^j                    R   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	  ee
      j                         j                  Zej                  Z e ej                  dedz              Z e ej                  dedz              Z e ej                  d	ed
z              Z e ej                  dedz              Z e ej                  dedz              Z e ej                  dedz              Z e ej                  dedz              ZddZddZdddZdddZdddZy)    )annotationsN)Path)AnyIterableORIGUS_SHARED_DIRsharedORIGUS_CORE_ROOTcoreORIGUS_CORE_DBzcore.dbORIGUS_CORE_SOURCESsourcesORIGUS_CORE_SECRETSsecretsORIGUS_CORE_TOKEN_FILEz.internal_tokenORIGUS_CORE_KEY_FILEz.secret_keyc                 V    t         t        t        fD ]  } | j                  dd        y )NT)parentsexist_ok)	CORE_ROOTSOURCE_ROOTSECRETS_ROOTmkdir)ps    ;/var/www/origus_pro_usr/data/www/origus.pro/core/core_db.pyensure_dirsr      s(    l3 -	t,-    c                     t                t        j                  t        d      } t        j                  | _        | j                  d       | j                  d       | j                  d       | S )N   )timeoutzPRAGMA foreign_keys=ONzPRAGMA journal_mode=WALzPRAGMA busy_timeout=5000)r   sqlite3connectDB_PATHRowrow_factoryexecute)cons    r   r!   r!      sN    M
//'2
.CkkCOKK()KK)*KK*+Jr   c                X    | s|S 	 t        j                  |       S # t        $ r |cY S w xY wN)jsonloads	Exception)valuedefaults     r   	json_loadr.       s2    zz%   s    ))c                    t               5 }|j                  | t        |            j                         D cg c]  }t	        |       c}cd d d        S c c}w # 1 sw Y   y xY wr(   )r!   r%   tuplefetchalldict)sqlparamsr&   rs       r   r1   r1   (   sU    	 Mc!$S%-!@!I!I!KLAQLM MLM Ms   ,AA	AAA#c                    t               5 }|j                  | t        |            j                         }|rt	        |      nd cd d d        S # 1 sw Y   y xY wr(   )r!   r%   r0   fetchoner2   )r3   r4   r&   rows       r   r7   r7   ,   sF    	 *ckk#uV}-668tCyT* * *s   8AA)returnNone)r9   zsqlite3.Connectionr(   )r,   z
str | Noner-   r   r9   r   ) )r3   strr4   Iterable[Any]r9   zlist[dict[str, Any]])r3   r<   r4   r=   r9   zdict[str, Any] | None)
__future__r   r)   osr    pathlibr   typingr   r   __file__resolveparentBASE_DIRPROJECT_ROOTgetenv
SHARED_DIRr   r"   r   r   INTERNAL_TOKEN_FILEMASTER_KEY_FILEr   r!   r.   r1   r7   r;   r   r   <module>rK      s   "  	    >!!#**)"))/1HIJ
-zF/BCD	
yryy)9y+@A
B92992I	4IJKIBII3Y5JKL9299%=yK\?\]^ yryy!7]9RST-M*r   