o
    hV                     @  s   d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZmZmZ d dlmZ e	 ZdZd*ddZd+ddZd,ddZd-ddZejdededdeddeddeddd fd.d'd(Zd)S )/    )annotations)AnyDictListSetTuple)	APIRouterRequestQuery)HTMLResponse)	templatessblogger)Counter
   txtstrreturnintc                 C  s,   | pd  }|drdS |drdS dS )N u	   위원장r   u   간사      )strip
startswith)r   t r   2/var/www/html/bot/app/web/pages/congress/search.py
_role_rank   s   r   nr   c                 C  sD   zt | }W n
 ty   Y dS w |dkrdS |dkrdS | dS )N-r   u   초선r   u   재선u   선)r   	Exception)r   vr   r   r   _label_election   s   
r"   r!   
str | Nonec                 C  s"   | pd  }|rd| S dS )Nr   z<br>)r   joinsplit)r!   sr   r   r   _district_br   s   r'   col	List[str]c              
     s   zt d| d jpg }W n ty2 } ztd|  d|  g }W Y d }~nd }~ww t	 }|D ]}|
| p@d }|rJ|| q8t|S )Ncongress_member_cur'  zdistinct fetch fallback for z: r   )r   tableselectlimitexecutedatar    r   warningsetgetr   addsorted)r(   rowsevalsrr!   r   r   r   _distinct_values   s   $
r:   z/congress/search)response_classall)defaultr   r   )r=   gerequestr	   	committeepartyqpagec                   s  |pd  tdI d H }tdI d H } fdd}d}g }	zBtdjdd	d
}
||
 }t|dd p>t|jp=g }|d t	 }|t	 d }tdd}||
||}| jpag }	W n` ty } zTtd| d z7tddd jpg } fddfdd|D }t|}|d t	 }|t	 }||| }	W n ty   g }	d}Y nw W Y d }~nd }~ww |	jdd d |	D ]}t|d|d< t|d|d< q|dk}|t	 |pdk }td|  |||	|||t	|dS )Nr   committee_namerA   c                   sN    dkr
|  d } dkr|  d} r%d d}| dj|d} | S )Nr<   rD   rA   %zdfull_name.ilike.{kw},name_hanja.ilike.{kw},party.ilike.{kw},district.ilike.{kw},role_name.ilike.{kw})kw)eqor_format)queryrF   r@   rA   q_normr   r   apply_filters9   s   
z&congress_search.<locals>.apply_filtersr   r*   idexact)countrP   r   zcommittee_name,role_name,full_name,name_hanja,party,district,phone,room_no,photo_url,member_page_url,aide_staff,aide_secretary,aide_secretary2,election_countz)congress_member search fallback (reason: )zcommittee_name,role_name,full_name,name_hanja,party,district,phone,room_no,photo_url,member_page_url,aide_staff,aide_secretary,aide_secretary2,election_count,idr+   c              
     s    dkr|  d krdS dkr|  dkrdS sdS  }d|  dd|  d	d|  dd|  d
d|  ddg }||v S )Nr<   rD   FrA   T 	full_namer   
name_hanjadistrict	role_name)r3   lowerr$   )r9   keytgtrK   r   r   hit]   s   zcongress_search.<locals>.hitc                   s   g | ]} |r|qS r   r   ).0r9   )rZ   r   r   
<listcomp>g   s    z#congress_search.<locals>.<listcomp>c                 S  s   t | dd| ddfS )NrV   r   rS   )r   r3   )r9   r   r   r   <lambda>p   s    z!congress_search.<locals>.<lambda>)rX   election_countelection_labelrU   district_brzcongress/search.html)r?   r@   rA   rB   
committeespartiesr6   rC   has_prevhas_nextper_pagetotal)r   r:   r   r,   r-   r/   getattrlenr0   PER_PAGEranger    r   r1   r.   sortr"   r3   r'   r   TemplateResponse)r?   r@   rA   rB   rC   ra   rb   rM   rf   r6   base
total_respstartendq2r7   r0   filteredr9   rc   rd   r   )r@   rZ   rA   rL   r   congress_search,   sj   

rs   N)r   r   r   r   )r   r   r   r   )r!   r#   r   r   )r(   r   r   r)   )
r?   r	   r@   r   rA   r   rB   r   rC   r   )
__future__r   typingr   r   r   r   r   fastapir   r	   r
   fastapi.responsesr   app.web.depsr   r   r   collectionsr   routerri   r   r"   r'   r:   r3   rs   r   r   r   r   <module>   s$    


	

