
    7h                         d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
 d dlmZmZmZmZ d dlmZ d dlmZ  G d de      Z G d	 d
e      Zy)    )HTTPException)Fieldfield_validator)INTEGERVARCHAREnum
ForeignKeyText)MappedSessionmapped_columnrelationship)Base)CustomModelc                      e Zd ZU  ed      Zedz  ed<    ed      Zedz  ed<    ed      Z	edz  ed<    edd      Z
edz  ed<    edd	      Zedz  ed
<    edd      Zedz  ed<    edd      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    ed      Zedz  ed<    edd      Zedz  ed<   y)SegmentBaseN)default
segment_idnamelocationchiefWageEarnerOccupation)r   aliaschief_wage_earner_occupationhighestEducatedMalehighest_educated_malehighestEducatedFemalehighest_educated_femaleisecSegmentISEC_Segmenttotal_populationother_detailsadditional_informationgroupIdgroup_id)__name__
__module____qualname__r   r   int__annotations__r   strr   r   r   r   r   r    r!   r"   r$        >/var/www/html/retail-simulation-api/app/models/main/segment.pyr   r      s    "40Jd
0T*D#** .HcDj./4TId/e #*e(-dBW(X3:X*/D[*\S4Z\$TGL#*G$)$$7sTz7!&t!4MC$J4*/*=S4Z= Y?HcDj?r,   r   c                      e Zd ZU dZ ededd      Zee   e	d<    ed e
d      d      Zee   e	d<    ed	 ed
dd      d      Zee   e	d	<    ed eddddddd      d      Zee   e	d<    ed eddddddd      d      Zee   e	d<    ed eddddddd      d      Zee   e	d<    ed ed      Zee   e	d <    ed!ed      Zee   e	d!<    ed" e
d#      d      Zee   e	d"<    ed$edd%&      Zee   e	d$<    ed'e ed(      d      Zee   e	d'<    ed)d*+      Zed,ed-ed.d fd/       Zeded-ed.d0fd1       Zed'ed-ed.d fd2       Z eded,ed-ed.d0fd3       Z!eded-ed.e"fd4       Z#y%)5
TblSegmenttbl_segmentr   T)primary_keyautoincrementr      F)nullabler   RuralUrbanlocation_types)r   r   LabourFarmerWorkerTraderzClerical/Sales/SupervisoryzManagerial/Professionaloccupation_typesr   zNo formal educationzUp to Class 5 StandardzClass 6-9th standardzClass 10-14 standardzDegree RegularzDegree Professionaleducation_levelsr   education_levels_femaler   r    r!      r"   N)r4   server_defaultr$   ztbl_group.group_idTblGroupsegment)back_populatesdatadbreturnc                 t     | di |j                         }|j                  |       |j                          |S )Nr+   )
model_dumpaddflush)clsrD   rE   new_datas       r-   createzTblSegment.create@   s0    +*+
x

r,   zTblSegment | Nonec                 x    |j                  |       j                  | j                  |k(        j                         S N)queryfilterr   first)rK   r   rE   s      r-   	get_by_idzTblSegment.get_by_idG   s-    xx}##CNNj$@AGGIIr,   c                     |j                  |       j                  | j                  |k(        j                         }|st	        dd      |S )Ni  z Segment not found for this Group)status_codedetail)rP   rQ   r$   allr   )rK   r$   rE   rB   s       r-   get_by_group_idzTblSegment.get_by_group_idK   sB    ((3-&&s||x'?@DDFC8Z[[r,   c                 4   |j                  |       j                  | j                  |k(        j                         }|sy |j	                         }|j                         D ]  \  }}|	t        |||        |j                          |j                  |       |S rO   )	rP   rQ   r   rR   rH   itemssetattrcommitrefresh)rK   r   rD   rE   get_data	data_dictkeyvalues           r-   updatezTblSegment.updateR   s    88C=''*(DEKKMOO%	#//+JC #u- , 			


8r,   c                     |j                  |       j                  | j                  |k(        j                         }|sy|j	                  |       |j                          y)NFT)rP   rQ   r   rR   deleter\   )rK   r   rE   objs       r-   rd   zTblSegment.delete_   sI    hhsm""3>>Z#?@FFH
		#
		r,   )$r%   r&   r'   __tablename__r   r   r   r   r(   r)   r   r   r*   r   r   r   r   r   r   r    r!   r
   r"   r	   r$   r   groupclassmethodr   r   rM   rS   rX   rb   boolrd   r+   r,   r-   r/   r/   "   s   !M+L'tcghJsh%fgclUKD&+K)*d7GRb6cnstHfSkt0=&Xx85QSl  tF  	G1 &+ 
 *7"$<>TVln~  AV  ]o  	p*6#; 
 ,9!"$<>TVln~  AV  ]v  	w,VC[ 
 !.ngPU VL&+V$12DgX\$]fSk]"/W\"]MF3K]+89QSWbfw{+|VC[|)*gzJ^?_jopHfSkpI>E+ 7 |   J3 JG J8K J J s  L   
 
; 
G 
H[ 
 
   T  r,   r/   N)fastapir   pydanticr   r   
sqlalchemyr   r   r   r	   r
   sqlalchemy.ormr   r   r   r   app.models.mainr   app.utils.schemas_utilsr   r   r/   r+   r,   r-   <module>rp      s9    ! + ? ? F F   /@+ @4D Dr,   