o
    VPi                     @   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   ?/home/crepu/Documents/todoyeso/scripts/descriptions/database.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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)back_populatescascadeZsingle_parent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   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   r0   boolr1   r	   r   r   r)   r   r   r   r   r    "   s   
 r    c                	   @   s   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dedefddZdef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__1   s   zDatabase.__init__Tr%   r.   r0   r1   c              
   C      z*|   }t||||d}|| |  W d    W d S 1 s#w   Y  W d S  ty? } z	td|  |d }~ww )N)r%   r.   r0   r1   zError adding category: )r4   r    addcommit	Exceptionprint)r(   r%   r.   r0   r1   r4   r!   er   r   r   add_category7      


&zDatabase.add_categoryc              
   C   v   z%|   }|ttj|k W  d    W S 1 sw   Y  W d S  ty: } z	td|  |d }~ww )NzError getting category: )r4   queryr    filterr.   firstr:   r;   )r(   r.   r4   r<   r   r   r   get_categoryA      
(zDatabase.get_categoryr   r   r   r   c              
   C   r7   )N)r   r   r   r   zError adding image: )r4   r   r8   r9   r:   r;   )r(   r   r   r   r   r4   r   r<   r   r   r   	add_imageJ   r>   zDatabase.add_imagec              
   C   sb   z|   }|jW  d    W S 1 sw   Y  W d S  ty0 } z	td|  |d }~ww )NzError getting last record: )r4   newr:   r;   )r(   r4   r<   r   r   r   last_recordT   s   
(zDatabase.last_recordallmodeltypec              
   C   s   ze|   V}|dkrR|dkr|t W  d    W S |dkr4|ttj W  d    W S |dkrK|ttj W  d    W S td| W d    W d S 1 s^w   Y  W d S  ty} } zt	d| d|  |d }~ww )Nr    rH   picturessizezInvalid type: zError getting all z
 records: )
r4   r@   r    rH   rA   r0   r1   
ValueErrorr:   r;   )r(   rI   rJ   r4   r<   r   r   r   get_all\   s(   
	&
zDatabase.get_allc              
   C   r?   )NzError counting images: )r4   r@   r   rA   r   countr:   r;   )r(   r   r4   r<   r   r   r   count_imagesl   rD   zDatabase.count_imagesc              
   C   s   z5|   &}|ttj|k }|d ur!	 W d    W dS 	 W d    W dS 1 s.w   Y  W d S  tyJ } z	td|  |d }~ww )NTFz Error checking if image exists: )r4   r@   r   rA   r   rB   r:   r;   )r(   r   r4   r   r<   r   r   r   image_existst   s   
(zDatabase.image_existsN)TT)rH   )r   r   r   r6   r-   r2   r=   rC   r+   rE   rG   rN   rP   rQ   r   r   r   r   r3   0   s    
	
r3   N)typingr   Z
sqlalchemyr   r   r   Zsqlalchemy.ormr   r   r   r	   r
   Zsqlalchemy.orm.sessionr   Zsqlalchemy.typesr   r   r   r    r3   r   r   r   r   <module>   s    