o
    \i                     @   sN   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
 G dd dZdS )	zLeague repository    )OptionalList)Session)IntegrityError)LeagueCountryc                   @   s   e Zd ZdZdefddZdedee fddZ	d	e
dee fd
dZdee fddZdedefddZdde
de
dB defddZdS )LeagueRepositoryz Repository for league operationsdbc                 C   s
   || _ d S N)r	   )selfr	    r   -app/core/db/repositories/league_repository.py__init__   s   
zLeagueRepository.__init__	league_idreturnc                 C      | j ttj|k S )zGet league by ID)r	   queryr   filteridfirst)r   r   r   r   r   	get_by_id      zLeagueRepository.get_by_id	source_idc                 C   r   )zGet league by source ID)r	   r   r   r   r   r   )r   r   r   r   r   get_by_source_id   r   z!LeagueRepository.get_by_source_idc                 C   s   | j t S )zGet all leagues)r	   r   r   all)r   r   r   r   get_all   s   zLeagueRepository.get_allleaguec                 C   sp   | j | z| j   W n" ty/   | j   | j ttj|jktj	|j	k
  Y S w | j | |S )zCreate a new league)r	   addcommitr   rollbackr   r   r   
country_idnamer   refresh)r   r   r   r   r   create   s   

zLeagueRepository.createNr!   codec                 C   sV   | j ttj|k }|r|S t||d}| j | | j   | j | |S )z$Get or create country dictionary row)r!   r$   )	r	   r   r   r   r!   r   r   r   r"   )r   r!   r$   countryr   r   r   get_or_create_country*   s   
z&LeagueRepository.get_or_create_countryr
   )__name__
__module____qualname____doc__r   r   intr   r   r   strr   r   r   r#   r   r&   r   r   r   r   r      s     r   N)r*   typingr   r   sqlalchemy.ormr   sqlalchemy.excr   app.core.db.models.sportr   r   r   r   r   r   r   <module>   s    