
    ^g,
              
       r   d dl mZmZmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dl 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mZmZ d dlmZ d d
lmZmZ d dlmZ d dlmZ  e       Zej1                  d       ed       ed       ee       ee      fdedededefd       Zej1                  d ee      g       ee       ee      fdedefd       Zej9                  d ee      g       eddd       edddd       ee       ee      fdeded edefd!       Zy)"    )	APIRouterDepends
UploadFileFormQuery)Session)funcdistinct)get_db)get_current_userupload_csv_file)r   r   add_external_data_source)r   r   HTTPException)ExternalDatasourceCreateInternalDatasourceCreate)fetch_datasource_by_branchz/upload-csv/.filestore_id	branch_iddbc                 <   K   t        | ||||       d{   S 7 w)z9API endpoint for uploading CSV files and processing them.Nr   )r   r   r   r   users        9/var/www/html/hubwallet-dev/src/apps/datasource/router.py
upload_csvr      s!      !xBEEEEs   z/add-external-source/)dependenciesdatac                     t        | ||      S )z
    API route to add an external data source (Protected route).
    - Requires user authentication.
    - Accepts `store_id`,`branch_id`, 'Source type', 'URL'
    - Returns a structured API response.
    r   )r   r   r   s      r   add_external_sourcer    "   s     $D"d33    z/{branch_id}/NzPage number (starts from 1)   )descriptiongezNumber of records per paged   )r#   r$   lepage	page_sizec                 4    t        || |j                  ||      S )a  
    API route to fetch datasource records by branch ID (Protected route).
    - Requires authentication.
    - Accepts `branch_id` as an integer.
    - If pagination (`page`, `page_size`) is provided, return paginated results.
    - If pagination is not provided, return all records.
    - Sorting Order: Status (`completed` > `pending` > `failed`), then `created_at` (latest first).
    )r   user_id)r   r'   r(   r   r   s        r   get_datasourcer+   3   s      &b)T\\4SSr!   )fastapir   r   r   r   r   sqlalchemy.ormr   
sqlalchemyr	   r
   src.utils.dbr   src.apps.auth.controllerr   src.apps.datasource.controllerr   r   r   src.apps.datasource.schemasr   r   r   routerpostintr   r    getr+    r!   r   <module>r8      s{   ? ? " %  5 : & "  5 C 5 5 " Z " E 
^ I#Y&/	!	"F
FF F 		F F $G<L4M3NO &/	!	"4
"44 P4  O73C+D*EF d(E!L4-IaTWX&/	!	"TT
T T 		T GTr!   