o
    sgT4                     @   s.  d Z ddlZddlZddlmZ ddlmZ ddl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 dd	lmZ dd
lmZ ddlmZ G dd deZG dd deddZG dd deZdd ZG dd deZG dd deZG dd deZe dkri dddd d!d"d#g d$d%d&d'd(d)d*d+d,d-dd.d/d0d1d2ed3d4d5d6d7d6d8d1d9ed:d;d<d=ed:d;d>d=ed:d;d?d=ed:d;d@d=ed:d;dAd=ed:d;dBd=ed:d;dCd=ed:d;dDd=ed:d;dEd=ed:d;dFd=g
dGddHdIZ!edJi e!Z"e#e"$  dS dS )KClass to store company details    N)Decimal)List)	BaseModelfield_validator)	TIMESTAMPColumnIntegerString)func)LLMQuery)DynamoDB)Base)
parsed_urlc                   @   sB   e Zd ZU dZeed< eed< eed< edddedd Z	d	S )
ImageszClass to store image detailscountsrctypebeforemodec                 C   s   t |S )zconvert the count to int)int)cls	raw_count r   N/var/www/html/XCapMarket/services/company_profile/data_classes/company_info.pycreate_count   s   zImages.create_countN)
__name__
__module____qualname____doc__r   __annotations__strr   classmethodr   r   r   r   r   r      s   
 
r   c                   @   sB   e Zd ZU dZeed< eed< dZedB ed< dZ	edB ed< dS )LogozClass to store logo detailslogo_extensionlogo_urlN	logo_darklogo_format)
r   r   r   r    r   r!   r"   r'   boolr(   r   r   r   r   r$      s   
 r$   allow)extrac                   @   s  e Zd ZU dZeed< eed< dZee dB ed< g Z	ee dB ed< dZ
edB ed< dZedB ed< dZedB ed	< dZedB ed
< dZedB ed< dZedB ed< e ZedB ed< ej dZedB ed< e ZedB ed< ej dZedB ed< edddedefddZedddedefddZ edddedd Z!edddedd Z"dd Z#e$d d! Z%dS )"CompanyInfor   root_urlcompany_nameNimageslinkedinlogobusiness_modelindustrysectorstock_exchangestock_ticker
created_by%Y-%m-%d %H:%M:%Screated_datemodified_bymodified_dater   r   
raw_imagesc                 C   B   |du rdS t |dkrdS g }|D ]}|tdi | q|S .convert the list of images to the Images classNr   r   lenappendr   r   r<   images_listimager   r   r   create_images:      zCompanyInfo.create_imagesraw_logoc                 C   N   t |tr|S |du rtddddS |du rdS t|dkr dS tdi |S r?   FTr    )r'   r%   r&   Nr   
isinstancer$   rA   r   rH   r   r   r   create_logoI      
zCompanyInfo.create_logoc                 C   s*   t |tr	t|S t |ttkr|gS dS z0convert the raw linkedin into the accepted inputN)rM   listflatten_listr"   r   raw_linkedinr   r   r   create_linkedinY   s
   
zCompanyInfo.create_linkedinc                 C   2   |du r|j d }|dd dd  S |S z.convert the company name to the accepted inputNr-   zwww..r   datasplit
capitalizer   raw_company_nameraw_root_urlr   r   r   create_company_nameb      
zCompanyInfo.create_company_namec                 C       t  | _tj d| _dS z(Update the modified date and modified byr8   Nsocketgethostnamer:   datetimenowstrftimer;   selfr   r   r   update_modifyk      
zCompanyInfo.update_modifyc                 C   B   t | j} t }||j| }|du rt|  dtdi |S z"Get company info from the databaseNz not found in the database.r   r   urlr   get_itemcompany_info_table
ValueErrorr,   company_urldbcompany_info_datar   r   r   get_company_infop   s   
zCompanyInfo.get_company_info)&r   r   r   r    r"   r!   r/   r   r   r0   r1   r$   r2   r)   r3   r4   r5   r6   rg   rh   r7   ri   rj   rk   r9   r:   r;   r   r#   rR   rF   dictrO   rV   rb   rn   staticmethodr{   r   r   r   r   r,   &   s>   
 



r,   c                 C   s6   g }| D ]}t |tr|t| q|| q|S )N)rM   rR   extendrS   rB   )nested_list	flatteneditemr   r   r   rS   ~   s   
rS   c                   @   s  e Zd ZU dZeed< eed< dZee dB ed< g Z	ee dB ed< dZ
edB ed< dZedB ed< dZedB ed	< dZedB ed
< dZedB ed< dZedB ed< e ZedB ed< ej dZedB ed< e ZedB ed< ej dZedB ed< dZee dB ed< edddedefddZ edddede!fddZ"edddedd Z#edddedd Z$dd  Z%e&d!d" Z'dS )#FundInfor   r-   r.   Nr/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   LLM_resultsr   r   r<   c                 C   r=   r>   r@   rC   r   r   r   rF      rG   zFundInfo.create_imagesrH   c                 C   rI   rJ   rL   rN   r   r   r   rO      rP   zFundInfo.create_logoc                 C   s&   t |tr|S t |ttkr|gS dS rQ   )rM   rR   r"   rT   r   r   r   rV      s
   
zFundInfo.create_linkedinc                 C   rW   rX   r[   r_   r   r   r   rb      rc   zFundInfo.create_company_namec                 C   rd   re   rf   rl   r   r   r   rn      ro   zFundInfo.update_modifyc                 C   rp   rq   rr   rw   r   r   r   r{      s   
zFundInfo.get_company_info)(r   r   r   r    r"   r!   r/   r   r   r0   r1   r$   r2   r)   r3   r4   r5   r6   rg   rh   r7   ri   rj   rk   r9   r:   r;   r   rR   r   r   r#   rF   r|   rO   rV   rb   rn   r}   r{   r   r   r   r   r      s@   
 



r   c                   @   s   e Zd ZdZdZeeddddZeeddddZ	eedddZ
eed	ddZeee d
Zeee e dZedefddZdd ZdS )CompanyInfoModelSqlz#MySQL table for company informationcompany_infoTprimary_keyindexautoincrement   Funiquenullabler   2   server_defaultr   onupdatesearch_termc                 C   s`   | j d| d| jd| dB | jd| dB g}| j d| d g}||fS zK
        Generate filters and order_by for searching company info.
        %)r.   liker-   tickerdescr   r   filtersorder_byr   r   r   search_filters   s   z"CompanyInfoModelSql.search_filtersc                 C   s   | j | j| j| jdS )!Convert the class to a dictionaryidr-   r.   r   r   rl   r   r   r   to_dict   s
   zCompanyInfoModelSql.to_dictN)r   r   r   r    __tablename__r   r	   r   r
   r-   r.   r   r   r   rj   
created_at
updated_atr#   r"   r   r   r   r   r   r   r      s    r   c                   @   s   e Zd ZdZdZeeddddZeeddddZ	eedddZ
eee d	Zeee e d
ZedefddZdd ZdS )FundInfoModelSqlz MySQL table for fund information	fund_infoTr   r   Fr   r   r   r   r   c                 C   sL   | j d| d| jd| dB g}| j d| d g}||fS r   )r.   r   r-   r   r   r   r   r   r     s   zFundInfoModelSql.search_filtersc                 C   s   | j | j| jdS )r   r   r-   r.   r   rl   r   r   r   r     s   zFundInfoModelSql.to_dictN)r   r   r   r    r   r   r	   r   r
   r-   r.   r   r   rj   r   r   r#   r"   r   r   r   r   r   r   r     s    r   __main__r6   Ur-   zhttps://www.unity.comr;   z2024-02-13 12:45:32r0   )z(https://www.linkedin.com/in/anirmagupta/z1https://www.linkedin.com/in/jessica-lindl-8b73a5/z8https://www.linkedin.com/in/luis-felipe-visoso-aa841a22/z2https://www.linkedin.com/in/scott-pitasky-4999891/z6https://www.linkedin.com/company/unity/life/inclusion/z)https://www.linkedin.com/in/katie-stocks/z3https://www.linkedin.com/company/unity-technologiesz)https://www.linkedin.com/in/tomerbarzeev/z,https://www.linkedin.com/in/carolwcarpenter/zChttps://www.linkedin.com/company/unity-technologies/life/inclusion/z&https://www.linkedin.com/in/lualmayen/z4https://www.linkedin.com/in/thomas-winkley-783b4713/z1https://www.linkedin.com/in/clive-downie-2003b07/z)https://www.linkedin.com/in/lucbarthelet/z1https://www.linkedin.com/in/oleg-sysoev-4b11122b/z(https://www.linkedin.com/in/marcwhitten/z"https://linkedin.com/company/unityr4   zServices-Prepackaged Softwarer7   z
Sagar-Asusr9   z2023-12-29 20:56:14r3   
Technologyr5   r:   zip-172-31-27-207r1   Tz5https://asset.brandfetch.io/idEc0EPR9J/idlfYmkSwj.svg1)r'   r&   r%   nameUnityr.   scrappedr/   1000imgz0https://cdn.langeek.co/photo/26028/original/none)r   r   r   z\https://as2.ftcdn.net/v2/jpg/00/73/00/39/500_F_73003953_DVFZYwH4iXxOlsNSVqljeqkNBg6xIUDM.jpgzhttps://merriam-webster.com/assets/mw/images/video/vid-video-play-lg/is-none-singular-or-plural-video-1753-06bba640fa47b87641138f8d2f0e600b@1x.jpgzjhttps://play-lh.googleusercontent.com/LECOTVlGWVclV1VU3-1YcNoQdF2f37jQaQhX353GkySuwK9EcPXgy92YgKB3QeNvZMXezWhttps://i0.wp.com/www.affordableeditingservices.com/wp-content/uploads/2016/08/None.jpgz0https://i.ytimg.com/vi/UH9uKJkkhZA/sddefault.jpgz4https://i.ytimg.com/vi/tnHbeCHApOw/maxresdefault.jpgzhttps://www.shutterstock.com/shutterstock/photos/1504674191/display_1500/stock-vector-none-vector-hand-drawn-illustration-with-cartoon-lettering-good-as-a-sticker-video-blog-cover-1504674191.jpgz<https://steamcdn-a.akamaihd.net/steam/apps/398970/header.jpgz7https://cdn.langeek.co/photo/19923/original/none-vs-nonr2   modified_Datez2024-02-02 23:35:05r   )%r    ri   rg   decimalr   typingr   pydanticr   r   
sqlalchemyr   r   r	   r
   sqlalchemy.sqlr   1services.company_profile.data_classes.llm_resultsr   utils.dynamo_dbr   utils.mysql_dbr   utils.url_parserr   r   r$   r,   rS   r   r   r   r   	comp_dictr   print
model_dumpr   r   r   r   <module>   s    X
Y!
"#$%YZ]