o
    j                     @   s6   d dl mZmZmZmZ d dlmZ G dd dZdS )    )AnyOptionalDictList)ApiResponsec                   @   s<  e Zd ZdZd3dedee deeeef  fddZd3dedee deeeef  fdd	Z	d3dedee deeeef  fd
dZ
d4deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fddZd3dee dee deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fddZd3dedee deeeef  fd d!Zd4ded"edeeeef  fd#d$Zd5ded"edeeeef  fd&d'Zd4ded(eeeeef   fd)d*Zd6dee d+eeef dee deeeef  fd,d-Zd6d.eeeef  dee deeeef  fd/d0Zd3dee dee deeeef  fd1d2ZdS )7ApiResponseMixinz
    Mixin class to provide PHP trait-like functionality for API responses.
    This allows controllers to access response methods directly like PHP traits.
    Ndatamessageheadersc                 C      t |||S )z$Send successful response (HTTP 200).)r   okselfr   r	   r
    r   :/var/www/html/oms-prod-mcp/app/utils/api_response_mixin.pyr   
      zApiResponseMixin.okc                 C   r   )z*Send resource created response (HTTP 201).)r   createdr   r   r   r   r      r   zApiResponseMixin.createdc                 C   r   )z"Send accepted response (HTTP 202).)r   acceptedr   r   r   r   r      r   zApiResponseMixin.acceptedc                 C   s
   t |S )z$Send no content response (HTTP 204).)r   
no_content)r   r
   r   r   r   r      s   
zApiResponseMixin.no_contentc                 C   r   )z"Send bad request error (HTTP 400).)r   bad_requestr   r   r   r   r      r   zApiResponseMixin.bad_requestc                 C   r   )z#Send unauthorized error (HTTP 401).)r   unauthorizedr   r   r   r   r      r   zApiResponseMixin.unauthorizedc                 C   r   )z Send forbidden error (HTTP 403).)r   	forbiddenr   r   r   r   r   "   r   zApiResponseMixin.forbiddenc                 C   r   )z Send not found error (HTTP 404).)r   	not_foundr   r   r   r   r   &   r   zApiResponseMixin.not_foundc                 C   r   )z)Send method not allowed error (HTTP 405).)r   method_not_allowedr   r   r   r   r   *   r   z#ApiResponseMixin.method_not_allowedc                 C   r   )zSend conflict error (HTTP 409).)r   conflictr   r   r   r   r   .   r   zApiResponseMixin.conflictc                 C   r   )z!Send validation error (HTTP 422).)r   unprocessable_entityr   r   r   r   r   2   r   z%ApiResponseMixin.unprocessable_entityc                 C   r   )z!Send rate limit error (HTTP 429).)r   too_many_requestsr   r   r   r   r   6   r   z"ApiResponseMixin.too_many_requestsc                 C   r   )zSend server error (HTTP 500).)r   server_errorr   r   r   r   r   :   r   zApiResponseMixin.server_errorc                 C   r   )z*Send service unavailable error (HTTP 503).)r   service_unavailabler   r   r   r   r   >   r   z$ApiResponseMixin.service_unavailablecodec                 C   r   )zSend custom error response.)r   errorr   r	   r   r
   r   r   r   r    B   r   zApiResponseMixin.error  c                 C   r   )z'Send error response with fixed message.)r   error_with_messager!   r   r   r   r#   F   r   z#ApiResponseMixin.error_with_messageerrorsc                 C   s   t ||S )z4Send validation error response with detailed errors.)r   validation_error)r   r	   r$   r   r   r   r%   J   s   z!ApiResponseMixin.validation_errorpagination_infoc                 C   s   t ||||S )z&Send paginated response with metadata.)r   paginated_response)r   r   r&   r	   r
   r   r   r   r'   N   s   z#ApiResponseMixin.paginated_responseresultsc                 C   r   )zSend bulk operation response.)r   bulk_response)r   r(   r	   r
   r   r   r   r)   R   r   zApiResponseMixin.bulk_responsec                 C   r   )z*Send no content found response (HTTP 204).)r   no_data_foundr   r   r   r   r*   V   r   zApiResponseMixin.no_data_found)NNN)N)r"   N)NN)__name__
__module____qualname____doc__r   r   strr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   intr    r#   r   r%   r'   r)   r*   r   r   r   r   r      s,    ((((((,(((((($$$840r   N)typingr   r   r   r   app.utils.response_helperr   r   r   r   r   r   <module>   s    