
    lh              
       6   d dl mZ d dlmZmZmZ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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  d dl!m"Z"  eddg      Z#e#jI                  ded       eddd       edddd       e        ee      fde%de%dedefd       Z&e#jI                  ded       ee      fd e%defd!       Z'e#jQ                  ded"d#$       ee      fd%edefd&       Z)e#jU                  ded'       ee      fd e%d%edefd(       Z+e#jQ                  d)ed*       ed+d,-      d. ed+d/-       ee      fd e%d0e"e,   d1edefd2       Z-e#jI                  d3ed4       ed+d,-       ed+d5-       ee      fd e%d6e%defd7       Z.e#j_                  ded8       ee      fd e%defd9       Z0e#jQ                  d:d;<       ee      fd=e%defd>       Z1e#jI                  d?d@<       ed+d,-       ee      fdAe%defdB       Z2y.)C    )Session)	
UploadFileFileForm	APIRouterDependsHTTPExceptionstatusQueryPath)ResponseModel)
WebCrawler)WebCrawlerCreateWebCrawlerFilterSchemaWebCrawlerResponseWebCrawlerUpdate)web_crawler)get_db)get_current_user)FileResponseSchema)create_file)Optionalz/web-crawlersweb_crawlers)prefixtags z"List all web crawlers with filters)response_modelsummary   zPage number for pagination)gedescription
   d   zNumber of records per page)r    ler!   pageper_pagefiltersdbc                 R    t        j                  || ||      }t        |ddd      S )N)r%   r&   r'      Tz!Web crawlers fetched successfullydatastatus_codesuccessmessage)web_crawler_serviceget_web_crawlersr   )r%   r&   r'   r(   	paginateds        b/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/web_crawler/routers/web_crawler.pylist_web_crawlersr4      s-     $44RdX_fgIiS$Pstt    z/{crawler_id}zGet a web crawler by ID
crawler_idc                 T   K   t        j                  ||       }t        |ddd      S w)Nr*   Tz Web crawler fetched successfullyr+   )r0   get_web_crawlerr   )r6   r(   crawlers      r3   r8   r8       s,     
 "11"jAGg3Npqq   &(   zCreate a new web crawler)r   r-   r   payloadc                 z   K   t        j                  ||       }t        t        j                  |      ddd      S w)Nr;   Tz Web crawler created successfullyr+   )r0   create_web_crawlerr   r   from_orm)r<   r(   createds      r3   r>   r>   )   s>     
 "44RAG((12	 s   9;zUpdate a web crawler by IDc                 |   K   t        j                  || |      }t        t        j                  |      ddd      S w)Nr*   Tz Web crawler updated successfullyr+   )r0   update_web_crawlerr   r   r?   )r6   r<   r(   updateds       r3   rB   rB   7   s@      "44RWMG((12	 s   :<z/{crawler_id}/uploadzUpload a file to a web crawler.zWeb Crawler ID)r!   NzFile to upload
is_historyfilec                    K   t        ||||        d {   }t        t        j                  |      ddd      S 7 &w)N)upload_filerD   r6   r;   Tz&File uploaded and created successfullyr+   )r   r   r   model_validate)r6   rD   rE   r(   created_files        r3   upload_file_to_web_crawlerrJ   F   sF      %RTj]ghhL..|<8	  is   ><'>z/{crawler_id}/preview-filezPreview a web crawler filezNumber of rows to previewrowsc                 j   K   t        j                  || |       d {   }t        |ddd      S 7 w)Nr*   Tz!File preview fetched successfullyr+   )r0   preview_filer   )r6   rK   r(   preview_datas       r3   rM   rM   U   s>      -99"j$OOL3	  Ps   313zSoft delete a web crawlerc                 T   K   t        j                  ||        t        d ddd      S w)Nr*   Tz Web crawler deleted successfullyr+   )r0   soft_delete_web_crawlerr   )r6   r(   s     r3   delete_web_crawlerrQ   e   s*     
 //J?dTKmnnr:   z/{match_crawler_id}/runzRun a match config job)r   match_crawler_idc                 h    t        j                  || d      }t        d|j                  iddd      S )Nr   )r(   rR   created_by_idfile_urlz8CSV generated and file attached to crawler successfully.Tr*   r,   r/   r.   r-   )r0   generate_csv_from_xmlr   full_url)rR   r(   csv_files      r3   
run_configrZ   q   s>     #88BQaqrsH(++,J	 r5   z/{webcrawler_id}/column-indexesz*Get column names and indexes from CSV filewebcrawler_idc                 L    t        j                  ||       }t        |ddd      S )Nz%Column indexes retrieved successfullyTr*   rV   )r0   get_column_indexes_servicer   )r[   r(   columnss      r3   get_column_indexesr_      s-    !<<ROG7	 r5   )3sqlalchemy.ormr   fastapir   r   FastAPIFiler   r   r   r	   r
   r   r   $src.apps.base.schemas.response_modelr   'src.apps.web_crawler.models.web_crawlerr   (src.apps.web_crawler.schemas.web_crawlerr   r   r   r   src.apps.web_crawler.servicesr   r0   src.core.dependenciesr   src.utils.guardr   src.apps.files.schemas.filer   )src.apps.web_crawler.services.web_crawlerr   typingr   routergetintr4   r8   postr>   putrB   boolrJ   rM   deleterQ   rZ   r_    r5   r3   <module>rt      s   " q q q > >  M ( , : A 	/0@	A B}6Z[aA+GH"s8TU&-i&/	u
uu $u 		u \u OMC\] &/rrr ^r R3Hbc &/


 d
 OMC_` &/ 	 a #MKkl3,<=!%"34DE&/	  		 m (Plm3,<=c'BC&/
 	 n }Fab &/ooo co &0HI &/ J  -7cd,0BR,Scjkqcr c Y`  er5   