Skip to content
Snippets Groups Projects
Host.py 1.52 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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