o
    Śh                     @  s   d dl mZ d dlmZmZmZmZ d dlmZmZm	Z	 d dl
mZ d,dd	Zd-ddZd.ddZd/ddZd0ddZd1ddZ							d2d3d*d+ZdS )4    )annotations)ListDictAnyOptional)datetimedatetimezone)get_supabase
article_idstrreturnc                 C  s   d|  dS )Nz2https://www.motie.go.kr/kor/article/ATCL6e90bb9de/z/view? )r   r   r   5/var/www/html/govbot/app/services/timeline_service.py_as_motie_url   s   r   bbs_idpost_idc                 C  s   d|  d| S )Nz:https://www.moef.go.kr/nw/notice/hrDetail.do?searchBbsId1=z&searchNttId1=r   )r   r   r   r   r   _as_moef_url
   s   r   r   c                 C  sx   t | tr| S | stjS t| d d dd }z|d\}}}tt|t|t|W S  ty;   tj Y S w )N
   .-)	
isinstancer   minr   replacestripsplitint	Exception)vsymdr   r   r   _parse_posted   s   

r#   r   c                 C  s   | s
t jjtjdS t|  dd}zt |}W n ty,   t jjtjd Y S w |j	d u r;|jtjd}|S |
tj}|S )N)tzinfoZz+00:00)r   r   r   r	   utcr   r   fromisoformatr   r$   
astimezone)r   r   dtr   r   r   _parse_created   s   
r*    c                 C  s@   zt | tr	| W S | d urt| W S |W S  ty   | Y S w )N)r   r   r   )r   defaultr   r   r   _to_str'   s
   (r-   r   Optional[str]Optional[date]c                 C  sH   | sd S z|  d\}}}tt|t|t|W S  ty#   Y d S w )Nr   )r   r   r   r   )r   r    r!   r"   r   r   r   _parse_input_date-   s   r0   all      Nsourcepager   	page_sizetitle_query
start_dateend_dateinternal_fetchOptional[int]Dict[str, Any]c                   s~  t  }g }|du rt|p|p|}	|	rdnt|d d}| dv rl|ddjdd	d
| jp4g }
|
D ]4}t	|
d}t	|
dpGd}|
d}|
d}|d|d|r^t|nd||t|t|d q7| dv r|ddjdd	d
| jpg }|D ]I}t	|
d}t	|
d}t	|
dpd}t	|
dpd}|
d}|
d}|d||pd|r|rt||nd||t|t|d q|r|  fdd|D }t|t|srd*fd d!  fd"d|D }|jd#d$ d	d% td&t|pd&}td&t|pd'}|d& | }|| }d(d ||| D }||||t|k t|d)S )+u   
    - source: all/MOTIE/MOEF
    - title_query: 제목 키워드(부분일치, 대소문자 무시)
    - start_date, end_date: 'YYYY-MM-DD' (게시일 posted_at 기준)
    - page/page_size: 페이지네이션
    Ni  r      )r1   MOTIEmotiemotie_idzid,created_at,title,posted_at	posted_atT)descidtitleu   산업부 인사발령
created_atr>   r+   )r4   rD   tagurlrA   rE   _posted_date_created_dt)r1   MOEFmoefmoef_idz2id,created_at,"bbsId","postId",title,tag,posted_atbbsIdpostIdu   기재부 인사발령rF   rJ   c                   sD   g | ]}|d  r |d    v s|d r  t|d   v r|qS )rD   rF   )lowerr   .0it)qr   r   
<listcomp>   s    z get_timeline.<locals>.<listcomp>r"   r   r   boolc                   s2   | t jkrdS r| k rdS  r|  krdS dS )NFT)r   r   )r"   )edsdr   r   	_in_range   s   
zget_timeline.<locals>._in_rangec                   s   g | ]
} |d  r|qS )rH   r   rP   )rX   r   r   rT      s    c                 S  s   | d | d fS )NrH   rI   r   )xr   r   r   <lambda>   s    zget_timeline.<locals>.<lambda>)keyreverser2   r3   c              	   S  s6   g | ]}|d  |d |d |d |d |d dqS )r4   rD   rF   rG   rA   rE   )r4   rD   rF   rG   rA   rE   r   rP   r   r   r   rT      s    
)rowsr5   r6   has_moretotal_estimate)r"   r   r   rU   )r
   rU   maxtableselectorderlimitexecutedatar-   getappendr   r#   r*   r   rO   r   r0   sortr   len)r4   r5   r6   r7   r8   r9   r:   sbpoolhas_filters
motie_rowsritem_idrD   rA   rE   	moef_rowsbbspidrF   startendr]   r   )rX   rV   rS   rW   r   get_timeline6   s   









rv   )r   r   r   r   )r   r   r   r   r   r   )r   r   )r   r   )r+   )r   r.   r   r/   )r1   r2   r3   NNNN)r4   r   r5   r   r6   r   r7   r.   r8   r.   r9   r.   r:   r;   r   r<   )
__future__r   typingr   r   r   r   r   r   r	   app.services.supabase_servicer
   r   r   r#   r*   r-   r0   rv   r   r   r   r   <module>   s$   






