
    !\i                     D    d Z ddlmZmZ ddlmZ ddlmZ  G d d      Zy)zModel repository    )OptionalList)Session)Modelc                   |    e Zd ZdZdefdZdedee   fdZ	de
dee   fdZdee   fd	Zdee   fd
ZdedefdZy)ModelRepositoryz"Repository for ML model operationsdbc                     || _         y )N)r	   )selfr	   s     1/app/app/core/db/repositories/model_repository.py__init__zModelRepository.__init__
   s	        model_idreturnc                     | j                   j                  t              j                  t        j                  |k(        j                         S )zGet model by ID)r	   queryr   filteridfirst)r   r   s     r   	get_by_idzModelRepository.get_by_id   s2    ww}}U#**588x+?@FFHHr   versionc                     | j                   j                  t              j                  t        j                  |k(        j                         S )zGet model by version)r	   r   r   r   r   r   )r   r   s     r   get_by_versionzModelRepository.get_by_version   s2    ww}}U#**5==G+CDJJLLr   c                     | j                   j                  t              j                  t        j                  dk(        j                  t        j                  j                               j                         S )zGet latest active model   )	r	   r   r   r   	is_activeorder_by
trained_atdescr   r   s    r   
get_latestzModelRepository.get_latest   sM    ww}}U#**OOq 

(5##((*
+EEG	4r   c                     | j                   j                  t              j                  t        j                  j                               j                         S )zGet all models)r	   r   r   r   r   r   allr    s    r   get_allzModelRepository.get_all   s8    ww}}U#,,U-=-=-B-B-DEIIKKr   modelc                     | j                   j                  |       | j                   j                          | j                   j                  |       |S )zCreate a new model)r	   addcommitrefresh)r   r%   s     r   createzModelRepository.create   s5    Er   N)__name__
__module____qualname____doc__r   r   intr   r   r   strr   r!   r   r$   r*    r   r   r   r      sz    ,7 I# I(5/ IMc Mhuo M4HUO 4Le LE e r   r   N)	r.   typingr   r   sqlalchemy.ormr   app.core.db.models.modelr   r   r1   r   r   <module>r5      s     ! " * r   