
    i                           d Z ddlmZ d Zd Zy)a  
Shared keyword-run tracker.

Table: keyword_runs
  keyword   - the keyword (or CPV code) searched
  source    - scraper source name (europa, tendera.at, nipez, etc.)
  run_date  - DATE of the run (today)
  run_at    - full DATETIME when the run completed

Usage:
    from keyword_tracker import is_keyword_done, mark_keyword_done

    if is_keyword_done(conn, keyword, source):
        print(f"  [SKIP] Already ran today: {keyword}")
        continue

    # ... do scraping ...

    mark_keyword_done(conn, keyword, source)
    )datec                     | j                         }|j                  d||t        j                         f       |j	                         }|j                          |duS )z4Return True if keyword+source was already run today.zWSELECT 1 FROM keyword_runs WHERE keyword = %s AND source = %s AND run_date = %s LIMIT 1N)cursorexecuter   todayfetchoneclose)connkeywordsourcer   results        @/var/www/python/tenders/Scrapper/nen.nipez/../keyword_tracker.pyis_keyword_doner      sN    [[]F
NNa	&$**,' __F
LLN    c                     | j                         }|j                  d||t        j                         f       | j	                          |j                          y)z3Record that keyword+source was completed right now.zWINSERT INTO keyword_runs (keyword, source, run_date, run_at) VALUES (%s, %s, %s, NOW())N)r   r   r   r   commitr	   )r
   r   r   r   s       r   mark_keyword_doner   %   s@    [[]F
NNa	&$**,' 	KKM
LLNr   N)__doc__datetimer   r   r    r   r   <module>r      s   * 	r   