dfindexeddb 20241105__py3-none-any.whl → 20260205__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. dfindexeddb/indexeddb/chromium/blink.py +116 -74
  2. dfindexeddb/indexeddb/chromium/definitions.py +240 -125
  3. dfindexeddb/indexeddb/chromium/record.py +651 -346
  4. dfindexeddb/indexeddb/chromium/sqlite.py +362 -0
  5. dfindexeddb/indexeddb/chromium/v8.py +100 -78
  6. dfindexeddb/indexeddb/cli.py +282 -121
  7. dfindexeddb/indexeddb/firefox/definitions.py +7 -4
  8. dfindexeddb/indexeddb/firefox/gecko.py +98 -74
  9. dfindexeddb/indexeddb/firefox/record.py +78 -26
  10. dfindexeddb/indexeddb/safari/definitions.py +5 -3
  11. dfindexeddb/indexeddb/safari/record.py +86 -53
  12. dfindexeddb/indexeddb/safari/webkit.py +85 -71
  13. dfindexeddb/indexeddb/types.py +4 -1
  14. dfindexeddb/leveldb/cli.py +146 -138
  15. dfindexeddb/leveldb/definitions.py +6 -2
  16. dfindexeddb/leveldb/descriptor.py +70 -56
  17. dfindexeddb/leveldb/ldb.py +39 -33
  18. dfindexeddb/leveldb/log.py +41 -30
  19. dfindexeddb/leveldb/plugins/chrome_notifications.py +30 -18
  20. dfindexeddb/leveldb/plugins/interface.py +5 -6
  21. dfindexeddb/leveldb/plugins/manager.py +10 -9
  22. dfindexeddb/leveldb/record.py +71 -62
  23. dfindexeddb/leveldb/utils.py +105 -13
  24. dfindexeddb/utils.py +36 -31
  25. dfindexeddb/version.py +2 -2
  26. dfindexeddb-20260205.dist-info/METADATA +171 -0
  27. dfindexeddb-20260205.dist-info/RECORD +41 -0
  28. {dfindexeddb-20241105.dist-info → dfindexeddb-20260205.dist-info}/WHEEL +1 -1
  29. dfindexeddb-20241105.dist-info/AUTHORS +0 -12
  30. dfindexeddb-20241105.dist-info/METADATA +0 -424
  31. dfindexeddb-20241105.dist-info/RECORD +0 -41
  32. {dfindexeddb-20241105.dist-info → dfindexeddb-20260205.dist-info}/entry_points.txt +0 -0
  33. {dfindexeddb-20241105.dist-info → dfindexeddb-20260205.dist-info/licenses}/LICENSE +0 -0
  34. {dfindexeddb-20241105.dist-info → dfindexeddb-20260205.dist-info}/top_level.txt +0 -0
@@ -14,15 +14,18 @@
14
14
  # limitations under the License.
15
15
  """Definitions for IndexedDB."""
16
16
  from enum import Enum, IntEnum, IntFlag
17
-
17
+ import textwrap
18
18
 
19
19
  REQUIRES_PROCESSING_SSV_PSEUDO_VERSION = 0x11
20
20
  REPLACE_WITH_BLOB = 0x01
21
21
  COMPRESSED_WITH_SNAPPY = 0x02
22
22
 
23
+ SENTINEL = 0x00
24
+
23
25
 
24
26
  class DatabaseMetaDataKeyType(IntEnum):
25
27
  """Database Metadata key types."""
28
+
26
29
  ORIGIN_NAME = 0
27
30
  DATABASE_NAME = 1
28
31
  IDB_STRING_VERSION_DATA = 2
@@ -39,6 +42,7 @@ class DatabaseMetaDataKeyType(IntEnum):
39
42
 
40
43
  class GlobalMetadataKeyType(IntEnum):
41
44
  """Global Metadata key types."""
45
+
42
46
  SCHEMA_VERSION = 0
43
47
  MAX_DATABASE_ID = 1
44
48
  DATA_VERSION = 2
@@ -53,6 +57,7 @@ class GlobalMetadataKeyType(IntEnum):
53
57
 
54
58
  class IDBKeyPathType(IntEnum):
55
59
  """IndexedDB key path types."""
60
+
56
61
  NULL = 0
57
62
  STRING = 1
58
63
  ARRAY = 2
@@ -60,6 +65,7 @@ class IDBKeyPathType(IntEnum):
60
65
 
61
66
  class IDBKeyType(IntEnum):
62
67
  """IndexedDB key types."""
68
+
63
69
  NULL = 0
64
70
  STRING = 1
65
71
  DATE = 2
@@ -69,8 +75,19 @@ class IDBKeyType(IntEnum):
69
75
  BINARY = 6
70
76
 
71
77
 
78
+ class OrderedIDBKeyType(IntEnum):
79
+ """Ordered IndexedDB key types."""
80
+
81
+ NUMBER = 0x10
82
+ DATE = 0x20
83
+ STRING = 0x30
84
+ BINARY = 0x40
85
+ ARRAY = 0x50
86
+
87
+
72
88
  class IndexMetaDataKeyType(IntEnum):
73
89
  """IndexedDB metadata key types."""
90
+
74
91
  INDEX_NAME = 0
75
92
  UNIQUE_FLAG = 1
76
93
  KEY_PATH = 2
@@ -79,6 +96,7 @@ class IndexMetaDataKeyType(IntEnum):
79
96
 
80
97
  class KeyPrefixType(Enum):
81
98
  """IndexedDB key prefix types."""
99
+
82
100
  GLOBAL_METADATA = 0
83
101
  DATABASE_METADATA = 1
84
102
  OBJECT_STORE_DATA = 2
@@ -90,6 +108,7 @@ class KeyPrefixType(Enum):
90
108
 
91
109
  class ObjectStoreMetaDataKeyType(IntEnum):
92
110
  """IndexedDB object store metadata key types."""
111
+
93
112
  OBJECT_STORE_NAME = 0
94
113
  KEY_PATH = 1
95
114
  AUTO_INCREMENT_FLAG = 2
@@ -102,6 +121,7 @@ class ObjectStoreMetaDataKeyType(IntEnum):
102
121
 
103
122
  class ExternalObjectType(IntEnum):
104
123
  """IndexedDB external object types."""
124
+
105
125
  BLOB = 0
106
126
  FILE = 1
107
127
  FILE_SYSTEM_ACCESS_HANDLE = 2
@@ -109,50 +129,51 @@ class ExternalObjectType(IntEnum):
109
129
 
110
130
  class BlinkSerializationTag(IntEnum):
111
131
  """Blink Javascript serialization tags."""
112
- MESSAGE_PORT = ord('M')
113
- MOJO_HANDLE = ord('h')
114
- BLOB = ord('b')
115
- BLOB_INDEX = ord('i')
116
- FILE = ord('f')
117
- FILE_INDEX = ord('e')
118
- DOM_FILE_SYSTEM = ord('d')
119
- FILE_SYSTEM_FILE_HANDLE = ord('n')
120
- FILE_SYSTEM_DIRECTORY_HANDLE = ord('N')
121
- FILE_LIST = ord('l')
122
- FILE_LIST_INDEX = ord('L')
123
- IMAGE_DATA = ord('#')
124
- IMAGE_BITMAP = ord('g')
125
- IMAGE_BITMAP_TRANSFER = ord('G')
126
- OFFSCREEN_CANVAS_TRANSFER = ord('H')
127
- READABLE_STREAM_TRANSFER = ord('r')
128
- TRANSFORM_STREAM_TRANSFER = ord('m')
129
- WRITABLE_STREAM_TRANSFER = ord('w')
130
- MEDIA_STREAM_TRACK = ord('s')
131
- DOM_POINT = ord('Q')
132
- DOM_POINT_READ_ONLY = ord('W')
133
- DOM_RECT = ord('E')
134
- DOM_RECT_READ_ONLY = ord('R')
135
- DOM_QUAD = ord('T')
136
- DOM_MATRIX = ord('Y')
137
- DOM_MATRIX_READ_ONLY = ord('U')
138
- DOM_MATRIX2D = ord('I')
139
- DOM_MATRIX2D_READ_ONLY = ord('O')
140
- CRYPTO_KEY = ord('K')
141
- RTC_CERTIFICATE = ord('k')
142
- RTC_ENCODED_AUDIO_FRAME = ord('A')
143
- RTC_ENCODED_VIDEO_FRAME = ord('V')
144
- AUDIO_DATA = ord('a')
145
- VIDEO_FRAME = ord('v')
146
- ENCODED_AUDIO_CHUNK = ord('y')
147
- ENCODED_VIDEO_CHUNK = ord('z')
148
- CROP_TARGET = ord('c')
149
- RESTRICTION_TARGET = ord('D')
150
- MEDIA_SOURCE_HANDLE = ord('S')
151
- DEPRECATED_DETECTED_BARCODE = ord('B')
152
- DEPRECATED_DETECTED_FACE = ord('F')
153
- DEPRECATED_DETECTED_TEXT = ord('t')
154
- FENCED_FRAME_CONFIG = ord('C')
155
- DOM_EXCEPTION = ord('x')
132
+
133
+ MESSAGE_PORT = ord("M")
134
+ MOJO_HANDLE = ord("h")
135
+ BLOB = ord("b")
136
+ BLOB_INDEX = ord("i")
137
+ FILE = ord("f")
138
+ FILE_INDEX = ord("e")
139
+ DOM_FILE_SYSTEM = ord("d")
140
+ FILE_SYSTEM_FILE_HANDLE = ord("n")
141
+ FILE_SYSTEM_DIRECTORY_HANDLE = ord("N")
142
+ FILE_LIST = ord("l")
143
+ FILE_LIST_INDEX = ord("L")
144
+ IMAGE_DATA = ord("#")
145
+ IMAGE_BITMAP = ord("g")
146
+ IMAGE_BITMAP_TRANSFER = ord("G")
147
+ OFFSCREEN_CANVAS_TRANSFER = ord("H")
148
+ READABLE_STREAM_TRANSFER = ord("r")
149
+ TRANSFORM_STREAM_TRANSFER = ord("m")
150
+ WRITABLE_STREAM_TRANSFER = ord("w")
151
+ MEDIA_STREAM_TRACK = ord("s")
152
+ DOM_POINT = ord("Q")
153
+ DOM_POINT_READ_ONLY = ord("W")
154
+ DOM_RECT = ord("E")
155
+ DOM_RECT_READ_ONLY = ord("R")
156
+ DOM_QUAD = ord("T")
157
+ DOM_MATRIX = ord("Y")
158
+ DOM_MATRIX_READ_ONLY = ord("U")
159
+ DOM_MATRIX2D = ord("I")
160
+ DOM_MATRIX2D_READ_ONLY = ord("O")
161
+ CRYPTO_KEY = ord("K")
162
+ RTC_CERTIFICATE = ord("k")
163
+ RTC_ENCODED_AUDIO_FRAME = ord("A")
164
+ RTC_ENCODED_VIDEO_FRAME = ord("V")
165
+ AUDIO_DATA = ord("a")
166
+ VIDEO_FRAME = ord("v")
167
+ ENCODED_AUDIO_CHUNK = ord("y")
168
+ ENCODED_VIDEO_CHUNK = ord("z")
169
+ CROP_TARGET = ord("c")
170
+ RESTRICTION_TARGET = ord("D")
171
+ MEDIA_SOURCE_HANDLE = ord("S")
172
+ DEPRECATED_DETECTED_BARCODE = ord("B")
173
+ DEPRECATED_DETECTED_FACE = ord("F")
174
+ DEPRECATED_DETECTED_TEXT = ord("t")
175
+ FENCED_FRAME_CONFIG = ord("C")
176
+ DOM_EXCEPTION = ord("x")
156
177
  TRAILER_OFFSET = 0xFE
157
178
  VERSION = 0xFF
158
179
  TRAILER_REQUIRES_INTERFACES = 0xA0
@@ -160,6 +181,7 @@ class BlinkSerializationTag(IntEnum):
160
181
 
161
182
  class CryptoKeyAlgorithm(IntEnum):
162
183
  """CryptoKey Algorithm types."""
184
+
163
185
  AES_CBC = 1
164
186
  HMAC = 2
165
187
  RSA_SSA_PKCS1_V1_5 = 3
@@ -181,6 +203,7 @@ class CryptoKeyAlgorithm(IntEnum):
181
203
 
182
204
  class NamedCurve(IntEnum):
183
205
  """Named Curve types."""
206
+
184
207
  P256 = 1
185
208
  P384 = 2
186
209
  P521 = 3
@@ -188,6 +211,7 @@ class NamedCurve(IntEnum):
188
211
 
189
212
  class CryptoKeyUsage(IntFlag):
190
213
  """CryptoKey Usage flags."""
214
+
191
215
  EXTRACTABLE = 1 << 0
192
216
  ENCRYPT = 1 << 1
193
217
  DECRYPT = 1 << 2
@@ -201,6 +225,7 @@ class CryptoKeyUsage(IntFlag):
201
225
 
202
226
  class CryptoKeySubTag(IntEnum):
203
227
  """CryptoKey subtag types."""
228
+
204
229
  AES_KEY = 1
205
230
  HMAC_KEY = 2
206
231
  RSA_HASHED_KEY = 4
@@ -211,110 +236,116 @@ class CryptoKeySubTag(IntEnum):
211
236
 
212
237
  class AsymmetricCryptoKeyType(IntEnum):
213
238
  """Asymmetric CryptoKey types."""
239
+
214
240
  PUBLIC_KEY = 1
215
241
  PRIVATE_KEY = 2
216
242
 
217
243
 
218
244
  class WebCryptoKeyType(Enum):
219
245
  """WebCryptoKey types."""
220
- SECRET = 'Secret'
221
- PUBLIC = 'Public'
222
- PRIVATE = 'Private'
246
+
247
+ SECRET = "Secret"
248
+ PUBLIC = "Public"
249
+ PRIVATE = "Private"
223
250
 
224
251
 
225
252
  class V8SerializationTag(IntEnum):
226
253
  """V8 Javascript serialization tags."""
254
+
227
255
  VERSION = 0xFF
228
- PADDING = ord('\0')
229
- VERIFY_OBJECT_COUNT = ord('?')
230
- THE_HOLE = ord('-')
231
- UNDEFINED = ord('_')
232
- NULL = ord('0')
233
- TRUE = ord('T')
234
- FALSE = ord('F')
235
- INT32 = ord('I')
236
- UINT32 = ord('U')
237
- DOUBLE = ord('N')
238
- BIGINT = ord('Z')
239
- UTF8_STRING = ord('S')
256
+ PADDING = ord("\0")
257
+ VERIFY_OBJECT_COUNT = ord("?")
258
+ THE_HOLE = ord("-")
259
+ UNDEFINED = ord("_")
260
+ NULL = ord("0")
261
+ TRUE = ord("T")
262
+ FALSE = ord("F")
263
+ INT32 = ord("I")
264
+ UINT32 = ord("U")
265
+ DOUBLE = ord("N")
266
+ BIGINT = ord("Z")
267
+ UTF8_STRING = ord("S")
240
268
  ONE_BYTE_STRING = ord('"')
241
- TWO_BYTE_STRING = ord('c')
242
- OBJECT_REFERENCE = ord('^')
243
- BEGIN_JS_OBJECT = ord('o')
244
- END_JS_OBJECT = ord('{')
245
- BEGIN_SPARSE_JS_ARRAY = ord('a')
246
- END_SPARSE_JS_ARRAY = ord('@')
247
- BEGIN_DENSE_JS_ARRAY = ord('A')
248
- END_DENSE_JS_ARRAY = ord('$')
249
- DATE = ord('D')
250
- TRUE_OBJECT = ord('y')
251
- FALSE_OBJECT = ord('x')
252
- NUMBER_OBJECT = ord('n')
253
- BIGINT_OBJECT = ord('z')
254
- STRING_OBJECT = ord('s')
255
- REGEXP = ord('R')
256
- BEGIN_JS_MAP = ord(';')
257
- END_JS_MAP = ord(':')
258
- BEGIN_JS_SET = ord('\'')
259
- END_JS_SET = ord(',')
260
- ARRAY_BUFFER = ord('B')
261
- RESIZABLE_ARRAY_BUFFER = ord('~')
262
- ARRAY_BUFFER_TRANSFER = ord('t')
263
- ARRAY_BUFFER_VIEW = ord('V')
264
- SHARED_ARRAY_BUFFER = ord('u')
265
- SHARED_OBJECT = ord('p')
266
- WASM_MODULE_TRANSFER = ord('w')
267
- HOST_OBJECT = ord('\\')
268
- WASM_MEMORY_TRANSFER = ord('m')
269
- ERROR = ord('r')
270
- LEGACY_RESERVED_MESSAGE_PORT = ord('M')
271
- LEGACY_RESERVED_BLOB = ord('b')
272
- LEGACY_RESERVED_BLOB_INDEX = ord('i')
273
- LEGACY_RESERVED_FILE = ord('f')
274
- LEGACY_RESERVED_FILE_INDEX = ord('e')
275
- LEGACY_RESERVED_DOM_FILE_SYSTEM = ord('d')
276
- LEGACY_RESERVED_FILE_LIST = ord('l')
277
- LEGACY_RESERVED_FILE_LIST_INDEX = ord('L')
278
- LEGACY_RESERVED_IMAGE_DATA = ord('#')
279
- LEGACY_RESERVED_IMAGE_BITMAP = ord('g')
280
- LEGACY_RESERVED_IMAGE_BITMAP_TRANSFER = ord('G')
281
- LEGACY_RESERVED_OFF_SCREEN_CANVAS = ord('H')
282
- LEGACY_RESERVED_CRYPTO_KEY = ord('K')
283
- LEGACY_RESERVED_RTC_CERTIFICATE = ord('k')
269
+ TWO_BYTE_STRING = ord("c")
270
+ OBJECT_REFERENCE = ord("^")
271
+ BEGIN_JS_OBJECT = ord("o")
272
+ END_JS_OBJECT = ord("{")
273
+ BEGIN_SPARSE_JS_ARRAY = ord("a")
274
+ END_SPARSE_JS_ARRAY = ord("@")
275
+ BEGIN_DENSE_JS_ARRAY = ord("A")
276
+ END_DENSE_JS_ARRAY = ord("$")
277
+ DATE = ord("D")
278
+ TRUE_OBJECT = ord("y")
279
+ FALSE_OBJECT = ord("x")
280
+ NUMBER_OBJECT = ord("n")
281
+ BIGINT_OBJECT = ord("z")
282
+ STRING_OBJECT = ord("s")
283
+ REGEXP = ord("R")
284
+ BEGIN_JS_MAP = ord(";")
285
+ END_JS_MAP = ord(":")
286
+ BEGIN_JS_SET = ord("'")
287
+ END_JS_SET = ord(",")
288
+ ARRAY_BUFFER = ord("B")
289
+ RESIZABLE_ARRAY_BUFFER = ord("~")
290
+ ARRAY_BUFFER_TRANSFER = ord("t")
291
+ ARRAY_BUFFER_VIEW = ord("V")
292
+ SHARED_ARRAY_BUFFER = ord("u")
293
+ SHARED_OBJECT = ord("p")
294
+ WASM_MODULE_TRANSFER = ord("w")
295
+ HOST_OBJECT = ord("\\")
296
+ WASM_MEMORY_TRANSFER = ord("m")
297
+ ERROR = ord("r")
298
+ LEGACY_RESERVED_MESSAGE_PORT = ord("M")
299
+ LEGACY_RESERVED_BLOB = ord("b")
300
+ LEGACY_RESERVED_BLOB_INDEX = ord("i")
301
+ LEGACY_RESERVED_FILE = ord("f")
302
+ LEGACY_RESERVED_FILE_INDEX = ord("e")
303
+ LEGACY_RESERVED_DOM_FILE_SYSTEM = ord("d")
304
+ LEGACY_RESERVED_FILE_LIST = ord("l")
305
+ LEGACY_RESERVED_FILE_LIST_INDEX = ord("L")
306
+ LEGACY_RESERVED_IMAGE_DATA = ord("#")
307
+ LEGACY_RESERVED_IMAGE_BITMAP = ord("g")
308
+ LEGACY_RESERVED_IMAGE_BITMAP_TRANSFER = ord("G")
309
+ LEGACY_RESERVED_OFF_SCREEN_CANVAS = ord("H")
310
+ LEGACY_RESERVED_CRYPTO_KEY = ord("K")
311
+ LEGACY_RESERVED_RTC_CERTIFICATE = ord("k")
284
312
 
285
313
 
286
314
  class V8ArrayBufferViewTag(IntEnum):
287
315
  """V8 ArrayBufferView tags."""
288
- INT8_ARRAY = ord('b')
289
- UINT8_ARRAY = ord('B')
290
- UINT8_CLAMPED_ARRAY = ord('C')
291
- INT16_ARRAY = ord('w')
292
- UINT16_ARRAY = ord('W')
293
- INT32_ARRAY = ord('d')
294
- UINT32_ARRAY = ord('D')
295
- FLOAT32_ARRAY = ord('f')
296
- FLOAT64_ARRAY = ord('F')
297
- BIGINT64_ARRAY = ord('q')
298
- BIGUINT64_ARRAY = ord('Q')
299
- DATAVIEW = ord('?')
316
+
317
+ INT8_ARRAY = ord("b")
318
+ UINT8_ARRAY = ord("B")
319
+ UINT8_CLAMPED_ARRAY = ord("C")
320
+ INT16_ARRAY = ord("w")
321
+ UINT16_ARRAY = ord("W")
322
+ INT32_ARRAY = ord("d")
323
+ UINT32_ARRAY = ord("D")
324
+ FLOAT32_ARRAY = ord("f")
325
+ FLOAT64_ARRAY = ord("F")
326
+ BIGINT64_ARRAY = ord("q")
327
+ BIGUINT64_ARRAY = ord("Q")
328
+ DATAVIEW = ord("?")
300
329
 
301
330
 
302
331
  class V8ErrorTag(IntEnum):
303
332
  """V8 Error tags."""
304
- EVAL_ERROR_PROTOTYPE = ord('E')
305
- RANGE_ERROR_PROTOTYPE = ord('R')
306
- REFERENCE_ERROR_PROTOTYPE = ord('F')
307
- SYNTAX_ERROR_PROTOTYPE = ord('S')
308
- TYPE_ERROR_PROTOTYPE = ord('T')
309
- URI_ERROR_PROTOTYPE = ord('U')
310
- MESSAGE = ord('m')
311
- CAUSE = ord('c')
312
- STACK = ord('s')
313
- END = ord('.')
333
+
334
+ EVAL_ERROR_PROTOTYPE = ord("E")
335
+ RANGE_ERROR_PROTOTYPE = ord("R")
336
+ REFERENCE_ERROR_PROTOTYPE = ord("F")
337
+ SYNTAX_ERROR_PROTOTYPE = ord("S")
338
+ TYPE_ERROR_PROTOTYPE = ord("T")
339
+ URI_ERROR_PROTOTYPE = ord("U")
340
+ MESSAGE = ord("m")
341
+ CAUSE = ord("c")
342
+ STACK = ord("s")
343
+ END = ord(".")
314
344
 
315
345
 
316
346
  class ImageSerializationTag(IntEnum):
317
347
  """Image Serialization tags."""
348
+
318
349
  END = 0
319
350
  PREDEFINED_COLOR_SPACE = 1
320
351
  CANVAS_PIXEL_FORMAT = 2
@@ -329,6 +360,7 @@ class ImageSerializationTag(IntEnum):
329
360
 
330
361
  class SerializedPredefinedColorSpace(IntEnum):
331
362
  """Serialized Predefined Color Space enumeration."""
363
+
332
364
  LEGACY_OBSOLETE = 0
333
365
  SRGB = 1
334
366
  REC2020 = 2
@@ -341,6 +373,7 @@ class SerializedPredefinedColorSpace(IntEnum):
341
373
 
342
374
  class SerializedPixelFormat(IntEnum):
343
375
  """Serialized Pixel Format enumeration."""
376
+
344
377
  NATIVE8_LEGACY_OBSOLETE = 0
345
378
  F16 = 1
346
379
  RGBA8 = 2
@@ -351,6 +384,7 @@ class SerializedPixelFormat(IntEnum):
351
384
 
352
385
  class SerializedImageDataStorageFormat(IntEnum):
353
386
  """The Serialized Image Data Storage Format."""
387
+
354
388
  UINT8CLAMPED = 0
355
389
  UINT16 = 1
356
390
  FLOAT32 = 2
@@ -359,6 +393,7 @@ class SerializedImageDataStorageFormat(IntEnum):
359
393
 
360
394
  class SerializedOpacityMode(IntEnum):
361
395
  """The Serialized Opacity Mode."""
396
+
362
397
  KNONOPAQUE = 0
363
398
  KOPAQUE = 1
364
399
  KLAST = KOPAQUE
@@ -366,6 +401,7 @@ class SerializedOpacityMode(IntEnum):
366
401
 
367
402
  class SerializedImageOrientation(IntEnum):
368
403
  """The Serialized Image Orientation."""
404
+
369
405
  TOP_LEFT = 0
370
406
  TOP_RIGHT = 1
371
407
  BOTTOM_RIGHT = 2
@@ -375,3 +411,82 @@ class SerializedImageOrientation(IntEnum):
375
411
  RIGHT_BOTTOM = 6
376
412
  LEFT_BOTTOM = 7
377
413
  LAST = LEFT_BOTTOM
414
+
415
+
416
+ class DatabaseCompressionType(IntEnum):
417
+ """Database Compression Types."""
418
+
419
+ UNCOMPRESSED = 0
420
+ ZSTD = 1
421
+ SNAPPY = 2
422
+
423
+
424
+ SQL_RECORDS_QUERY_BASE = textwrap.dedent(
425
+ """
426
+ SELECT
427
+ row_id,
428
+ object_store_id,
429
+ compression_type,
430
+ key,
431
+ value,
432
+ EXISTS (
433
+ SELECT 1
434
+ FROM blob_references
435
+ WHERE record_row_id = records.row_id
436
+ ) AS has_blobs
437
+ FROM records"""
438
+ ).strip()
439
+
440
+ SQL_RECORDS_QUERY = SQL_RECORDS_QUERY_BASE
441
+
442
+ SQL_RECORDS_BY_ID_QUERY = f"{SQL_RECORDS_QUERY_BASE} WHERE object_store_id = ?"
443
+
444
+ SQL_RECORDS_BY_NAME_QUERY = textwrap.dedent(
445
+ f"""
446
+ {SQL_RECORDS_QUERY_BASE}
447
+ JOIN object_stores ON records.object_store_id = object_stores.id
448
+ WHERE object_stores.name = ?"""
449
+ ).strip()
450
+
451
+ SQL_OBJECT_STORES_QUERY = textwrap.dedent(
452
+ """
453
+ SELECT
454
+ id,
455
+ name,
456
+ key_path,
457
+ auto_increment,
458
+ key_generator_current_number
459
+ FROM object_stores"""
460
+ ).strip()
461
+
462
+ SQL_BLOB_DATA_QUERY = textwrap.dedent(
463
+ """
464
+ SELECT
465
+ b.row_id,
466
+ b.object_type,
467
+ b.mime_type,
468
+ b.size_bytes,
469
+ b.file_name,
470
+ 0 AS chunk_index,
471
+ b.bytes
472
+ FROM blobs b
473
+ JOIN blob_references r ON b.row_id = r.blob_row_id
474
+ WHERE r.record_row_id = ?
475
+
476
+ UNION ALL
477
+
478
+ SELECT
479
+ c.blob_row_id AS row_id,
480
+ b.object_type,
481
+ b.mime_type,
482
+ b.size_bytes,
483
+ b.file_name,
484
+ c.chunk_index,
485
+ c.bytes
486
+ FROM overflow_blob_chunks c
487
+ JOIN blobs b ON c.blob_row_id = b.row_id
488
+ JOIN blob_references r ON b.row_id = r.blob_row_id
489
+ WHERE r.record_row_id = ?
490
+
491
+ ORDER BY row_id, chunk_index"""
492
+ ).strip()