
    2Yh
              	       H   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
 d dlmZmZmZmZ d dlmZ d dlmZ  ed      Z G d d	eee         Z G d
 de      Z G d de      Z G d de      Zddej2                  fdededede
fdZddej:                  fdededede
fdZy)    )datetime)AnyDictGenericListOptionalTypeVarUnionJSONResponse)	BaseModelField
ConfigDictcreate_model)GenericModel)statusTc                   ~    e Zd ZU dZ ed      Z ed      Zee	d<   e
j                  Zee	d<   dZee	d<   d	Zee	d
<   y)ResponseModelz
    Base Response Model
    Tarbitrary_types_allowedN)defaultdatastatus_codesuccessRequest handled successfullymessage)__name__
__module____qualname____doc__r   model_configr   r   r   __annotations__r   HTTP_200_OKr   intr   boolr   str     T/var/www/html/wine-match-dev/backend/winematch-backend/src/utils/helpers/response.pyr   r      sF     d;LD!D!!))K)GT1GS1r)   r   c                   p    e Zd ZU dZ ed      Zi Zeed<   e	j                  Zeed<   dZeed<   dZeed	<   y
)ErrorResponseModelz
    Base Error Model
    Tr   errorr   Fr   Request could not be processedr   N)r   r   r    r!   r   r"   r-   r   r#   r   HTTP_500_INTERNAL_SERVER_ERRORr   r%   r   r&   r   r'   r(   r)   r*   r,   r,      s@     d;LE3O<<K<GT3GS3r)   r,   c                       e Zd ZU eed<   y)WebhookResponseresultN)r   r   r    r'   r#   r(   r)   r*   r1   r1   '   s    Kr)   r1   c                       e Zd ZU  ed      Zee   ed<    ed      Zee	   ed<    ed      Z
ee   ed<    ed      Zee   ed	<   y
)WebhookRequestzType of event being fired)descriptiontypezEvent data payloadr   zCreated date and time
created_atzUpdated date and time
updated_atN)r   r   r    r   r6   r   r'   r#   r   r   r7   r   r8   r(   r)   r*   r4   r4   +   sT    ,GHD(3-H -ABD(4.B%*7N%OJ"O%*7N%OJ"Or)   r4   Nr   r   r   r   returnc                 N   t        | t              r| j                         } n`t        | t              rPt	        |       dkD  rBt        | d   t              r/| D cg c]$  }t        |t              r|j                         n|& } }t        || |d|cxk  xr dk  nc |d      S c c}w )zC
    Create a consistent response format for all API endpoints
    r      i,  )r   r   r   r   r   content)
isinstancer   
model_dumplistlenr   )r   r   r   items       r*   create_responserC   2   s     $	" 	D$	CIMja)6TW[\tZi%@!dJ\\&k/C/	
  ]s   )B"r.   r-   c                 &    t        || |d|d      S )zI
    Create a consistent error response format for all API endpoints
    F)r-   r   r   r   r<   r   )r-   r   r   s      r*   create_error_responserE   K   s%     &	
 r)   )r   typingr   r   r   r   r   r	   r
   fastapi.responsesr   pydanticr   r   r   r   pydantic.genericsr   	starletter   r   r   r,   r1   r4   r$   r'   r%   rC   r/   rE   r(   r)   r*   <module>rK      s     E E E * ? ? *  CL
2L'!* 
2
4 
4i PY P 1))
  	4 3<<  	r)   