
    f$                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ  G d d      Zded	eeef   dz  fd
Zded	efdZded	efdZded	efdZded	efdZded	efdZdefdefdefdefdefdZy)    )DictN)QdrantClient)VectorParamsDistancePointStructFilterFieldCondition	MatchTextMatchAny)qdrant_configc                        e Zd ZdZdZ ej                         Z fdZd Z	d Z
d ZddefdZdd	efd
Zd Zg fdegdegfdZdegdegfdZd Zd Zd Zd Z xZS )QwinQdrantClient	qwin_docsNc                     | j                   5  | j                  st        t        |   |       | _        d d d        | j                  S # 1 sw Y   | j                  S xY wN)_lock	_instancesuperr   __new__)clsargskwargs	__class__s      3/var/www/apps/qwin_bot/qdrant/qwin_qdrant_client.pyr   zQwinQdrantClient.__new__   sP    YY 	J== %&6 DS I	J }}		J }}s   %AAc                 ^    | j                   j                         }|j                  dd        |S )Nr   )__dict__copypopselfstates     r   __getstate__zQwinQdrantClient.__getstate__   s'    ""$		'4     c                 l    | j                   j                  |       t        j                         | _        y r   )r   update	threadingLockr   r   s     r   __setstate__zQwinQdrantClient.__setstate__   s"    U#^^%
r#   c                 d    t               | _        t        | j                  d   d         | _        y )Nqdranturl)r+   )r   configr   client)r    s    r   __init__zQwinQdrantClient.__init__#   s%    #o"t{{8'<U'CDr#   verbosec                 N   	 | j                   j                  | j                         |rt        d| j                   d       | j                   j	                  | j                  t        dt        j                               |rt        d| j                   d       y y #  Y |xY w)N)collection_namezQdrant collection z deleted   )sizedistance)r1   vectors_configz created)r-   delete_collectionQWIN_DOCS_COLLECTIONprintcreate_collectionr   r   COSINE)r    r/   s     r   r9   z"QwinQdrantClient.create_collection'   s    	KK))$:S:S)T &t'@'@&AJK%%d6O6O5AtV^VeVe5f 	& 	h&t'@'@&AJK 	s   &B   B$doc_dirc                 J   t         j                  j                  t         j                  j                  t                    }||z   }t        j
                  |      }d}|D ]  }t        |   \  }}||z   }t        j
                  |      }	t        |	d      D ]  \  }
}t         j                  j                  ||      }t         j                  j                  |      sF ||      }| j                  j                  | j                  dt        |dgdz  |      g       |dz  }  y )N   Tg        r2   )idvectorpayload)r1   waitpoints)ospathdirnamerealpath__file__listdirchain_doc_loaders	enumeratejoinisfiler-   upsertr7   r   )r    r;   curr_dirchainsdoc_idchainfolder
doc_loaderchain_doc_dirfilesifile	file_pathgame_docs                 r   	load_docszQwinQdrantClient.load_docs4   s   77??277#3#3H#=>W$G$ 	 E!25!9FJ#f,MJJ}-E$UA.  4GGLL=	77>>),))4HKK&&(,(A(A!'62408:  '  aKF 	 r#   c                     t        dt        d            t        dt        d            g}| j                  j                  | j                  t        |            }|r|d	   d	   j                  d
   S y )NrQ   gamestextkeymatchcode	game_listmustr1   scroll_filterr   r^   r	   r
   r-   scrollr7   r   r@   )r    re   results      r   rc   zQwinQdrantClient.game_listd   su    7)2IJ61LMO ## 55 d+ $ 

 !9Q<''//r#   
game_codes	key_wordsc                     t        dt        |            g}| j                  j                  | j                  t        |            }|d   D cg c]  }|j                  d    c}S c c}w )N	game_code)anyr_   rd   rf   r   r^   )r	   r   r-   ri   r7   r   r@   )r    rk   rl   re   rj   items         r   search_game_docsz!QwinQdrantClient.search_game_docsr   sc    ;h:6NOP## 55 d+ $ 

 28;V$;;;   A*returnc                     t        dt        d            g}| j                  j                  | j                  t        |            }|d   D cg c]  }|j                  d    c}S c c}w )	NrQ   r\   r]   r_   rd   rf   r   r^   rh   )r    rl   re   rj   rp   s        r   search_games_docsz"QwinQdrantClient.search_games_docs}   sc    7)2IJK## 55 d+ $ 

 28;V$;;;rr   c                     t        dt        d            g}| j                  j                  | j                  t        |            }|d   D cg c]  }|j                  d    c}S c c}w )	NrQ   casinor]   r_   rd   rf   r   r^   rh   r    re   rj   rp   s       r   search_casino_docsz#QwinQdrantClient.search_casino_docs   sc    7)2JKL## 55 d+ $ 

 28;V$;;;rr   c                     t        dt        d            g}| j                  j                  | j                  t        |            }|d   D cg c]  }|j                  d    c}S c c}w )	NrQ   financer]   r_   rd   rf   r   r^   rh   rx   s       r   search_finance_docsz$QwinQdrantClient.search_finance_docs   sc    7)2KLM## 55 d+ $ 

 28;V$;;;rr   c                     t        dt        d            g}| j                  j                  | j                  t        |            }|d   D cg c]  }|j                  d    c}S c c}w )	NrQ   	marketingr]   r_   rd   rf   r   r^   rh   rx   s       r   search_marketing_docsz&QwinQdrantClient.search_marketing_docs   c    7)2MNO## 55 d+ $ 

 28;V$;;;rr   c                     t        dt        d            g}| j                  j                  | j                  t        |            }|d   D cg c]  }|j                  d    c}S c c}w )	NrQ   	affiliater]   r_   rd   rf   r   r^   rh   rx   s       r   search_affiliate_docsz&QwinQdrantClient.search_affiliate_docs   r   rr   )F)z/docs)__name__
__module____qualname__r7   r   r&   r'   r   r   r"   r(   r.   boolr9   strrZ   rc   rq   ru   ry   r|   r   r   __classcell__)r   s   @r   r   r      s    &IINNE
&EL L   ` FH 	<C5 	<cU 	<<C5 <cU <<<<<r#   r   stringrs   c                 X    	 t        j                  |       S #  t        d|         Y y xY w)NzIncorrect json string )jsonloadsr8   )r   s    r   
doc_headerr      s0    zz&!!&vh/0s    )rX   c                     t        | dd      5 }|j                         }t        |d         }|
J d|         |d   |d   dk(  s
J d|         i |d	d
j                  |dd        icd d d        S # 1 sw Y   y xY w)Nrutf-8encodingr   %parse headers, incorrect file format rQ   rw   8Cannot find chain key in headers, incorrect file format r^   .r=   open	readlinesr   rK   rX   flinesheaderss       r   load_casino_docr      s    	iw	/ 81U1X&"W&KI;$WW"w+0@H0L  	U  QI  JS  IT  OU  	UL7'76388E!"I#678 8 8   AA44A=c                     t        | dd      5 }|j                         }t        |d         }|
J d|         |d   |d   dk(  s
J d|         i |d	d
j                  |dd        icd d d        S # 1 sw Y   y xY w)Nr   r   r   r   r   rQ   r{   r   r^   r   r=   r   r   s       r   load_finance_docr      s    	iw	/ 81U1X&"W&KI;$WW"w+1!1" 	j%]^g]h#i	j " 8'76388E!"I#678 8 8r   c                     t        | dd      5 }|j                         }t        |d         }|
J d|         |d   |d   dk(  s
J d|         i |d	d
j                  |dd        icd d d        S # 1 sw Y   y xY w)Nr   r   r   r   r   rQ   r~   r   r^   r   r=   r   r   s       r   load_marketing_docr          	iw	/ 81U1X&"W&KI;$WW"w+1#1$ 	l'_`i_j%k	l $ 8'76388E!"I#678 8 8r   c                     t        | dd      5 }|j                         }t        |d         }|
J d|         |d   |d   dk(  s
J d|         i |d	d
j                  |dd        icd d d        S # 1 sw Y   y xY w)Nr   r   r   r   r   rQ   r   r   r^   r   r=   r   r   s       r   load_affiliate_docr      r   r   c                     t        | dd      5 }|j                         }t        |d         }|
J d|         |d   |d   dk(  s
J d|         i |d	d
j                  |dd        icd d d        S # 1 sw Y   y xY w)Nr   r   r   r   r   rQ   r\   r   r^   r   r=   r   r   s       r   load_game_docr      s    	iw	/ 81U1X&"W&KI;$WW"w+11  	h#[\e[f!g	h   8'76388E!"I#678 8 8r   z/casinoz/financez/gamesz
/marketingz
/affiliate)rw   r{   r\   r~   r   )typingr   rC   r   r&   qdrant_clientr   qdrant_client.modelsr   r   r   r   r	   r
   r   qwin_qdrant_configr   r   r   r   r   r   r   r   r   rI    r#   r   <module>r      s     	   &  
 -`< `<Fs tCH~4 8s 8t 8	8 	8 	8	8# 	8$ 	8	8# 	8$ 	8	8S 	8T 	8 /*,-& 23 23 r#   