Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import logging as log
from typing import List
from datetime import datetime, timezone
from zoneinfo import ZoneInfo
from pydantic import BaseModel
from sqlalchemy import inspect
from sqlalchemy.orm import Session, class_mapper
from pilab.crud.Util import from_json, update_attrs
from pilab.schemas.Host import HostType
from pilab.events import meta
log.getLogger('sqlalchemy.engine').setLevel(log.WARNING)
class Host(object):
@staticmethod
def create(db: Session, host: meta.Host):#DONE
db_host = from_json(HostType, host.dict())
db.add(db_host)
db.flush()
resp_host = meta.Host(**vars(db_host))
return resp_host
@staticmethod
def update(db: Session, host: meta.HostUpdate, host_id: int):
db_host = db.query(HostType).filter(
HostType.id == host_id).first()
update_attrs(host, db_host)
db.flush()
resp_host = meta.Host(**vars(db_host))
return resp_host
@staticmethod
def get(db: Session, id: int):
db_host = db.query(HostType).filter(
HostType.id == id).first()
return meta.Host(**vars(db_host))
@staticmethod
def delete(db: Session, host_id: int):#DONE
db_host = db.query(HostType).filter(
HostType.id == host_id).first()
db.delete(db_host)
db.flush()
return
@staticmethod
def is_valid_id(db: Session, host_id: int):
pi = db.query(HostType).filter(
HostType.host_id == host_id).first()
return True if pi else False