o
    Dzi                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ e ZedZde d	ZeeZe Zed
d
edZdZedededede	dfde de!de!dee
 fddZ"dS )    N)ListOptional)	APIRouterFormFile
UploadFileHTTPException)create_engineMetaDataTableColumnIntegerTextinsert)sessionmaker)
quote_pluszGOALSkill_99!@zmysql+pymysql://GOALSkill:z@localhost/Theory_DBF)
autocommit	autoflushbindz/home/air/goalskill_t/back/img/z/goal-skill-t/api/save_content. chapter_numcustom_chapterblocks_jsonfilesc                    s  zt |}W n t jy   tdddw d|  }z	t|ttd}W n; ty` } z/t|ttdt	ddtd	t
td
t
tdt
tdt
tdt
tdt
tdt
dd}W Y d}~nd}~ww tjtd|  }tj|dd g }	|dd}
i }d}|D ]}|d}|d}|dkr||
d
< q|dkr|r|dr|	| |
d	 |
d
 |ddddd}q|r?|dkr|d r|d  d| 7  < q||d< q|dkr||d< q|dkr||d< q|dkr?|r?|t|k r?|| }|d 7 }t|}t|d  }tj|jd  }|sd!}| | }tj||}t|d"}t|j| W d   n	1 s6w   Y  ||d< q|rN|drN|	| |	sVd#d$d%S t }|t||	 |  W d   n	1 srw   Y  d&t|	d'S )(ur   
    콘텐츠를 받아서 소제목(sub_title) 단위로 묶어 DB에 저장하고, 이미지를 저장함.
    i  zInvalid JSON format)status_codedetailsection_)autoload_withidT)primary_keychapter
main_title	sub_titletheory_descriptiontipimgimg_description)extend_existingNsection)exist_ok)r    r!   r   typevaluez	big-titlezsmall-title)r    r!   r"   r#   r$   r%   r&   theoryz

advicez
image-descimage   z.pngwboku;   저장할 데이터가 없습니다 (소제목 누락 등).)statusmessagesuccess)r2   inserted_rows)jsonloadsJSONDecodeErrorr   r   metadata_objengine	Exceptionr   r   r   ospathjoinBASE_IMG_PATHmakedirsgetappendlenlistdirsplitextfilenameopenshutilcopyfileobjfileconnectexecuter   commit)r   r   r   r   blocks
table_nametableesave_dirrows_to_insertcurrent_contextpending_rowfile_idxblockb_typeb_valueuploaded_fileexisting_filesnext_numextnew_filename	file_pathbufferconn rb   </home/air/goalskill_sales/back/app/routers/capture_router.pysave_content   s   














rd   )#r<   rH   r6   typingr   r   fastapir   r   r   r   r   
sqlalchemyr	   r
   r   r   r   r   r   sqlalchemy.ormr   urllib.parser   routerpasswordDB_URLr:   r9   SessionLocalr?   postintstrrd   rb   rb   rb   rc   <module>   s:    $