U
    h	                     @   s   d dl Z d dlZdd ZdZeeg Zed i ZeD ].Zed ekrRg eed < eed  e q6e	 D ]<\Z
Zede
  eD ] Zeded	  d
ed   qqndS )    Nc                 C   s2  g }dddddg}t | D ]\}}}dd |D |dd< |D ]}|d	rBt j||}zt|d
dd}	|	 }
W 5 Q R X |D ]z}t||
tj	tj
B }|D ]Z}|
d|  dd }|
d}||d   }||| t j d|||d qqW qB tk
r( } zW 5 d}~X Y qBX qBq|S )z6Search for SQL queries or ORM patterns in Python filesz\.filter.*active.*==.*[Tt]ruez\.outerjoin.*activity_countzcoalesce.*activity_countzdevelopers.*LEFT OUTER JOINzsubquery\(\)c                 S   s   g | ]}|d kr|qS ))venv__pycache__z.git ).0dr   r   ./find_query_source.py
<listcomp>   s      z&search_for_queries.<locals>.<listcomp>Nz.pyrzutf-8)encoding
    )filelinepatterncontent)oswalkendswithpathjoinopenreadrefinditer
IGNORECASE	MULTILINEstartcountsplitstripappendreplacesep	Exception)Z	directorypatternsresultsZsearch_patternsrootdirsfilesr   Z	file_pathfr   r   matchesmatchZline_numlinesZline_contenter   r   r   search_for_queries   s<    

r/   z"E:\timesheet\timesheet_new\backendz1=== Files with potential problematic queries ===
r   z
File: z  Line r   z: r   )r   r   r/   Zbackend_dirr&   printZfiles_foundresultr!   itemsr   r+   r,   r   r   r   r   <module>   s   -
