
    ViY                        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 d dlmZmZmZmZmZ  e            Zer ee          ndZd	e d
e de de Z  ee           Z! e            Z" edde!          Z#eZ$e%                    d           ed           ed           ed           e	d          fde&de'de'dee
         fd            Z(dS )    N)ListOptional)	APIRouterFormFile
UploadFileHTTPException)create_engineMetaDataTableColumnIntegerTextinsert)sessionmaker)
quote_plus)DB_HOSTDB_USERDB_PASSWORDTHEORY_DB_NAMEIMG_PATH zmysql+pymysql://:@/F)
autocommit	autoflushbindz/save_content.chapter_numcustom_chapterblocks_jsonfilesc                   K   	 t          j        |          }n$# t           j        $ r t          dd          w xY wd|  }	 t	          |t
          t                    }n# t          $ r}t	          |t
          t          dt          d          t          d	t                    t          d
t                    t          dt                    t          dt                    t          dt                    t          dt                    t          dt                    d          }Y d}~nd}~ww xY wt          j                            t          d|            }t          j        |d           g }	|dd}
i }d}|D ]}|                    d          }|                    d          }|dk    r||
d
<   9|dk    rC|r*|                    d          r|	                    |           |
d	         |
d
         |ddddd}|r)|dk    r"|d         r|dxx         d| z  cc<   ||d<   |dk    r||d<   |dk    r||d<   |dk    r|r|t%          |          k     r||         }|d z  }t          j        |          }t%          |          d z   }t          j                            |j                  d          }|sd!}| | }t          j                            ||          }t-          |d"          5 }t/          j        |j        |           ddd           n# 1 swxY w Y   ||d<   |r*|                    d          r|	                    |           |	sd#d$d%S t                                          5 }|                    t9          |          |	           |                                 ddd           n# 1 swxY w 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/   r0   theoryz

advicez
image-descimage   z.pngwboku;   저장할 데이터가 없습니다 (소제목 누락 등).)statusmessagesuccess)r<   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conns                           "/app/app/routers/capture_router.pysave_contentrm      s     KK(( K K K4IJJJJK *K))J
j,fEEE 
 
 
 4d3339d##<&&;%%'..5$5$$d++ 
 
 

" w||M+B[+B+BCCHK4(((( N " O K H A3 A36""))G$$ [  ,3OL)) }$$ 3{{;; 3%%k222 +95-l;$&*#' KK  '	3!!34 @ 45559I9I9II55558?K 4558##%,E""<''18-..7"" 3XE

22$)(OMMH
 &(Z%9%9N">22Q6H '**=+ABB1EC,f&.#5#5#5L "X| D DI i.. G&*=+=vFFFG G G G G G G G G G G G G G G *3K&  +{{33 +k***  j+hiii			 TVE]]N333                #n2E2EFFFsE    !:A   
D-*B9D((D-2LL	 L	78N;;N?N?))rF   rR   r@   typingr   r   fastapir   r   r   r   r	   
sqlalchemyr
   r   r   r   r   r   r   sqlalchemy.ormr   urllib.parser   app.core.configr   r   r   r   r   routerpasswordDB_URLrD   rC   SessionLocalrI   postintstrrm        rl   <module>r}      s   				   ! ! ! ! ! ! ! ! D D D D D D D D D D D D D D T T T T T T T T T T T T T T T T T T ' ' ' ' ' ' # # # # # # S S S S S S S S S S S S S S 
 '29::k"""r	KG	K	Kh	K	K	K	K>	K	K	v		xzz|uFKKK _tCyy$r((tCyy"d4jj	HG HGHGHG HG 
	HG HG HG HG HG HGr|   