o
    3i                     @   s>  d dl mZmZ d dlmZ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 G dd deeZG dd	 d	eeZG d
d deeZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZd"S )#    )	BaseModelField)OptionalLiteralUnionListDictAny)datetime)Enum)ObjectIdc                   @   s   e Zd ZdZdZdZdS )DeviceStatusactiveinactivefaultyN)__name__
__module____qualname__ACTIVEINACTIVEFAULTY r   r   =/var/www/html/moveengine/app/v1/models/platform/iotdevices.pyr   	   s    r   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	
DeviceTypeobdiimobiledashcamseat_sensorheat_sensorgpsothersN)
r   r   r   OBDIIMOBILEDASHCAMSEAT_SENSORHEAT_SENSORGPSOTHERSr   r   r   r   r      s    r   c                   @   s   e Zd ZdZdZdS )AssociatedEntityTypevehicle	workforceN)r   r   r   VEHICLE	WORKFORCEr   r   r   r   r(      s    r(   c                   @   s   e Zd ZU eed< dZee ed< eed< eed< eed< eed< e	ed< e
ejd	Zeed
< dZee ed< dZee ed< dS )IotDeviceBase
account_idNuser_idassociated_entity_typeassociated_entity_iddevice_typeinstallation_detailsstatusdefault_factorylast_updated
model_nameuuid)r   r   r   str__annotations__r/   r   r(   r   r   r   r
   utcnowr7   r8   r9   r   r   r   r   r-      s   
 r-   c                   @   s   e Zd ZdS )IotDeviceCreateN)r   r   r   r   r   r   r   r=   ,   s    r=   c                   @   s   e Zd ZU dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed< dZee ed< eejdZee ed	< dS )
IotDeviceUpdateNr/   r0   r1   r2   r3   r4   r5   r7   )r   r   r   r/   r   r:   r;   r0   r(   r1   r2   r   r3   r4   r   r   r
   r<   r7   r   r   r   r   r>   0   s   
 r>   c                   @   sB   e Zd ZU dZee ed< eej	dZ
eed< dedd iiZdS )	IotDeviceNidr5   created_datejson_encodersc                 C   s   t | S )N)r:   )vr   r   r   <lambda>@   s    zIotDevice.<lambda>)r   r   r   r@   r   r:   r;   r   r
   r<   rA   r   model_configr   r   r   r   r?   :   s
   
 r?   c                   @   "   e Zd ZU eed< ee ed< dS )IotDeviceListtotal_countdevicesN)r   r   r   intr;   r   r?   r   r   r   r   rG   D      
 rG   c                   @   s   e Zd ZU eed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed< dZee ed< dZee ed	< dZee ed
< dS )	FleetInfois_fleet_assignedNassigned_fromassigned_tor4   
fleet_nameregistration_numbercolorvehicle_imagecapacity)r   r   r   boolr;   rN   r   r
   rO   r4   rP   r:   rQ   rR   rS   rT   r   r   r   r   rL   J   s   
 rL   c                   @   s   e Zd ZU ed ed< eed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed	< dZeeeef  ed
< dZeeeeef   ed< dS )FleetMappedDetailsfleettypefleet_idNrP   rQ   vehicle_typer4   photoworkforce_infodevice_list)r   r   r   r   r;   r:   rP   r   rQ   rZ   r4   r[   r\   r   r	   r]   r   r   r   r   r   rV   V   s   
  rV   c                   @   s   e Zd ZU ed ed< eed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed	< dZee ed
< dZee ed< dZeeeeef   ed< dS )WorkforceMappedDetailsr*   rX   workforce_idN
first_name	last_namemobile_numberemail_idr4   r[   
fleet_infor]   )r   r   r   r   r;   r:   r`   r   ra   rb   rc   r4   r[   rd   rL   r]   r   r   r	   r   r   r   r   r^   b   s   
  r^   c                   @   sN   e Zd ZU dZeeeef  ed< dZ	ee
 ed< dZeeeef  ed< dS )IotDeviceWithMappingNmapped_detailsdistance_kmlast_location)r   r   r   rf   r   r   rV   r^   r;   rg   floatrh   r   r:   r	   r   r   r   r   re   p   s   
 re   c                   @   rF   )IotDeviceWithMappingListrH   rI   N)r   r   r   rJ   r;   r   re   r   r   r   r   rj   v   rK   rj   c                   @   sZ   e Zd ZU eed< eed< dZeed< dZeed< dZeed< e	d	d
dZ
ee ed< dS )NearbyDevicesRequestlatitude	longitudeg      @	radius_kmr   skip
   limitallz^(all|vehicle|workforce)$)defaultpattern	list_typeN)r   r   r   ri   r;   rn   ro   rJ   rq   r   ru   r   r:   r   r   r   r   rk   |   s   
 rk   N)pydanticr   r   typingr   r   r   r   r   r	   r
   enumr   bsonr   r:   r   r   r(   r-   r=   r>   r?   rG   rL   rV   r^   re   rj   rk   r   r   r   r   <module>   s&     


