o
    $|jü
  ã                   @   s²   d dl Z d dlZd dlmZ d dlmZ dede jfdd„Zdedede	fd	d
„Z
dededdfdd„Zdedede	fdd„Zdededdfdd„Zdedededdfdd„ZdS )é    N)ÚPath)ÚSettingsÚsettingsÚreturnc                 C   sD   t | jƒ}|jjddd� t |¡}| d¡ | d¡ | ¡  |S )NT)ÚparentsÚexist_okz–
        CREATE TABLE IF NOT EXISTS processed_events (
            event_key TEXT PRIMARY KEY,
            created_at REAL NOT NULL
        )
        zî
        CREATE TABLE IF NOT EXISTS conversation_state (
            conversation_id TEXT PRIMARY KEY,
            menu_sent INTEGER NOT NULL DEFAULT 0,
            last_option TEXT,
            updated_at REAL NOT NULL
        )
        )r   Úevent_store_pathÚparentÚmkdirÚsqlite3ÚconnectÚexecuteÚcommit)r   Údb_pathÚ
connection© r   úA/var/www/html/macrobase-freshchat-api/app/services/event_store.pyÚ_connect   s   

ÿÿ
r   Ú	event_keyc                 C   sF   t | ƒ�}| d|f¡ ¡ }|d uW  d   ƒ S 1 sw   Y  d S )Nz2SELECT 1 FROM processed_events WHERE event_key = ?)r   r   Úfetchone)r   r   r   Úrowr   r   r   Úis_event_processed"   s   
þý$ûr   c                 C   óJ   t | ƒ�}| d|t ¡ f¡ | ¡  W d   ƒ d S 1 sw   Y  d S )NzLINSERT OR IGNORE INTO processed_events (event_key, created_at) VALUES (?, ?)©r   r   Útimer   )r   r   r   r   r   r   Úmark_event_processed+   s   

þ
"ûr   Úconversation_idc                 C   sN   t | ƒ�}| d|f¡ ¡ }t|o|d ƒW  d   ƒ S 1 s w   Y  d S )NzBSELECT menu_sent FROM conversation_state WHERE conversation_id = ?r   )r   r   r   Úbool)r   r   r   r   r   r   r   Úwas_menu_sent4   s   
þý$ûr   c                 C   r   )Na  
            INSERT INTO conversation_state (conversation_id, menu_sent, updated_at)
            VALUES (?, 1, ?)
            ON CONFLICT(conversation_id) DO UPDATE SET
                menu_sent = 1,
                updated_at = excluded.updated_at
            r   )r   r   r   r   r   r   Úmark_menu_sent=   s   

ø

"õr   Ú	option_idc                 C   sL   t | ƒ�}| d||t ¡ f¡ | ¡  W d   ƒ d S 1 sw   Y  d S )Na*  
            INSERT INTO conversation_state (conversation_id, menu_sent, last_option, updated_at)
            VALUES (?, 1, ?, ?)
            ON CONFLICT(conversation_id) DO UPDATE SET
                last_option = excluded.last_option,
                updated_at = excluded.updated_at
            r   )r   r   r    r   r   r   r   Úset_last_optionL   s   
ø

"õr!   )r   r   Úpathlibr   Úapp.core.configr   Ú
Connectionr   Ústrr   r   r   r   r   r!   r   r   r   r   Ú<module>   s    			