
    ~Oi                        d dl mZmZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZ d d	lmZ  e            Z ee          Z ed
dg          Z ed          ZdedefdZ eeddge          e                    d
           ee           ee          fdefd                        ZdS )    )	APIRouterRequestDepends)HTMLResponse)RedirectResponse)Jinja2Templates)HTTP_302_FOUND)nav_context)get_current_user)
open_mysqlget_mysql_credsget_pingconf_vars)add_dual_routez/latestarticleslatestarticles)prefixtags	templates)	directoryqreturnc                     |                                                                  }d                    d |D                       S )z
    Converts a search string into BOOLEAN MODE format
    where each word must appear.
    Example: "Tucker Impunity" => "+Tucker +Impunity"
     c              3   $   K   | ]}|d | V  dS )+N ).0words     1/wd/v2025.freedom4um.com/routes/latestarticles.py	<genexpr>z&build_boolean_query.<locals>.<genexpr>   s-      994D9JJJ999999    )stripsplitjoin)r   wordss     r   build_boolean_queryr%      s<     GGIIOOE88995999999r     GET)methodsresponse_classrequestc                   K   |st          dt                    S | j                            dd                                          }| j                            dd          }| j                            dd          }d	}g }|rKt          |          }|d
k    r|dz  }|                    |           n |dz  }|                    |           n|dz  }|dz  }|rL|d
k    r!|dz  }|                    |d| dg           n%|dz  }|                    |d| dd| dg           |dk    r|r|dz  }n|dz  }|dz  }g }	d }
	 t          t                    5 }|
                    d          }
|
                    ||           |
                                }	|	D ];}t          |d         t                    r|d                             d          |d<   <	 d d d            n# 1 swxY w Y   |
r|
                                 n# |
r|
                                 w w xY wt"                              d| ||	|||| j                            dd          d|          S )Nz/signin/)urlstatus_coder   r&   scopeallorderdatez
        SELECT a.ArtNum,
               a.Title,
               a.PostDate,
               h.Handle AS Username,
               a.ViewCnt,
               a.CommentCnt
    titleszS,
                   (MATCH(a.Title) AGAINST (%s IN BOOLEAN MODE)) * 2 AS relevancez^,
                   (MATCH(a.Title, a.Article) AGAINST (%s IN BOOLEAN MODE) * 2) AS relevancez, 0 AS relevancezk
        FROM Articles a
        JOIN Handles h ON a.HandleID = h.HandleID
        WHERE a.Deleted = 0
    zE AND (MATCH(a.Title) AGAINST (%s IN BOOLEAN MODE) OR a.Title LIKE %s)%ze AND (MATCH(a.Title, a.Article) AGAINST (%s IN BOOLEAN MODE) OR a.Title LIKE %s OR a.Article LIKE %s)	relevancez) ORDER BY relevance DESC, a.PostDate DESCz ORDER BY a.PostDate DESCz	 LIMIT 50T)
dictionaryTitlezutf-8zlatestarticles.htmlthemelight)r*   userarticlesqueryr.   r0   r7   )r   r	   query_paramsgetr!   r%   appendextendr   mysql_credscursorexecutefetchall
isinstancebytesdecodecloser   TemplateResponsecookies)r*   r9   navr   r.   r0   sqlparams	boolean_qr:   rA   connarticles                r   latest_articlesrP      s^       LJNKKKK 	  b))//11A $$We44E $$Wf55EC F 	 "'**	H U UCMM)$$$$ ` `CMM)$$$$!!  C 	 ;H&C MM9h!hhh/0000(C
 MM9h!hhhA9::: ::** ;C HF$$ 	H[[D[11FNN3'''((H# H Hgg.66 H'.w'7'>'>w'G'GGG$H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H  	LLNNN  	LLNNNN	 %% _(('::		
 		
 		
  s1   H A?G$H $G((H +G(,H HN)fastapir   r   r   fastapi.responsesr   r   fastapi.templatingr   starlette.statusr	   	utils.navr
   
utils.authr   utils.pingdatar   r   r   utils.routesr   PingConfr@   routerr   strr%   r=   rP   r   r    r   <module>r\      s   / / / / / / / / / / * * * * * * . . . . . . . . . . . . + + + + + + ! ! ! ! ! ! ' ' ' ' ' ' I I I I I I I I I I ' ' ' ' ' 'oh''	+3C2D	E	E	EOk222	:3 :3 : : : : UGLIII189I1J1JPWPWXcPdPd \ \7 \ \ \  JI\ \ \r    