
    =h                     t    d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ  G d de
eef         Zy	)
    )OptionalList)func)Session)Service)BaseRepository)ServiceSchemaServiceListItemSchemac                        e Zd Zdef fdZdedee   fdZdedefdZ	dedefd	Z
d
edee   fdZdd
edee   defdZ	 dd
edededee   dee   f
dZdedefdZ xZS )ServiceRepositorydbc                 .    t         |   |t               y N)super__init__r   )selfr   	__class__s     M/var/www/html/phonemate/phone_mate_backend/repositories/service_repository.pyr   zServiceRepository.__init__   s    W%    db_modelreturnc                 4    |rt        j                  |      S d S r   )r	   model_validate)r   r   s     r   
_to_entityzServiceRepository._to_entity   s    9A}++H5KtKr   entityc                 4    t        di |j                         S )N )r   
model_dump)r   r   s     r   _to_db_modelzServiceRepository._to_db_model   s    -**,--r   service_datac                 @   K   | j                  |       d {   S 7 wr   )create)r   r    s     r   create_servicez ServiceRepository.create_service   s     [[....   
company_idc                    K   | j                   j                  t              j                  t        j                  |k(        j                         }|D cg c]  }| j                  |       c}S c c}w wr   )r   queryr   filterr%   allr   )r   r%   servicesservices       r   get_by_company_idz#ServiceRepository.get_by_company_id   sX     77==)001C1Cz1QRVVX8@AW(AAAs   AA4A/,A4searchc                 J  K   | j                   j                  t        j                  t        j
                              j                  t        j                  |k(        }|r2|j                  t        j                  j                  d| d            }|j                         S wN%)r   r'   r   countr   idr(   r%   nameilikescalar)r   r%   r-   r'   s       r   count_by_companyz"ServiceRepository.count_by_company   sp     djj45<<W=O=OS]=]^LL!3!3axqM!BCE||~s   B!B#startsizec                   K   | j                   j                  t              j                  t        j                  |k(        }|r2|j                  t        j
                  j                  d| d            }|j                  t        j                  j                               j                  |      j                  |      j                         }|D cg c]!  }t        j                  |j                        # c}S c c}w wr/   )r   r'   r   r(   r%   r3   r4   order_by
created_atdescoffsetlimitr)   r
   r   __dict__)r   r%   r7   r8   r-   r'   r*   r+   s           r   get_by_company_paginatedz*ServiceRepository.get_by_company_paginated$   s      g&--g.@.@J.NOLL!3!3axqM!BCE>>'"4"4"9"9";<VE]U4[SU 	
 W__V^7%44W5E5EFV^___s   CD&C<9D
service_idc                 @   K   | j                  |       d {   S 7 wr   )delete)r   rA   s     r   delete_servicez ServiceRepository.delete_service7   s     [[,,,,r$   r   )__name__
__module____qualname__r   r   r   r   r	   r   r   r#   intr   r,   strr6   r
   r@   boolrD   __classcell__)r   s   @r   r   r      s    &7 &L7 Lx/F L.= .W ./ /= /B# B$}:M B hsm WZ  !%`` ` 	`
 ` 
#	$`&-s -t -r   r   N)typingr   r   
sqlalchemyr   sqlalchemy.ormr   modelsr   repositories.base_repositoryr   schemas.servicer	   r
   r   r   r   r   <module>rR      s-    !  "  7 @--}g'=> --r   