
    Lcj                         S r SSKrSSKJrJr  SSKJr  SSKJrJr  Sr	S r
S\R                  4S	 jrS
\S\4S jrSS\\   S\\   SS4S jjrS\\   S\\   4S jrg)uq   Лёгкий sqlite-дедуп: показанные посты (TG/Reddit) и виденные RSS-ссылки.    N)datetimetimezone)Path)ListOptionalz
CREATE TABLE IF NOT EXISTS seen_posts (
    post_id TEXT PRIMARY KEY,
    seen_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS seen_entries (
    link TEXT PRIMARY KEY,
    first_seen TEXT NOT NULL
);
c                  f    [         R                  " [        R                  5      R	                  5       $ N)r   nowr   utc	isoformat     #/home/rasp/mars-trendwatch/state.py_nowr      s    <<%//11r   returnc                     [        U 5      R                  R                  SSS9  [        R                  " [        U 5      5      n[        R                  Ul        UR                  [        5        UR                  5         U$ )NT)parentsexist_ok)r   parentmkdirsqlite3connectstrRowrow_factoryexecutescriptSCHEMAcommit)db_pathcons     r   r   r      sX    Mtd;
//#g,
'CkkCOfJJLJr   post_idc                 L    U R                  SU45      R                  5       nUS L$ )Nz(SELECT 1 FROM seen_posts WHERE post_id=?)executefetchone)r    r!   rows      r   was_seen_postr&   !   s(    
++@7*
M
V
V
XCd?r   post_idsatc                     U=(       d
    [        5       nU R                  SU Vs/ s H  o3U4PM     sn5        U R                  5         g s  snf )Nz@INSERT OR IGNORE INTO seen_posts (post_id, seen_at) VALUES (?,?))r   executemanyr   )r    r'   r(   ps       r   mark_posts_seenr,   &   s>    	tvBOOV&./hWh/1JJL 0s   A	
recordsc                     [        5       n/ nU H>  nU R                  SUS   U45      nUR                  (       d  M-  UR                  U5        M@     U R	                  5         U$ )NzBINSERT OR IGNORE INTO seen_entries (link, first_seen) VALUES (?,?)link)r   r#   rowcountappendr   )r    r-   r(   outrcurs         r   new_entriesr5   -   sX    	B
Ckk^V9b/+<<<JJqM	 
 JJLJr   r	   )__doc__r   r   r   pathlibr   typingr   r   r   r   
Connectionr   r   boolr&   r,   dictr5   r   r   r   <module>r<      s    w  '  !	
2**   
49 (3- 4 	d4j 	T$Z 	r   