
    4T?g                        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	e
      Z G d
 de
      Zej%                  d       ee      fdefd       Zej%                  d       ee      fdefd       Zej+                  d       ee      fdedefd       Zej1                  d       ee      fdedefd       Zej%                  d       ee      fdedefd       Zej+                  d       ee      fdededefd       Zej9                  d       ee      fdedefd       Zej%                  de       ee      fdedefd       Zy)    )	APIRouterDependsHTTPException)Session)get_dbN)	BaseModel)date)Optionalc                       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<   y)
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        ,D:\React\riveria-computers\backend\routes.pyr   r      sZ    
IO"Hhsm"M#'L(4.'#t#FD $J$%K%r   r   c                   J    e Zd ZU eed<   eed<   dZee   ed<   dZee   ed<   y)OsEolResponseos_nameeol_dateNextended_eol_datenotes)	r   r   r   r   r   r	   r$   r
   r%   r   r   r   r!   r!      s)    LN(,x~,E8C=r   r!   z/api/servers/archiveddbc                     | j                  t        j                        j                  t        j                  j                  j                  d             j                         }|S N)querymodelsServerfilterarchived_dateisnotallr&   serverss     r   get_archived_serversr2      sB    hhv}}%,,V]]-H-H-N-Nt-TUYY[GNr   z/api/serversc                     | j                  t        j                        j                  t        j                  j                  j                  d             j                         }|S r(   )r)   r*   r+   r,   r-   is_r/   r0   s     r   get_serversr5   #   sB    hhv}}%,,V]]-H-H-L-LT-RSWWYGNr   z /api/servers/{server_id}/archive	server_idc                 J   |j                  t        j                        j                  t        j                  j                  | k(        j                         }|t        dd      t        j                         |_	        |j                          |j                  |       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r6   r&   servers      r   archive_serverrE   (   sy    XXfmm$++FMM,<,<	,IJPPRF~4MNN::<FIIKJJv:;;r   rD   c                     t        j                  di | j                         }|j                  |       |j	                          |j                  |       |S )Nr   )r*   r+   dictaddrA   rB   )rD   r&   	db_servers      r   create_serverrJ   3   s@    ..IFF9IIKJJyr   z/api/servers/{server_id}c                     |j                  t        j                        j                  t        j                  j                  | k(        j                         }|t        dd      |S Nr8   r9   r:   )r)   r*   r+   r,   r>   r?   r   rC   s      r   
get_serverrM   ;   sO    XXfmm$++FMM,<,<	,IJPPRF~4MNNMr   c                 z   |j                  t        j                        j                  t        j                  j                  | k(        j                         }|t        dd      |j                         j                         D ]  \  }}t        |||        |j                          |j                  |       |S rL   )r)   r*   r+   r,   r>   r?   r   rG   itemssetattrrA   rB   )r6   rD   r&   rI   keyvalues         r   update_serverrS   B   s    '..v}}/?/?9/LMSSUI4MNNkkm))+
U	3& , IIKJJyr   c                    |j                  t        j                        j                  t        j                  j                  | k(        j                         }|t        dd      |j                  |       |j                          ddiS )Nr8   r9   r:   r=   zPalvelin poistettu)	r)   r*   r+   r,   r>   r?   r   deleterA   rC   s      r   delete_serverrV   O   sk    XXfmm$++FMM,<,<	,IJPPRF~4MNNIIfIIK+,,r   z/api/os-eol/{os_name})response_modelr"   c                 ,   |j                  t        j                        j                  t        j                  j                  | k(        j                         }|t        dd      |j                  |j                  |j                  |j                  dS )Nr8   u$   Käyttöjärjestelmää ei löytynytr:   )r"   r#   r$   r%   )
r)   r*   OsEolr,   r"   r?   r   r#   r$   r%   )r"   r&   eol_datas      r   
get_os_eolr[   Y   s{     xx%,,V\\-A-AW-LMSSUH4Z[[ ##%%%77	 r   ) fastapir   r   r   sqlalchemy.ormr   databaser   r*   pydanticr   datetimer	   typingr
   routerr   r!   getr2   r5   putintrE   postrJ   rM   rS   rU   rV   r   r[   r   r   r   <module>rg      s   5 5 "     		& 	& I   #$'.v W  % N%fo G   ./18 <c <w < 0< ^4;FO * '   &'-4V_ # 7  ( &'DKFO 
S 
* 
' 
 (
 )*07 -S -g - +- #MB+26?    Cr   