
    hh                        d Z ddlZddlZddlZddlZ eej                  j                  d            Z	ej                  j                  e	       ddlmZmZmZ d Zd ZdefdZded	efd
Zdedee   fdZdededefdZy)z&
module for db manipulation functions
    NROOT_DIR_GESTAO_MIDIA)enginealchemy_exectextc                    d}	 t        j                         5 }|j                  t        |      d| i      j	                         cddd       S # 1 sw Y   yxY w# t
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt        $ r}t        d|       |d}~ww xY w)=
    iterate through all blogs related to media database
    zJ
        SELECT blog_id, path FROM wp_blogs WHERE blog_id = :blog_id;
    blog_idN   Erro de conexão: Erro no banco de dados: Erro SQLAlchemy: Erro inesperado: r   beginexecuter   fetchallr   InterfaceErrorRuntimeErrorDatabaseErrorSQLAlchemyError	Exception)r	   sqlconnerrs       D/var/www/html/p-interativo-gestao-midia/app/utils/db/db_functions.pyget_wp_blogr      s    
C?\\^t<<S	Iw+?@IIK ^^ && @/u56C?%% F5cU;<#E'' ?.se453> ?.se453>?sX   A +A	A AA A C%,A;;C%B  C%6CC%C  C%c                     d} 	 t        j                         5 }|j                  t        |             j	                         cddd       S # 1 sw Y   yxY w# t
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt        $ r}t        d|       |d}~ww xY w)r   zT
        SELECT blog_id, path FROM wp_blogs WHERE blog_id > 1 ORDER BY blog_id;
    Nr
   r   r   r   r   )r   r   r   s      r   get_all_wp_blogsr   -   s    
C?\\^t<<S	*335 ^^ && @/u56C?%% F5cU;<#E'' ?.se453> ?.se453>?sX   A (A
 	A 
AA A C")A88C"BC"3CC"CC"r	   c                 \   t         j                   j                         j                         t        j                  d      z
  }d|  d|  d}	 d|i}t	        j
                         5 }t        j                  t        |      ||      }|cddd       S # 1 sw Y   yxY w# t        j                  $ r}t        d	|       |d}~wt        j                  $ r}t        d
|       |d}~wt        j                  $ r}t        d|       |d}~wt        $ r}t        d|       |d}~ww xY w)z
    get all messages with attachment error from last 2 days
    Args:
        blog_id: int = current blog id
    Returns:
        messages_list: list(string) = a list of messages received from one hour ago until now
    g      ?daysK
        SELECT pm.post_id, pm.midia, pm.galeria_de_midias
        FROM wp_1  _posts p
        LEFT JOIN (
            SELECT
                meta.post_id,
                MAX(CASE WHEN meta.meta_key = 'midia' THEN meta.meta_value END) AS midia,
                MAX(CASE WHEN meta.meta_key = 'galeria_de_midias' THEN meta.meta_value END) AS galeria_de_midias
                from wp_a  _postmeta meta
                WHERE meta.meta_key IN ('midia', 'galeria_de_midias')
                GROUP BY meta.post_id
                ORDER BY meta.post_id
        ) pm
        ON p.ID = pm.post_id
        WHERE
            p.post_date >= :date
            AND p.post_type = "mensagem"
            AND pm.midia <> ""
            AND (galeria_de_midias LIKE '%midia%' OR galeria_de_midias IS NULL OR galeria_de_midias = '')
    dater   conparamsNr
   r   r   r   )datetimenowr#   	timedeltar   r   pdread_sqlr   r   r   r   r   r   r   )r	   r#   r   r&   r   df_mensagensr   s          r   get_no_galery_messagesr-   G   s#      "'')H,>,>C,HHD	  !	 "C*?$\\^t;;49$vNL ^^ && @/u56C?%% F5cU;<#E'' ?.se453> ?.se453>?sZ   B &#B		B BB B D+2CD+C&&D+<DD+D&&D+msg_idc                    d|  d|  d}	 d|i}t        j                         5 }t        j                  t	        |      ||      }|cddd       S # 1 sw Y   yxY w# t
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d	|       |d}~wt        $ r}t        d
|       |d}~ww xY w)z
    get specific message with attachment error
    Args:
        blog_id: int = current blog id
    Returns:
        messages_list: list(string) = a list of messages received from one hour ago until now
    r!   r"   a  _postmeta meta
                WHERE meta.meta_key IN ('midia', 'galeria_de_midias')
                GROUP BY meta.post_id
                ORDER BY meta.post_id
        ) pm
        ON p.ID = pm.post_id
        WHERE
            p.ID = :msg_id
            AND p.post_type = "mensagem"
            AND pm.midia <> ""
            AND (galeria_de_midias LIKE '%midia%' OR galeria_de_midias IS NULL OR galeria_de_midias = '')
    r.   r$   Nr
   r   r   r   )r   r   r*   r+   r   r   r   r   r   r   r   )r	   r.   r   r&   r   r,   r   s          r   get_no_galery_specific_messager0   w   s    	  !	 "C*?F#\\^t;;49$vNL ^^ && @/u56C?%% F5cU;<#E'' ?.se453> ?.se453>?sX   A #A	A AA A C(/A>>C(B##C(9CC(C##C(file_names_arrc                    |sg S t         j                   j                         j                         t        j                  d      z
  }dj	                  |      }d|  d| d| d}	 t        j                         5 }|j                  t        |            j                         }|D cg c]  }t        |d          c}cd	d	d	       S c c}w # 1 sw Y   y	xY w# t        j                  $ r}t        d
|       |d	}~wt        j                  $ r}t        d|       |d	}~wt        j                  $ r}t        d|       |d	}~wt         $ r}t        d|       |d	}~ww xY w)z
    gets ids from attachments based on file names
    Args:
        file_names_arr: list(string) = a list of file names
    Results:
        attachment_ids: list(int) = a list of ids
    g       @r   z', 'z:
        SELECT id, post_title, post_name
        FROM wp_z%_posts
        WHERE post_title IN ('z}')
        AND post_name REGEXP '^[a-f0-9]{32}-[a-z0-9]{3,4}$'
        AND post_type = 'attachment'
        AND post_date >= ;
    r   Nr
   r   r   r   )r'   r(   r#   r)   joinr   connectr   r   r   strr   r   r   r   r   r   )	r	   r1   	yesterdayplaceholdersr   r   resultrowr   s	            r   get_ids_from_filenamesr;      sa    	!!%%',,.1C1C1MMI;;~.L	 +n - $ %C?^^\\$s),557F+126CCAK62 2  && @/u56C?%% F5cU;<#E'' ?.se453> ?.se453>?sl   &C :-C'C<C>	C CCC C E%,C;;E%D  E%6EE%E  E%
message_idserialized_ids_arrayc                    d|  d| d| d}	 t        j                         5 }|j                  t        |             |j	                          ddd       y# 1 sw Y   yxY w# t
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt
        j                  $ r}t        d|       |d}~wt        $ r}t        d	|       |d}~ww xY w)
z
    Inserts ids into message attachment galery
    Args:
        blog_id: int
        message_id: int
        ids_serialized_array: str
    Results:
        attachment_ids: list(int) = a list of ids
    z
        UPDATE wp_z_postmeta SET meta_value = 'z5' WHERE meta_key = 'galeria_de_midias' AND post_id = r3   Nr
   r   r   r   )r   r5   r   r   commitr   r   r   r   r   r   )r	   r<   r=   r   r   r   s         r   galery_insert_attachment_idsr@      s   )78L7M  NC  DN  CO OC?^^LLc#KKM  && @/u56C?%% F5cU;<#E'' ?.se453> ?.se453>?sX   A" +AA" AA" A" "C.5BC.B))C.?CC.C))C.)__doc__ossysr'   pandasr*   r6   environget	ROOT_PATHpathappendapp.utils.db.db_connectionr   r   r   r   r   intr-   r0   listr;   r@        r   <module>rO      s    
 
  

678	 	  ?2?4.?C .?`-?C -? -?`%?C %?c %?P??!?9<?rN   