
    xh                         d dl m Z  d dlmZ 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mZmZmZmZ d dlmZ d d	lmZmZmZmZmZ d d
lmZ d dlmZ d dlmZ 	 	 	 ddede de dede!f
dZ"	 ddedede!fdZ#y)    )datetime)UUID)Session)HTTPExceptionstatus)APIException)QueryPaginator)funccastIntegerand_or_)KeywordSpread)KeywordSpreadCreateSchemaKeywordSpreadOutputSchemaKeywordSpreadSchemaKeywordSpreadUpdateSchemaKeywordSpreadFilterSchema)API_PREFIXES)settings)defaultdictNdbpageper_pagepayloadreturnc           
      x  K   	 |dz
  |z  }| j                  t              j                  t        j                  j	                  d            }|r|j
                  rw|j
                  j                  d      D cg c]#  }|j                         s|j                         % }}|r.|j                  t        j                  j                  |            }|j                  t        j                  t        j                  t        j                  j                               }t        |t        dj!                  t#        t%        j&                               t(        j*                  g      ||d      }|j-                         S c c}w # t.        $ r-}	t1        ddt#        |	      it2        j4                  d	
      d}	~	ww xY ww)z-Retrieve all keyword spreads with pagination.   N, T)queryschemaurloffsetlimituse_ormget_all_keyword_spreads	exceptionz!Error retrieving keyword spreads.moduleerrorstatus_codemessage)r!   r   filter
deleted_atis_region_codessplitstripregion_codein_order_bykeyword_typedate_createddescr	   r   joinstrr   api_base_urlr   KEYWORD_SPREADpaginate	Exceptionr   r   HTTP_500_INTERNAL_SERVER_ERROR)
r   r   r   r   r$   r!   rcr1   	paginatores
             n/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/wine/keyword_spread/services/keyword_spread.pyr'   r'      s    
(h&'..}/G/G/K/KD/QR##5<5I5I5O5OPS5TcrXZX`X`Xb
cc!LL)B)B)F)F|)TUE}88-:T:TVcVpVpVuVuVwx" 9rwwHLaLaLcHdfr  gB  gB  HC  @D  MS  [c  mq
	 !!##  d  
,A'==7	
 	

sB   F:A4F 8E<E< CF ;F:<F 	F7
(F22F77F:c                   K   	 | j                  t              j                  t        j                  j	                  d            }d}|rt        |dd      rw|j                  j                  d      D cg c]#  }|j                         s|j                         % }}|r.|j                  t        j                  j                  |            }|j                  t        j                  t        j                  t        j                  j                               j                         }t!        d       }|D ]N  }||j                     |j                     j#                  t%        j&                  |      j)                                P |j+                         D 	ci c]  \  }}	|t-        |	       c}	}S c c}w c c}	}w # t.        $ r-}
t1        ddt3        |
      it4        j6                  d      d}
~
ww xY ww)	zGRetrieve keyword spreads grouped by their region code and keyword type.Nr1   r   c                       t        t              S N)r   list     rD   <lambda>z-get_grouped_keyword_spreads.<locals>.<lambda>8   s    k$&7 rJ   get_grouped_keyword_spreadsr(   z)Error retrieving grouped keyword spreads.r)   )r!   r   r.   r/   r0   getattrr1   r2   r3   r4   r5   r6   r7   r8   r9   allr   appendr   model_validate
model_dumpitemsdictr?   r   r;   r   r@   )r   r   r!   r1   rA   keyword_spreadsgroupedksregiontypesrC   s              rD   rL   rL   +   s    

'..}/G/G/K/KD/QRww=181E1E1K1KC1P_2TVT\T\T^BHHJ_L_]%>%>%B%B<%PQ..)B)BMD^D^`m`z`z``  aB  C  G  G  I78! 	wBBNN#BOO4;;<U<d<deg<h<s<s<uv	w9@IU#II ` J 
0A'==?	
 	

sN   G6A/F= 3F2	F2C=F= F7.F= 1G62F= =	G3(G..G33G6)r   
   NrG   )$r   uuidr   sqlalchemy.ormr   fastapir   r   src.core.exceptionsr   src.utils.paginationr	   
sqlalchemyr
   r   r   r   r   2src.apps.wine.keyword_spread.models.keyword_spreadr   3src.apps.wine.keyword_spread.schemas.keyword_spreadr   r   r   r   r   src.utils.constantsr   src.core.configr   collectionsr   intanyr'   rL   rI   rJ   rD   <module>rg      s      " ) , / 3 3 L |  | , $ #
 )-	



 
 '	

 	
< *.

&
 	
rJ   