o
    !bi                     @   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 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)Session)Booleanc                   @   s   e Zd ZdS )BaseN)__name__
__module____qualname__ r   r   A/home/crepu/Documents/todoyeso/scripts/descriptions/sqlalchemy.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eddZee ed	< eed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_name)default	hay_fotoshay_tamanosr   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/   boolr0   r	   r   r   r(   r   r   r   r   r   #   s   
 r   c                	   @   sn   e Zd Zdd Zddede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ef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__2   s   zDatabase.__init__Tr$   r-   r/   r0   c              
   C   X   zt ||||d}| j| | j  W d S  ty+ } z	td|  |d }~ww )N)r$   r-   r/   r0   zError adding category: )r   r3   addcommit	Exceptionprint)r'   r$   r-   r/   r0   r    er   r   r   add_category8      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: )r3   queryr   filterr-   firstr9   r:   )r'   r-   r;   r   r   r   get_categoryA   s   zDatabase.get_categoryr   r   r   r   c              
   C   r6   )N)r   r   r   r   zError adding image: )r   r3   r7   r8   r9   r:   )r'   r   r   r   r   r   r;   r   r   r   	add_imageI   r=   zDatabase.add_imagec              
   C   s6   z| j jW S  ty } z	td|  |d }~ww )NzError getting last record: )r3   newr9   r:   )r'   r;   r   r   r   last_recordR   s   
zDatabase.last_recordmodelc              
   C   st   z!|dkr| j t W S |dkr| j t W S td|  ty9 } ztd| d|  |d }~ww )Nr   r   zInvalid model: zError getting all z
 records: )r3   r>   r   allr   
ValueErrorr9   r:   )r'   rE   r;   r   r   r   get_allY   s   zDatabase.get_allN)TT)r   r   r   r5   r,   r1   r<   rA   r*   rB   rD   rH   r   r   r   r   r2   1   s    		r2   N)typingr   
sqlalchemyr   r   r   Zsqlalchemy.ormr   r   r   r	   r
   Zsqlalchemy.orm.sessionr   Zsqlalchemy.typesr   r   r   r   r2   r   r   r   r   <module>   s   