def write_batch(self, context: 'IconScoreContext', states: dict): if not _is_db_writable_on_context(context): raise DatabaseException( 'write_batch is not allowed on readonly context') return self.key_value_db.write_batch(states)
def close(self, context: 'IconScoreContext') -> None: """close db :param context: """ if not _is_db_writable_on_context(context): raise DatabaseException('close is not allowed on readonly context') if not self._is_shared: return self.key_value_db.close()
def get_sub_db(self, prefix: bytes) -> 'IconScoreDatabase': if prefix is None: raise DatabaseException( 'Invalid params: ' 'prefix is None in IconScoreDatabase.get_sub_db()') if self._prefix is not None: prefix = b'|'.join([self._prefix, prefix]) icon_score_database = IconScoreDatabase(self.address, self._context_db, prefix) icon_score_database.set_observer(self._observer) return icon_score_database
def delete(self, context: Optional['IconScoreContext'], key: bytes): """Delete key from db :param context: :param key: key to delete from db """ if not _is_db_writable_on_context(context): raise DatabaseException('delete is not allowed') context_type = _get_context_type(context) if context_type == IconScoreContextType.INVOKE: context.tx_batch[key] = None else: self.key_value_db.delete(key)
def put(self, context: Optional['IconScoreContext'], key: bytes, value: Optional[bytes]) -> None: """put value to StateDB or catch according to contex type :param context: :param key: :param value: """ if not _is_db_writable_on_context(context): raise DatabaseException('put is not allowed') context_type = _get_context_type(context) if context_type == IconScoreContextType.INVOKE: context.tx_batch[key] = value else: self.key_value_db.put(key, value)
def delete(self, context, bytes_key: bytes) -> None: if not _is_db_writable_on_context(context): raise DatabaseException('delete is not allowed') if bytes_key in self._db: del self._db[bytes_key]
def put(self, context, bytes_key: bytes, value: value_type) -> None: if not _is_db_writable_on_context(context): raise DatabaseException('put is not allowed') self._db[bytes_key] = value