
    &h                     `    d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
  G d d          ZdS )	    )AsyncIOMotorClient)SearchResponseNewsResponse)List)pydantic_to_mongo_dict)settingsc                   T    e Zd ZdedefdZdee         fdZd Zde	fdZ
d	efd
ZdS )NewsRepository	mongo_urldb_namec                 v    t          |          | _        | j        |         | _        | j        d         | _        d S )Nsearch_response)r   clientdb
collection)selfr   r   s      /app/app/repos/mongodb_repo.py__init__zNewsRepository.__init__	   s2    (33+g&'"34    
news_itemsc                   K   	 g }|D ]=}t          |          }t          |j                  |d<   |                    |           >| j                            |d           d{V }d |D             S # t          $ r}|d}~ww xY w)z Save multiple news items in bulk_idF)orderedNc                     g | ]}|S  r   ).0ress     r   
<listcomp>z2NewsRepository.save_news_batch.<locals>.<listcomp>   s    ...CC...r   )r   stridappendr   insert_many	Exception)r   r   
news_dictsitem	news_dictresultes          r   save_news_batchzNewsRepository.save_news_batch   s      	J" - -2488	#&tw<<	% !!),,,,  ?66z56QQQQQQQQF..:.... 	 	 	G	s   A/A4 4
B>B  Bc                 p   K   | j                                         }|                    d           d {V S )N  length)r   findto_list)r   cursors     r   list_news_batchzNewsRepository.list_news_batch"   s?      %%''^^4^000000000r   filtersc                    K   | j                             |                              dd          }|                    d           d {V S )Npublished_datetime_utcr+   r,   )r   r.   sortr/   )r   r2   r0   s      r   list_news_filteredz!NewsRepository.list_news_filtered&   sR      %%g..334LbQQ^^4^000000000r   responsec                 n   K   | j                             |                                           d {V  d S )N)r   
insert_onedict)r   r8   s     r   save_one_newszNewsRepository.save_one_news*   s<      o((99999999999r   N)__name__
__module____qualname__r   r   r   r   r)   r1   r;   r7   r<   r   r   r   r
   r
      s        5# 5 5 5 5 5
^0D    (1 1 11 1 1 1 1:N : : : : : :r   r
   N)motor.motor_asyncior   app.entities.search_responser   r   typingr   app.core.dependenciesr   app.core.configr   r
   r   r   r   <module>rE      s    2 2 2 2 2 2 D D D D D D D D       8 8 8 8 8 8 $ $ $ $ $ $#: #: #: #: #: #: #: #: #: #:r   