o
    h&                     @   s   d dl mZmZmZ d dlZd dlmZ d dlmZ d dlm	Z	 ede
Zejddgd	d
d Zejddgd	dd Zejddgd	dd Zejddgd	dd ZdS )    )	BlueprintrequestjsonifyN)datetime)false)get_db_connectioncomponent_selectionz/save_component_selectionPOST)methodsc            	   
   C   s   zSt  } | d}| di }| di }|s!tddidfW S t }| }|d t|}t|}|d|||f |	  |
  |
  td	d
dW S  ty{ } ztdt|  tddt| idfW  Y d }~S d }~ww )Nfile_idselected_componentsbridge_infoerror   파일 ID가 필요합니다.  a}  
            CREATE TABLE IF NOT EXISTS component_selection (
                id SERIAL PRIMARY KEY,
                file_id TEXT NOT NULL UNIQUE,
                selected_components TEXT NOT NULL,
                bridge_info TEXT,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        a  
            INSERT INTO component_selection 
            (file_id, selected_components, bridge_info, created_at, updated_at)
            VALUES (%s, %s, %s, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            ON CONFLICT (file_id) 
            DO UPDATE SET 
                selected_components = EXCLUDED.selected_components,
                bridge_info = EXCLUDED.bridge_info,
                updated_at = CURRENT_TIMESTAMP
        Tu1   부재 선택 데이터가 저장되었습니다.successmessageu'   부재 선택 데이터 저장 오류: )   저장 중 오류가 발생했습니다:   r   get_jsongetr   r   cursorexecutejsondumpscommitclose	Exceptionprintstr)	datar   r   r   connr   selected_components_jsonbridge_info_jsone r'   F/home/skpark/git/infrasmart_work/infrasmart/api/component_selection.pysave_component_selection   s6   



	
&r)   z/get_component_selectionGETc                  C   s.  znt jd} | stddidfW S t }| }|d| f | }|  |  |rW|d r9t	
|d ni }|d rFt	
|d ni }td|||d	 |d
 dW S tddddddddddddddddddW S  ty } ztdt|  tddt| idfW  Y d }~S d }~ww )Nr   r   r   r   z
            SELECT selected_components, bridge_info, created_at, updated_at
            FROM component_selection 
            WHERE file_id = %s
        r      T      )r   r   r   
created_at
updated_at)slabgirder	crossbeamabutmentpier
foundationbearingexpansionJointpavementdrainagerailingcarbonationUppercarbonationLoweru$   저장된 데이터가 없습니다.)r   r   r   r   u'   부재 선택 데이터 조회 오류: )   조회 중 오류가 발생했습니다: r   r   argsr   r   r   r   r   fetchoner   r   loadsr   r    r!   )r   r#   r   rowr   r   r&   r'   r'   r(   get_component_selectionD   sB   

&rC   z/save_bridge_infoc                  C   sB  zxt  } | d}| di }|stddidfW S t }| }|d |dd}|d	d}|d
d}|dd}|dd}	|dd}
|dd}t|}|d||||||	|
||f	 |	  |
  |
  tdddW S  ty } ztdt|  tddt| idfW  Y d }~S d }~ww )Nr   r   r   r   r   as  
            CREATE TABLE IF NOT EXISTS bridge_info (
                id SERIAL PRIMARY KEY,
                file_id TEXT NOT NULL UNIQUE,
                bridge_name TEXT,
                structure_type TEXT,
                span_count INTEGER,
                carbonation_upper_positions TEXT,
                carbonation_lower_positions TEXT,
                chloride_upper_positions TEXT,
                chloride_lower_positions TEXT,
                additional_info TEXT,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        
bridgeName structureType	spanCountr   carbonationUpperPositionscarbonationLowerPositionschlorideUpperPositionschlorideLowerPositionsa  
            INSERT INTO bridge_info 
            (file_id, bridge_name, structure_type, span_count, 
             carbonation_upper_positions, carbonation_lower_positions,
             chloride_upper_positions, chloride_lower_positions,
             additional_info, created_at, updated_at)
            VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
            ON CONFLICT (file_id) 
            DO UPDATE SET 
                bridge_name = EXCLUDED.bridge_name,
                structure_type = EXCLUDED.structure_type,
                span_count = EXCLUDED.span_count,
                carbonation_upper_positions = EXCLUDED.carbonation_upper_positions,
                carbonation_lower_positions = EXCLUDED.carbonation_lower_positions,
                chloride_upper_positions = EXCLUDED.chloride_upper_positions,
                chloride_lower_positions = EXCLUDED.chloride_lower_positions,
                additional_info = EXCLUDED.additional_info,
                updated_at = CURRENT_TIMESTAMP
        Tu'   교량 정보가 저장되었습니다.r   u   교량 정보 저장 오류: r   r   r   )r"   r   r   r#   r   bridge_namestructure_type
span_countcarbonation_upper_positionscarbonation_lower_positionschloride_upper_positionschloride_lower_positionsadditional_infor&   r'   r'   r(   save_bridge_infot   sH   



&rT   z/get_bridge_infoc               
   C   s$  zit jd} | stddidfW S t }| }|d| f | }|  |  |ra|d r9t	
|d ni }td|d |d	 |d
 |d |d |d |d d||d |d dW S tdi ddW S  ty } ztdt|  tddt| idfW  Y d }~S d }~ww )Nr   r   r   r   aQ  
            SELECT bridge_name, structure_type, span_count,
                   carbonation_upper_positions, carbonation_lower_positions,
                   chloride_upper_positions, chloride_lower_positions,
                   additional_info, created_at, updated_at
            FROM bridge_info 
            WHERE file_id = %s
           Tr   r+   r,   r-            )rD   rF   rG   rH   rI   rJ   rK      	   )r   r   r.   r/   u(   저장된 교량 정보가 없습니다.)r   r   r   u   교량 정보 조회 오류: r=   r   r>   )r   r#   r   rB   rS   r&   r'   r'   r(   get_bridge_info   sN   	


&r[   )flaskr   r   r   r   r   
sqlalchemyr   utils.commonr   __name__component_selection_bprouter)   rC   rT   r[   r'   r'   r'   r(   <module>   s    

8
/
O