o
    h                     @   s|   d Z ddlZddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ejd ddlmZmZ G d	d
 d
eZdS )zl
Database models for the Aiguid Backend API.
Imports User model from /opt/aiguide and defines local models.
    N)datetime)Optional)BooleanColumnDateTimeIntegerString)funcz/opt/aiguide/app/models)BaseUserc                   @   s   e Zd ZU dZdZeedddZee	d< eedddZ
ee	d< eed	ddd
Zee	d< eeddddZee	d< eedde ddZee	d< eedddZee	d< defddZedefddZdS )UserSessionz0User session model for tracking active sessions.user_sessionsT)primary_keyindexidF)nullabler   user_id   )r   unique
token_hash)timezone)r   
expires_at)server_defaultr   
created_at)defaultr   	is_activereturnc                 C   s   d| j  d| j d| j dS )Nz<UserSession(id=z
, user_id=z	, active=z)>)r   r   r   self r   	models.py__repr__"   s   zUserSession.__repr__c                 C   s   t  | jkS )zCheck if session is expired.)r   utcnowr   r   r   r   r    
is_expired%   s   zUserSession.is_expiredN)__name__
__module____qualname____doc____tablename__r   r   r   int__annotations__r   r   r   strr   r   r   r	   nowr   r   r   boolr!   propertyr#   r   r   r   r    r      s    
 r   )r'   sysr   typingr   
sqlalchemyr   r   r   r   r   sqlalchemy.sqlr	   pathappend	models_dbr
   r   r   r   r   r   r    <module>   s    