
    i                         U d Z ddlZddlZddlmZ ddlmZ  e       Zee   e	d<   defdZ
defdZd	ed
eddfdZd	edee   fdZy)z>
SQLite-backed storage helpers for Vue graph editor payloads.
    N)Path)Optional_INITIALIZED_PATHSreturnc                  @    t        t        j                  dd            S )z=Resolve the SQLite database path, allowing overrides via env.VUEGRAPHS_DB_PATHzdata/vuegraphs.db)r   osgetenv     N/Users/bowang/.openclaw/workspace/ChatDev/server/services/vuegraphs_storage.py_get_db_pathr      s    		-/BCDDr   c                  D   t               } | t        vs| j                         sq| j                  j	                  dd       t        j                  |       5 }|j                  d       |j                          ddd       t        j                  |        | S # 1 sw Y    xY w)zBCreate the SQLite database and table if they do not already exist.T)parentsexist_okz
                CREATE TABLE IF NOT EXISTS vuegraphs (
                    filename TEXT PRIMARY KEY,
                    content TEXT NOT NULL
                )
                N)
r   r   existsparentmkdirsqlite3connectexecutecommitadd)db_path
connections     r   _ensure_db_initializedr      s    nG((0@TD9__W%  & 	w'N &%s   "BBfilenamecontentc                     t               }t        j                  |      5 }|j                  d| |f       |j	                          ddd       y# 1 sw Y   yxY w)z>Insert or update the stored content for the provided filename.z
            INSERT INTO vuegraphs (filename, content)
            VALUES (?, ?)
            ON CONFLICT(filename) DO UPDATE SET content=excluded.content
            N)r   r   r   r   r   )r   r   r   r   s       r   save_vuegraph_contentr    &   sO    $&G		!Z
 w	
 	 
"	!	!s   %AAc                     t               }t        j                  |      5 }|j                  d| f      }|j	                         }|r|d   ndcddd       S # 1 sw Y   yxY w)z<Return the stored content for filename, or None when absent.z0SELECT content FROM vuegraphs WHERE filename = ?r   N)r   r   r   r   fetchone)r   r   r   cursorrows        r   fetch_vuegraph_contentr%   5   sU    $&G		!Z##>K
 oos1v$ 
"	!	!s   ,AA)__doc__r	   r   pathlibr   typingr   setr   __annotations__r   r   strr    r%   r   r   r   <module>r,      sv    
    !$ CI %Ed E
 &C # $ 	'S 	'Xc] 	'r   