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
ed
kreejdkrejd Zedkr|e	  qedkre
  qe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...zu
            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 your backend: python main.pyz82. Create tokens: python setup_multi_dev.py create-token)printr   r   connectexecuter   commit)engineconn r   ./setup_multi_dev_clean.pymain   s    
r   c               
   C   s   t d } | std d S tt}zl| Z}dtd }|t	d| ||  dd |
  td|  d	 t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Developer name is 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 created for :z   zError creating token: )inputstripr   r   r   r   secretsZtoken_urlsafer   r   r   	Exception)Zdeveloper_namer	   r
   r   er   r   r   create_token1   s&    

	r   c               
   C   s   t t} z|  }|td}| }|sFtd W 5 Q R  W d S td td |D ]N}|d rjdnd}td|d	   td
|d   td|  td qZW 5 Q R X W n0 tk
r } ztd|  W 5 d }~X Y nX d S )Nz
                SELECT developer_id, api_token, token_name, created_at, is_active
                FROM developer_api_tokens 
                ORDER BY created_at DESC
            zNo tokens found.zExisting API Tokens:zP================================================================================   ZActiveZInactivezDeveloper: r   zToken:    zStatus: zP--------------------------------------------------------------------------------zError listing tokens: )r   r   r   r   r   Zfetchallr   r   )r	   r
   resulttokensr   statusr   r   r   r   list_tokensN   s$    
r   __main__r   zcreate-tokenzlist-tokenszUsage:zA  python setup_multi_dev.py              - Set up database tablesz7  python setup_multi_dev.py create-token - Create tokenz6  python setup_multi_dev.py list-tokens  - Show tokens)ossysr   Z
sqlalchemyr   r   Zdatabaser   r   r   r   __name__lenargvZcommandr   r   r   r   r   <module>   s&   *

