
    lh                         d dl Z d dlmZmZ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 j                  e      Z G d d      Z G d	 d
      Zy)    N)DictListOptional)Session)Source)WineWineDbWineKeyword)Producerc                   "    e Zd ZU eed<   eed<   y)SimpleModelidlabelN)__name__
__module____qualname__str__annotations__     ^/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/match/services/wine_service.pyr   r      s    GJr   r   c                       e Zd ZdededefdZdedededee   fdZ	dedee   dee
   fdZded	ee   d
edefdZdedededededededee   ded
efdZdefdZy)WineServicedb
wine_db_idreturnc                    	 | j                  t              j                  t        j                  |k(  t        j                  dk(        j                         }|dkD  S # t        $ r"}t        j                  d|        Y d }~yd }~ww xY w)NACTIVEr   zis_wine_db_exists error: F)	queryr	   filterr   statuscount	Exceptionloggererror)r   r   resultes       r   is_wine_db_existszWineService.is_wine_db_exists   so    	XXf%,,VYY*-DfmmW_F_`ffhFA: 	LL4QC89	s   AA 	B%BBwine_idc                    	 | j                  t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t"        j$                  t"        j&                        j)                  t        j*                        j-                  t        j.                        j)                  t"              j1                  t"        j2                  |k(        j5                         }|sO| j                  t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                         j)                  t        j*                        j-                  t        j.                        j1                  t        j2                  |k(        j5                         }|rt7        |      }|ddgz  }|rt7        |      S g S # t8        $ r$}t:        j=                  d|        g cY d }~S d }~ww xY w)N z0get_wine_properties_for_match_validation error: )r   r	   colortype	sweetnessvarietynotenamewine_countrywine_regionwine_locationwine_locale	wine_siter   	name_showr
   patternr   maturitymongo_idjoinproducer	outerjoinwine_keywordr    r   firstlistr#   r$   r%   )r   r)   r   winer'   s        r   (get_wine_properties_for_match_validationz4WineService.get_wine_properties_for_match_validation   s   7	LLKK$$NNKKKK''&&((&&$$&&''MMMM" foo&6../d7*+- 2 HH((++**,,**(( **#++ T&//*Yv223VFII34UW' , :DRH$D!%4:-2- 	LLKA3OPI	s$   K
K K 	K<K71K<7K<idsc                 .   |sg S 	 | j                  t        j                  t        j                  t        j                  t
        j                        j                  t        j                        j                  t        j                  j                  |            j                         }g }|D ]5  }|d    d|d    d|d    d}|j                  t        |d   |             7 |S # t        $ r$}t        j!                  d	|        g cY d }~S d }~ww xY w)
N       z (   )r   )r   r   z"get_wines_with_description error: )r   r	   r   r1   r,   r   r7   r;   r<   r    in_allappendr   r#   r$   r%   )r   rC   winesr&   wr   r'   s          r   get_wines_with_descriptionz&WineService.get_wines_with_descriptionX   s    I	FKKx?Q?QRfoo&		c*+	  F AQ4&!A$r!A$q1kQqT?@A M 	LL=aSABI	s   C C' '	D0D	DDkeywordssourcec                    g }|D ]M  }|j                  d      }|j                  t              j                  t              j                  t        j                  |k(        j                         }|rn|j                  t              j                  t        j                  |k(        j                         }|s| j                  |||j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      d |j                  d      |	      }	|	s=|j                  |	       P |S )
NwineDbIdproducerKeywordbaseKeywordappellationKeywordcolorKeywordcommonModifiersKeywordmodifiersKeywordglobalNotKeyword)r   wine_dbproducer_keywordbase_keywordappellation_keywordcolor_keywordcommon_modifiers_keywordmodifiers_keywordcustom_not_keywordglobal_not_keywordrQ   )getr   r
   r;   r	   r    r   r"   r?   save_keywordrL   )
selfr   rP   rQ   saveddatar   existsr[   keywords
             r   save_keywordszWineService.save_keywordsl   s    	.D*-JXXk*//7>>vyyJ?VW]]_F((6*11&))z2IJPPR"// ')-2C)D%)XXm%<,0HH5I,J&*hh~&>15:R1S*.((3E*F+/+/884F+G% 0 G W-)	.* r   r\   r]   r^   r_   r`   ra   rb   rc   c                 "   	 | j                  |||||||	|
      }t        ||||||||	|
||      }|j                  |       |j                          |S # t        $ r2}t
        j                  d|        |j                          Y d }~y d }~ww xY w)N)r[   r\   r]   r^   r_   r`   ra   rb   rc   r8   rQ   zFailed to save WineKeyword: )_generate_patternr
   addcommitr#   r$   r%   rollback)rf   r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rQ   r8   r>   r'   s                  r   re   zWineService.save_keyword   s    	,, #(!""	G '!1)$7+)A"3#5#5L FF< IIK 	LL7s;<KKM	s   AA 	B(B		Bc                 8    dj                  t        d |            S )NrF   )r;   r    )rf   argss     r   rm   zWineService._generate_pattern   s    xxtT*++r   N)r   r   r   r   intboolr(   r   r   rB   r   rO   r   r   rk   r   re   rm   r   r   r   r   r      s   g 3 4 8W 8s 8X[ 8`deh`i 8tw T#Y 4CT ( 4: v RV 2-- 	-
 - !- - #&- - %SM-  - -^,# ,r   r   )loggingtypingr   r   r   sqlalchemy.ormr   src.apps.match.enumsr   src.apps.wine.wine.models.winer   r	   r
   &src.apps.wine.producer.models.producerr   	getLoggerr   r$   r   r   r   r   r   <module>r|      sE     ' ' " ' D D ;			8	$ 
e, e,r   