o
    ruid
                     @   s   d dl mZ d dlmZmZmZ d dlmZmZm	Z	m
Z
mZ d dlmZ G dd deZG dd deZG d	d
 d
eZG dd dZdS )    )List)
ForeignKeyStringcreate_engine)DeclarativeBaseMappedmapped_columnrelationshipsessionmaker)Sessionc                   @   s   e Zd ZdS )BaseN)__name__
__module____qualname__ r   r   F/home/crepu/Documents/todoyeso/scripts/descriptions/sqlalchemy_test.pyr      s    r   c                   @   s   e Zd ZU dZeddZee ed< ee	dZ
ee ed< ee	dZee ed< ee	dZee ed	< eed
Zee ed< edddZed ed< defddZdS )ImageimageTZprimary_keyid   ia_name	file_namei  descriptionzcategory.idcategory_idimagesall, delete-orphanZback_populatesZcascadeCategorycategoryreturnc                 C   s   d| j d| jd| jdS )NzUser(id=, name=z, fullname=))r   namefullnameselfr   r   r   __repr__   s   zImage.__repr__N)r   r   r   __tablename__r   r   r   int__annotations__r   r   strr   r   r   r   r	   r   r'   r   r   r   r   r      s   
 r   c                   @   s   e Zd ZU dZeddZee ed< ee	dZ
ee ed< ee	dZee ed< eddd	Zeed
  ed< defddZdS )r   r   Tr   r   r   r#   dir_namer   r   r   r   r    c                 C   s   d| j d| jdS )NzCategory(id=r!   r"   )r   r#   r%   r   r   r   r'   +   s   zCategory.__repr__N)r   r   r   r(   r   r   r   r)   r*   r   r#   r+   r,   r	   r   r   r'   r   r   r   r   r   #   s   
 r   c                   @   sV   e Zd Zdd ZdedefddZdefddZd	ed
ededefddZdd Z	dS )Databasec                 C   s0   t ddd| _tt | j| _tj| j d S )Nzsqlite+pysqlite:///./db.sqlite3T)Zecho)r   Zenginer
   r   sessionr   metadataZ
create_allr%   r   r   r   __init__0   s   zDatabase.__init__r#   r,   c              
   C   sT   zt ||d}| j| | j  W d S  ty) } z	td|  |d }~ww )N)r#   r,   zError adding category: )r   r.   addcommit	Exceptionprint)r&   r#   r,   r   er   r   r   add_category6   s   zDatabase.add_categoryc              
   C   sJ   z| j ttj|k W S  ty$ } z	td|  |d }~ww )NzError getting category: )r.   queryr   filterr,   firstr3   r4   )r&   r,   r5   r   r   r   get_category?   s   zDatabase.get_categoryr   r   r   r   c              
   C   sX   zt ||||d}| j| | j  W d S  ty+ } z	td|  |d }~ww )N)r   r   r   r   zError adding image: )r   r.   r1   r2   r3   r4   )r&   r   r   r   r   r   r5   r   r   r   	add_imageF   s   zDatabase.add_imagec              
   C   s6   z| j jW S  ty } z	td|  |d }~ww )NzError getting last record: )r.   newr3   r4   )r&   r5   r   r   r   last_recordO   s   
zDatabase.last_recordN)
r   r   r   r0   r+   r6   r:   r)   r;   r=   r   r   r   r   r-   /   s    		r-   N)typingr   Z
sqlalchemyr   r   r   Zsqlalchemy.ormr   r   r   r	   r
   Zsqlalchemy.orm.sessionr   r   r   r   r-   r   r   r   r   <module>   s   