You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
462 lines
12 KiB
Python
462 lines
12 KiB
Python
# DO NOT EDIT THIS FILE!
|
|
#
|
|
# This file is generated from the CDP specification. If you need to make
|
|
# changes, edit the generator and regenerate all of the modules.
|
|
#
|
|
# CDP domain: IndexedDB (experimental)
|
|
from __future__ import annotations
|
|
from .util import event_class, T_JSON_DICT
|
|
from dataclasses import dataclass
|
|
import enum
|
|
import typing
|
|
from . import runtime
|
|
|
|
|
|
@dataclass
|
|
class DatabaseWithObjectStores:
|
|
'''
|
|
Database with an array of object stores.
|
|
'''
|
|
#: Database name.
|
|
name: str
|
|
|
|
#: Database version (type is not 'integer', as the standard
|
|
#: requires the version number to be 'unsigned long long')
|
|
version: float
|
|
|
|
#: Object stores in this database.
|
|
object_stores: typing.List[ObjectStore]
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['name'] = self.name
|
|
json['version'] = self.version
|
|
json['objectStores'] = [i.to_json() for i in self.object_stores]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
name=str(json['name']),
|
|
version=float(json['version']),
|
|
object_stores=[ObjectStore.from_json(i) for i in json['objectStores']],
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class ObjectStore:
|
|
'''
|
|
Object store.
|
|
'''
|
|
#: Object store name.
|
|
name: str
|
|
|
|
#: Object store key path.
|
|
key_path: KeyPath
|
|
|
|
#: If true, object store has auto increment flag set.
|
|
auto_increment: bool
|
|
|
|
#: Indexes in this object store.
|
|
indexes: typing.List[ObjectStoreIndex]
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['name'] = self.name
|
|
json['keyPath'] = self.key_path.to_json()
|
|
json['autoIncrement'] = self.auto_increment
|
|
json['indexes'] = [i.to_json() for i in self.indexes]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
name=str(json['name']),
|
|
key_path=KeyPath.from_json(json['keyPath']),
|
|
auto_increment=bool(json['autoIncrement']),
|
|
indexes=[ObjectStoreIndex.from_json(i) for i in json['indexes']],
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class ObjectStoreIndex:
|
|
'''
|
|
Object store index.
|
|
'''
|
|
#: Index name.
|
|
name: str
|
|
|
|
#: Index key path.
|
|
key_path: KeyPath
|
|
|
|
#: If true, index is unique.
|
|
unique: bool
|
|
|
|
#: If true, index allows multiple entries for a key.
|
|
multi_entry: bool
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['name'] = self.name
|
|
json['keyPath'] = self.key_path.to_json()
|
|
json['unique'] = self.unique
|
|
json['multiEntry'] = self.multi_entry
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
name=str(json['name']),
|
|
key_path=KeyPath.from_json(json['keyPath']),
|
|
unique=bool(json['unique']),
|
|
multi_entry=bool(json['multiEntry']),
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class Key:
|
|
'''
|
|
Key.
|
|
'''
|
|
#: Key type.
|
|
type_: str
|
|
|
|
#: Number value.
|
|
number: typing.Optional[float] = None
|
|
|
|
#: String value.
|
|
string: typing.Optional[str] = None
|
|
|
|
#: Date value.
|
|
date: typing.Optional[float] = None
|
|
|
|
#: Array value.
|
|
array: typing.Optional[typing.List[Key]] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['type'] = self.type_
|
|
if self.number is not None:
|
|
json['number'] = self.number
|
|
if self.string is not None:
|
|
json['string'] = self.string
|
|
if self.date is not None:
|
|
json['date'] = self.date
|
|
if self.array is not None:
|
|
json['array'] = [i.to_json() for i in self.array]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
type_=str(json['type']),
|
|
number=float(json['number']) if 'number' in json else None,
|
|
string=str(json['string']) if 'string' in json else None,
|
|
date=float(json['date']) if 'date' in json else None,
|
|
array=[Key.from_json(i) for i in json['array']] if 'array' in json else None,
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class KeyRange:
|
|
'''
|
|
Key range.
|
|
'''
|
|
#: If true lower bound is open.
|
|
lower_open: bool
|
|
|
|
#: If true upper bound is open.
|
|
upper_open: bool
|
|
|
|
#: Lower bound.
|
|
lower: typing.Optional[Key] = None
|
|
|
|
#: Upper bound.
|
|
upper: typing.Optional[Key] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['lowerOpen'] = self.lower_open
|
|
json['upperOpen'] = self.upper_open
|
|
if self.lower is not None:
|
|
json['lower'] = self.lower.to_json()
|
|
if self.upper is not None:
|
|
json['upper'] = self.upper.to_json()
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
lower_open=bool(json['lowerOpen']),
|
|
upper_open=bool(json['upperOpen']),
|
|
lower=Key.from_json(json['lower']) if 'lower' in json else None,
|
|
upper=Key.from_json(json['upper']) if 'upper' in json else None,
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class DataEntry:
|
|
'''
|
|
Data entry.
|
|
'''
|
|
#: Key object.
|
|
key: runtime.RemoteObject
|
|
|
|
#: Primary key object.
|
|
primary_key: runtime.RemoteObject
|
|
|
|
#: Value object.
|
|
value: runtime.RemoteObject
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['key'] = self.key.to_json()
|
|
json['primaryKey'] = self.primary_key.to_json()
|
|
json['value'] = self.value.to_json()
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
key=runtime.RemoteObject.from_json(json['key']),
|
|
primary_key=runtime.RemoteObject.from_json(json['primaryKey']),
|
|
value=runtime.RemoteObject.from_json(json['value']),
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class KeyPath:
|
|
'''
|
|
Key path.
|
|
'''
|
|
#: Key path type.
|
|
type_: str
|
|
|
|
#: String value.
|
|
string: typing.Optional[str] = None
|
|
|
|
#: Array value.
|
|
array: typing.Optional[typing.List[str]] = None
|
|
|
|
def to_json(self):
|
|
json = dict()
|
|
json['type'] = self.type_
|
|
if self.string is not None:
|
|
json['string'] = self.string
|
|
if self.array is not None:
|
|
json['array'] = [i for i in self.array]
|
|
return json
|
|
|
|
@classmethod
|
|
def from_json(cls, json):
|
|
return cls(
|
|
type_=str(json['type']),
|
|
string=str(json['string']) if 'string' in json else None,
|
|
array=[str(i) for i in json['array']] if 'array' in json else None,
|
|
)
|
|
|
|
|
|
def clear_object_store(
|
|
security_origin: str,
|
|
database_name: str,
|
|
object_store_name: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Clears all entries from an object store.
|
|
|
|
:param security_origin: Security origin.
|
|
:param database_name: Database name.
|
|
:param object_store_name: Object store name.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
params['databaseName'] = database_name
|
|
params['objectStoreName'] = object_store_name
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.clearObjectStore',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def delete_database(
|
|
security_origin: str,
|
|
database_name: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Deletes a database.
|
|
|
|
:param security_origin: Security origin.
|
|
:param database_name: Database name.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
params['databaseName'] = database_name
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.deleteDatabase',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def delete_object_store_entries(
|
|
security_origin: str,
|
|
database_name: str,
|
|
object_store_name: str,
|
|
key_range: KeyRange
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Delete a range of entries from an object store
|
|
|
|
:param security_origin:
|
|
:param database_name:
|
|
:param object_store_name:
|
|
:param key_range: Range of entry keys to delete
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
params['databaseName'] = database_name
|
|
params['objectStoreName'] = object_store_name
|
|
params['keyRange'] = key_range.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.deleteObjectStoreEntries',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def disable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Disables events from backend.
|
|
'''
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.disable',
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def enable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
|
|
'''
|
|
Enables events from backend.
|
|
'''
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.enable',
|
|
}
|
|
json = yield cmd_dict
|
|
|
|
|
|
def request_data(
|
|
security_origin: str,
|
|
database_name: str,
|
|
object_store_name: str,
|
|
index_name: str,
|
|
skip_count: int,
|
|
page_size: int,
|
|
key_range: typing.Optional[KeyRange] = None
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.Tuple[typing.List[DataEntry], bool]]:
|
|
'''
|
|
Requests data from object store or index.
|
|
|
|
:param security_origin: Security origin.
|
|
:param database_name: Database name.
|
|
:param object_store_name: Object store name.
|
|
:param index_name: Index name, empty string for object store data requests.
|
|
:param skip_count: Number of records to skip.
|
|
:param page_size: Number of records to fetch.
|
|
:param key_range: *(Optional)* Key range.
|
|
:returns: A tuple with the following items:
|
|
|
|
0. **objectStoreDataEntries** - Array of object store data entries.
|
|
1. **hasMore** - If true, there are more entries to fetch in the given range.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
params['databaseName'] = database_name
|
|
params['objectStoreName'] = object_store_name
|
|
params['indexName'] = index_name
|
|
params['skipCount'] = skip_count
|
|
params['pageSize'] = page_size
|
|
if key_range is not None:
|
|
params['keyRange'] = key_range.to_json()
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.requestData',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return (
|
|
[DataEntry.from_json(i) for i in json['objectStoreDataEntries']],
|
|
bool(json['hasMore'])
|
|
)
|
|
|
|
|
|
def get_metadata(
|
|
security_origin: str,
|
|
database_name: str,
|
|
object_store_name: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.Tuple[float, float]]:
|
|
'''
|
|
Gets metadata of an object store
|
|
|
|
:param security_origin: Security origin.
|
|
:param database_name: Database name.
|
|
:param object_store_name: Object store name.
|
|
:returns: A tuple with the following items:
|
|
|
|
0. **entriesCount** - the entries count
|
|
1. **keyGeneratorValue** - the current value of key generator, to become the next inserted key into the object store. Valid if objectStore.autoIncrement is true.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
params['databaseName'] = database_name
|
|
params['objectStoreName'] = object_store_name
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.getMetadata',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return (
|
|
float(json['entriesCount']),
|
|
float(json['keyGeneratorValue'])
|
|
)
|
|
|
|
|
|
def request_database(
|
|
security_origin: str,
|
|
database_name: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,DatabaseWithObjectStores]:
|
|
'''
|
|
Requests database with given name in given frame.
|
|
|
|
:param security_origin: Security origin.
|
|
:param database_name: Database name.
|
|
:returns: Database with an array of object stores.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
params['databaseName'] = database_name
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.requestDatabase',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return DatabaseWithObjectStores.from_json(json['databaseWithObjectStores'])
|
|
|
|
|
|
def request_database_names(
|
|
security_origin: str
|
|
) -> typing.Generator[T_JSON_DICT,T_JSON_DICT,typing.List[str]]:
|
|
'''
|
|
Requests database names for given security origin.
|
|
|
|
:param security_origin: Security origin.
|
|
:returns: Database names for origin.
|
|
'''
|
|
params: T_JSON_DICT = dict()
|
|
params['securityOrigin'] = security_origin
|
|
cmd_dict: T_JSON_DICT = {
|
|
'method': 'IndexedDB.requestDatabaseNames',
|
|
'params': params,
|
|
}
|
|
json = yield cmd_dict
|
|
return [str(i) for i in json['databaseNames']]
|