o
    Uh                     @   s   d dl mZ d dlmZ d dl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 deZG d	d
 d
eZdS )    )HTTPException)Field)INTEGERVARCHAREnum
ForeignKey)MappedSessionmapped_columnrelationship)Base)CustomModelc                   @   s   e Zd ZU eddZedB ed< eddZedB ed< eddZ	edB ed< edddZ
edB ed< edd	dZedB ed
< edddZedB ed< edddZedB ed< eddZedB ed< eddZedB ed< edddZedB ed< dS )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groupIdgroup_id)__name__
__module____qualname__r   r   int__annotations__r   strr   r   r   r   r   r   r   r    r&   r&   2/var/www/html/RetailAPI/app/models/main/segment.pyr      s   
 r   c                   @   s  e Zd ZU dZededddZee e	d< ede
dddZee e	d< ed	ed
dddddZee e	d	< ededdddddddddZee e	d< ededdddddddddZee e	d< ededdddddd dd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
d$ddZee e	d#< ed%eed&ddZee e	d%< ed'd(d)Zed*ed+ed,d fd-d.Zeded+ed,d/fd0d1Zed%ed+ed,d fd2d3Zeded*ed+ed,d/fd4d5Zeded+ed,e fd6d7Z!d8S )9
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   zUpto Class 5 Standardeducation_levels_femaler   r   r      r   ztbl_group.group_idTblGroupsegment)back_populatesdatadbreturnc                 C   s,   |  }| di |}|| |  |S )Nr&   )
model_dumpaddflush)clsr<   r=   	data_dictnew_datar&   r&   r'   create5   s
   
zTblSegment.createzTblSegment | Nonec                 C   s   | | | j|k S N)queryfilterr   first)rB   r   r=   r&   r&   r'   	get_by_id=   s   zTblSegment.get_by_idc                 C   s.   | | | j|k }|stddd|S )Ni  z Segment not found for this Group)status_codedetail)rG   rH   r   rI   r   )rB   r   r=   r:   r&   r&   r'   get_by_group_idA   s   zTblSegment.get_by_group_idc                 C   s^   | | | j|k }|sd S | }| D ]\}}|d ur't||| q|| |S rF   )rG   rH   r   rI   r?   itemssetattrrefresh)rB   r   r<   r=   get_datarC   keyvaluer&   r&   r'   updateH   s   
zTblSegment.updatec                 C   s8   | | | j|k }|sdS || |  dS )NFT)rG   rH   r   rI   deletecommit)rB   r   r=   objr&   r&   r'   rU   T   s   
zTblSegment.deleteN)"r    r!   r"   __tablename__r
   r   r   r   r#   r$   r   r   r%   r   r   r   r   r   r   r   r   r   r   r   groupclassmethodr   r	   rE   rJ   rM   rT   boolrU   r&   r&   r&   r'   r(      sF   
 $ r(   N)fastapir   pydanticr   
sqlalchemyr   r   r   r   sqlalchemy.ormr   r	   r
   r   app.models.mainr   app.utils.schemas_utilsr   r   r(   r&   r&   r&   r'   <module>   s    