
    Oi                     l    d Z ddlZddlmZ ddlZ ej        dd          Zd Zd Zd Z	d	 Z
d
 Zd ZdS )u"   
PostgreSQL 数据库操作模块
    N)RealDictCursorDATABASE_URLzApostgresql://homerenovation:home123@localhost:5432/homerenovationc                  B    t          j        t          t                    S )u   获取数据库连接)cursor_factory)psycopg2connectr   r        =/home/ubuntu/projects/home-renovation-app/backend/database.pyget_db_connectionr      s    LHHHHr
   c           	      t   	 t                      }|                                }|                    d| |||||f           |                                 |                                 |                                 t          d|             dS # t          $ r}t          d|            Y d}~dS d}~ww xY w)u!   保存户型图信息到数据库zINSERT INTO layouts (layout_id, filename, file_size, upload_time, status, image_path)
               VALUES (%s, %s, %s, %s, %s, %s)u$   ✅ 户型图已保存到数据库: Tu   ❌ 数据库保存失败: NFr   cursorexecutecommitcloseprint	Exception)		layout_idfilename	file_sizeupload_timestatus
image_pathconncures	            r   save_layoutr      s     ""kkmm2)[&*M	
 	
 	

 			

@Y@@AAAt   /A//000uuuuus   BB 
B7B22B7c                 F   	 t                      }|                                }|                    d| f           |                                }|                                 |                                 |S # t
          $ r}t          d|            Y d}~dS d}~ww xY w)u!   从数据库查询户型图信息zwSELECT layout_id, filename, file_path, file_size, upload_time, status 
               FROM layouts WHERE layout_id = %s   ❌ 数据库查询失败: Nr   r   r   fetchoner   r   r   )r   r   r   rowr   s        r   
get_layoutr$   "   s     ""kkmm4L	
 	
 	

 llnn		


   /A//000ttttts   A6A9 9
B BB c                 J   	 t                      }|                                }|                    d| f           |                                du}|                                 |                                 |S # t
          $ r}t          d|            Y d}~dS d}~ww xY w)u   检查户型图是否存在z2SELECT layout_id FROM layouts WHERE layout_id = %sNr    Fr!   )r   r   r   existsr   s        r   layout_existsr'   4   s    
 ""kkmmH9,WWWt+		

   /A//000uuuuus   A8A; ;
B"BB"c                 x   	 t                      }|                                }	|	                    d| |||||||f           |                                 |	                                 |                                 t          d|             dS # t          $ r}
t          d|
            Y d}
~
dS d}
~
ww xY w)u   保存装修方案到数据库zINSERT INTO renovation_plans (plan_id, layout_id, style, room_type, view_name, image_base64, description, total_budget)
               VALUES (%s, %s, %s, %s, %s, %s, %s, %s)u!   ✅ 方案已保存到数据库: Tu   ❌ 方案保存失败: NFr   )plan_idr   style	room_type	view_nameimage_base64descriptiontotal_budgetr   r   r   s              r   	save_planr0   B   s     ""kkmm:i	9lKYef	
 	
 	

 			

;';;<<<t   ,,,---uuuuus   BB 
B9B44B9c                    K   ddl }|                                }	|	                    dt          | |||||||
  
         d{V  dS )u9   异步保存方案到数据库（通过线程池执行）r   N)asyncioget_event_looprun_in_executorr0   )
r)   r   r*   r+   r,   r-   r.   r/   r2   loops
             r   async_save_planr6   U   sx      NNN!!##D


E9i{T`          r
   )__doc__r   psycopg2.extrasr   osgetenvr   r   r   r$   r'   r0   r6   r	   r
   r   <module>r;      s      * * * * * * 				 ry)lmmI I I  &  $    &    r
   