o
    %Fg                     @   s  d dl mZmZmZ d dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZ e ZG dd	 d	e
ZG d
d de
ZedeefdefddZedeefdefddZedeefdedefddZedeefdedefddZedeefdedefddZedeefdededefddZedeefdedefdd Zejd!ed"eefd#edefd$d%ZdS )&    )	APIRouterDependsHTTPException)Session)get_dbN)	BaseModel)date)Optionalc                   @   sz   e Zd ZU eed< eed< dZee ed< eed< dZee ed< dZ	e
ed< dZe
ed	< dZee ed
< dZeed< dS )
ServerBasename
ip_addressNdns_nameguest_osservice_dateFautomatic_updateszabbix
other_infoVirtuaalinenserver_type)__name__
__module____qualname__str__annotations__r   r	   r   r   r   boolr   r   r    r   r   1/var/www/html/riveria-computers/backend/routes.pyr
      s   
 r
   c                   @   s>   e Zd ZU eed< eed< dZee ed< dZee ed< dS )OsEolResponseos_nameeol_dateNextended_eol_datenotes)	r   r   r   r   r   r   r    r	   r!   r   r   r   r   r      s
   
 r   z/api/servers/archiveddbc                 C   $   |  tjtjjd  }|S N)querymodelsServerfilterarchived_dateisnotallr"   serversr   r   r   get_archived_servers       r.   z/api/serversc                 C   r#   r$   )r%   r&   r'   r(   r)   is_r+   r,   r   r   r   get_servers#   r/   r1   z /api/servers/{server_id}/archive	server_idc                 C   sV   | tjtjj| k }|d u rtdddt |_	|
  || ddiS )N     Palvelinta ei löytynytstatus_codedetailmessagez!Palvelin arkistoitu onnistuneesti)r%   r&   r'   r(   idfirstr   r   todayr)   commitrefreshr2   r"   serverr   r   r   archive_server(   s   

r@   r?   c                 C   s4   t jdi |  }|| |  || |S )Nr   )r&   r'   dictaddr<   r=   )r?   r"   	db_serverr   r   r   create_server3   s
   

rD   z/api/servers/{server_id}c                 C   s6   | tjtjj| k }|d u rtddd|S Nr3   r4   r5   )r%   r&   r'   r(   r9   r:   r   r>   r   r   r   
get_server;   s   rF   c                 C   sj   | tjtjj| k }|d u rtddd|  D ]
\}}t	||| q|
  || |S rE   )r%   r&   r'   r(   r9   r:   r   rA   itemssetattrr<   r=   )r2   r?   r"   rC   keyvaluer   r   r   update_serverB   s   
rK   c                 C   sL   | tjtjj| k }|d u rtddd|| |  ddiS )Nr3   r4   r5   r8   zPalvelin poistettu)	r%   r&   r'   r(   r9   r:   r   deleter<   r>   r   r   r   delete_serverO   s   
rM   z/api/os-eol/{os_name})response_modelr   c                 C   sH   | tjtjj| k }|d u rtddd|j|j|j|j	dS )Nr3   u$   Käyttöjärjestelmää ei löytynytr5   )r   r   r    r!   )
r%   r&   OsEolr(   r   r:   r   r   r    r!   )r   r"   eol_datar   r   r   
get_os_eolY   s   rQ   ) fastapir   r   r   sqlalchemy.ormr   databaser   r&   pydanticr   datetimer   typingr	   routerr
   r   getr.   r1   putintr@   postrD   rF   rK   rL   rM   r   rQ   r   r   r   r   <module>   s4    
 	 