U
    [Mh                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZ dd Zdd Z	dd	 Z
d
d Zedkreejdkrejd Zedkre	  qedkre
  qedkre  qed ed ed ed ed ne  dS )    N)create_enginetext)DATABASE_URLc               	   C   s   t d tt} |  @}t d |td |td |td |  W 5 Q R X t d t d t d t d	 d S )
Nz&Setting up multi-developer tracking...zCreating database tables...z_CREATE INDEX IF NOT EXISTS idx_activity_records_developer_id ON activity_records(developer_id);a  
            CREATE TABLE IF NOT EXISTS activity_sessions (
                id SERIAL PRIMARY KEY,
                developer_id VARCHAR NOT NULL,
                session_start TIMESTAMP WITH TIME ZONE NOT NULL,
                session_end TIMESTAMP WITH TIME ZONE,
                total_active_time INTEGER DEFAULT 0,
                is_active BOOLEAN DEFAULT TRUE,
                created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
            );
        a  
            CREATE TABLE IF NOT EXISTS developer_api_tokens (
                id SERIAL PRIMARY KEY,
                developer_id VARCHAR NOT NULL,
                api_token VARCHAR UNIQUE NOT NULL,
                token_name VARCHAR DEFAULT 'Default Token',
                is_active BOOLEAN DEFAULT TRUE,
                created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
            );
        zDatabase setup complete!zNext steps:z"1. Restart backend: python main.pyz82. Create tokens: python setup_multi_dev.py create-token)printr   r   connectexecuter   commit)engineconn r   ./remove-all-tokens.pysetup_database   s    
r   c               
   C   s   t d } | std d S tt}zb| P}dtd }|t	d| ||  dd |
  td|  d	|  W 5 Q R X W n0 tk
r } ztd
|  W 5 d }~X Y nX d S )NzEnter developer name: zName required!ZAWToken_    z
                INSERT INTO developer_api_tokens (developer_id, api_token, token_name)
                VALUES (:dev_id, :token, :name)
            z Token)Zdev_idtokennamez
Token for z: Error: )inputstripr   r   r   r   secretsZtoken_urlsafer   r   r   	Exception)r   r	   r
   r   er   r   r   create_token2   s    

"r   c               
   C   s   t t} z|  v}|td}| }|sFtd W 5 Q R  W d S td |D ]0}td|d   td|d   td qRW 5 Q R X W n0 tk
r } ztd	|  W 5 d }~X Y nX d S )
NzQSELECT developer_id, api_token FROM developer_api_tokens ORDER BY created_at DESCzNo tokens found.zAPI Tokens:zDeveloper: r   zToken:    z2--------------------------------------------------r   )r   r   r   r   r   Zfetchallr   r   )r	   r
   resulttokensr   r   r   r   r   list_tokensI   s    
r   c               
   C   s   t d  } | dkr$td d S tt}z@| .}|td}|	  td|j
 d W 5 Q R X W n0 tk
r } ztd|  W 5 d }~X Y nX d S )Nz6Are you sure you want to delete ALL tokens? (yes/no): Zyesz
Cancelled.z DELETE FROM developer_api_tokenszDeleted z tokens.r   )r   r   lowerr   r   r   r   r   r   r   Zrowcountr   )Zconfirmr	   r
   r   r   r   r   r   remove_all_tokens^   s    
 r   __main__r   zcreate-tokenzlist-tokenszremove-all-tokenszUsage:z=  python setup_multi_dev.py                 - Set up databasez:  python setup_multi_dev.py create-token    - Create tokenz9  python setup_multi_dev.py list-tokens     - Show tokenszA  python setup_multi_dev.py remove-all-tokens - Delete all tokens)ossysr   Z
sqlalchemyr   r   Zdatabaser   r   r   r   r   __name__lenargvcmdr   r   r   r   r   <module>   s.   +

