
    !\i                     P    d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	  G d d      Z
y)	zTeam repository    )OptionalList)Session)Team)LeagueRepositoryc            	           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
dee   fd
ZdedefdZdde
d	e
dee
   defdZy)TeamRepositoryzRepository for team operationsdbc                     || _         y N)r
   )selfr
   s     0/app/app/core/db/repositories/team_repository.py__init__zTeamRepository.__init__   s	        team_idreturnc                     | j                   j                  t              j                  t        j                  |k(        j                         S )zGet team by ID)r
   queryr   filteridfirst)r   r   s     r   	get_by_idzTeamRepository.get_by_id   s2    ww}}T"))$''W*<=CCEEr   	source_idc                     | j                   j                  t              j                  t        j                  |k(        j                         S )zGet team by source ID)r
   r   r   r   r   r   )r   r   s     r   get_by_source_idzTeamRepository.get_by_source_id   s2    ww}}T"))$..I*EFLLNNr   namec                     | j                   j                  t              j                  t        j                  |k(        j                         S )zGet team by name)r
   r   r   r   r   r   )r   r   s     r   get_by_namezTeamRepository.get_by_name   s2    ww}}T"))$))t*;<BBDDr   teamc                     | j                   j                  |       | j                   j                          | j                   j                  |       |S )zCreate a new team)r
   addcommitrefresh)r   r   s     r   createzTeamRepository.create   s5    Dr   Ncountryc                     | j                  |      }|r|S d}|r0t        | j                        }|j                  |      j                  }t        |||d|       }| j                  |      S )zxGet or create team by source ID

        `country` is a country name from the source; we map it to `countries`.
        Nteam_)r   r   
country_idcode)r   r   r
   get_or_create_countryr   r   r$   )r   r   r   r%   r   r(   lrs          r   get_or_create_by_source_idz)TeamRepository.get_or_create_by_source_id!   sv    
 $$Y/K
!$''*B11':==J!$	
 {{4  r   r   )__name__
__module____qualname____doc__r   r   intr   r   r   strr   r   r$   r,    r   r   r	   r	      s    (7 F F$ FO# O(4. OE E E4 D !C !s !XVY] !fj !r   r	   N)r0   typingr   r   sqlalchemy.ormr   app.core.db.models.teamr   *app.core.db.repositories.league_repositoryr   r	   r3   r   r   <module>r8      s     ! " ( G-! -!r   