def test_get_filter_id() -> None: from superset.key_value.utils import get_filter assert get_filter(resource=RESOURCE, key=ID_KEY) == { "resource": RESOURCE, "id": ID_KEY, }
def upsert(self) -> Optional[Key]: filter_ = get_filter(self.resource, self.key) entry: KeyValueEntry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) .autoflush(False) .first() ) if entry: entry.value = pickle.dumps(self.value) entry.expires_on = self.expires_on entry.changed_on = datetime.now() entry.changed_by_fk = ( None if self.actor is None or self.actor.is_anonymous else self.actor.id ) db.session.merge(entry) db.session.commit() return Key(entry.id, entry.uuid) return CreateKeyValueCommand( resource=self.resource, value=self.value, actor=self.actor, key=self.key, expires_on=self.expires_on, ).run()
def get(self) -> Optional[Any]: filter_ = get_filter(self.resource, self.key, self.key_type) entry = (db.session.query(KeyValueEntry).filter_by( **filter_).autoflush(False).first()) if entry and (entry.expires_on is None or entry.expires_on > datetime.now()): return pickle.loads(entry.value) return None
def delete(self) -> bool: filter_ = get_filter(self.resource, self.key, self.key_type) entry = (db.session.query(KeyValueEntry).filter_by( **filter_).autoflush(False).first()) if entry: db.session.delete(entry) db.session.commit() return True return False
def test_get_filter_id(app_context: AppContext, ) -> None: from superset.key_value.utils import get_filter assert get_filter( resource=RESOURCE, key=ID_KEY, key_type="id", ) == { "resource": RESOURCE, "id": int(ID_KEY), }
def update(self) -> Optional[str]: filter_ = get_filter(self.resource, self.key, self.key_type) entry: KeyValueEntry = (db.session.query(KeyValueEntry).filter_by( **filter_).autoflush(False).first()) if entry: entry.value = pickle.dumps(self.value) entry.expires_on = self.expires_on entry.changed_on = datetime.now() entry.changed_by_fk = (None if self.actor is None or self.actor.is_anonymous else self.actor.id) db.session.merge(entry) db.session.commit() return extract_key(entry, self.key_type) return None
def update(self) -> Optional[Key]: filter_ = get_filter(self.resource, self.key) entry: KeyValueEntry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) .autoflush(False) .first() ) if entry: entry.value = pickle.dumps(self.value) entry.expires_on = self.expires_on entry.changed_on = datetime.now() entry.changed_by_fk = get_user_id() db.session.merge(entry) db.session.commit() return Key(id=entry.id, uuid=entry.uuid) return None
def upsert(self) -> Key: filter_ = get_filter(self.resource, self.key) entry: KeyValueEntry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) .autoflush(False) .first() ) if entry: entry.value = pickle.dumps(self.value) entry.expires_on = self.expires_on entry.changed_on = datetime.now() entry.changed_by_fk = get_user_id() db.session.merge(entry) db.session.commit() return Key(entry.id, entry.uuid) return CreateKeyValueCommand( resource=self.resource, value=self.value, key=self.key, expires_on=self.expires_on, ).run()