Skip to content
Snippets Groups Projects
Key.py 1.32 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.Key import KeyType
    from pilab.events import meta
    
    log.getLogger('sqlalchemy.engine').setLevel(log.WARNING)
    
    
    class Key(object):
        @staticmethod
        def create(db: Session, **kwargs):
            db_key = from_json(KeyType, kwargs)
            db.add(db_key)
            db.flush()
            return db_key.id
    
        @staticmethod
        def delete(db: Session, key_id: str):#DONE
            db_key = db.query(KeyType).filter(
                KeyType.id == key_id
            ).first()
            db.delete(db_key)
            db.flush()
            return
        
        @staticmethod
        def get(db: Session, id: str):#DONE
            db_key = db.query(KeyType).filter(KeyType.id == id).first()
            return meta.Key(**vars(db_key))
    
        @staticmethod
        def getAll(db: Session, owner: str = None):#DONE
            if owner:
                db_keys = db.query(KeyType).filter(KeyType.owner == owner).all()
            else:
                db_keys = db.query(KeyType).all()
    
            keys = []
            for db_key in db_keys:
                key = meta.Key(**vars(db_key))
                keys.append(key)
            return keys