
    SjC                         d Z ddlZddlZddlmZ ddlZed        Zd Zdede	de	fd	Z
d
efdZdefdZddede	de	fdZdefdZy)uW   لایه دیتابیس ساده (SQLite) برای سفارش‌ها و کاربران.    N)contextmanagerc               #      K   t        j                  t        j                        } t         j                  | _        	 |  | j                          | j                          y # | j                          w xY wwN)sqlite3connectconfigDB_PATHRowrow_factorycommitclosecons    /var/www/traderbartar/db.py_connr   
   sH     
//&..
)CkkCO	

				s   9A6A! A6!A33A6c                  d    t               5 } | j                  d       d d d        y # 1 sw Y   y xY w)Nu  
            CREATE TABLE IF NOT EXISTS users (
                user_id     INTEGER PRIMARY KEY,
                username    TEXT,
                first_name  TEXT,
                created_at  INTEGER
            );

            CREATE TABLE IF NOT EXISTS orders (
                id          INTEGER PRIMARY KEY AUTOINCREMENT,
                user_id     INTEGER,
                product_key TEXT,
                title       TEXT,
                amount_toman INTEGER,
                method      TEXT,          -- 'toman' | 'usdt'
                status      TEXT,          -- pending | awaiting_review | paid | rejected
                txid        TEXT,          -- برای پرداخت تتر
                created_at  INTEGER,
                updated_at  INTEGER
            );
            )r   executescriptr   s    r   init_dbr      s1    	 
C	

 
 
s   &/user_idusername
first_namec                     t               5 }|j                  d| ||t        t        j                               f       d d d        y # 1 sw Y   y xY w)NzINSERT INTO users(user_id, username, first_name, created_at)
               VALUES(?,?,?,?)
               ON CONFLICT(user_id) DO UPDATE SET username=excluded.username,
                                                  first_name=excluded.first_namer   executeinttime)r   r   r   r   s       r   upsert_userr   0   sI    	 
CT h
C		,<=	

 
 
s   2AAreturnc                     t        t        j                               }t               5 }|j                  d| ||||d||f      }|j                  cd d d        S # 1 sw Y   y xY w)NzINSERT INTO orders(user_id, product_key, title, amount_toman,
                                  method, status, created_at, updated_at)
               VALUES(?,?,?,?,?,?,?,?)pending)r   r   r   r   	lastrowid)r   product_keytitleamount_tomanmethodnowr   curs           r   create_orderr(   ;   sa    
diik
C	 Ckk* k5,	3PST	
 }}  s   &AA!order_idc                     t               5 }|j                  d| f      j                         }|rt        |      nd cd d d        S # 1 sw Y   y xY w)NzSELECT * FROM orders WHERE id=?)r   r   fetchonedict)r)   r   rows      r   	get_orderr.   G   sE    	 *Ckk;h[IRRTtCyT* * *s   0AAstatustxidc           
      
   t               5 }|2|j                  d||t        t        j                               | f       n0|j                  d|t        t        j                               | f       d d d        y # 1 sw Y   y xY w)Nz;UPDATE orders SET status=?, txid=?, updated_at=? WHERE id=?z3UPDATE orders SET status=?, updated_at=? WHERE id=?r   )r)   r/   r0   r   s       r   set_order_statusr2   M   sp    	 
CKKMs499;/:
 KKETYY[)84
 
 
s   A%A99Bc                     t               5 }|j                  d| f      j                         }|D cg c]  }t        |       c}cd d d        S c c}w # 1 sw Y   y xY w)NzGSELECT * FROM orders WHERE user_id=? AND status='paid' ORDER BY id DESC)r   r   fetchallr,   )r   r   rowsrs       r   user_paid_ordersr7   [   s^    	 'C{{UJ
 (* 	 "&&AQ&' '
 '' 's   &AAAAAr   )__doc__r   r   
contextlibr   r   r   r   r   strr   r(   r.   r2   r7        r   <module>r=      s    ]   %   
6
 
 
 
	s 	* *s C s 'c 'r<   