Fix object encode

This commit is contained in:
liyaxing
2023-09-15 14:01:26 +08:00
parent 6ea83729a5
commit b59af5d4a7
5 changed files with 38 additions and 13 deletions
+2 -2
View File
@@ -1,9 +1,9 @@
from enum import Enum
from enum import IntEnum
from ..object import ObjectID
ChunkID = ObjectID
class PositionType(Enum):
class PositionType(IntEnum):
Unknown = 1
Device = 2
File = 3
+17 -7
View File
@@ -1,4 +1,3 @@
# define a object type enum
from abc import ABC, abstractmethod
from enum import Enum
@@ -6,6 +5,16 @@ from .object_id import ObjectID, ObjectType
import hashlib
import json
import pickle
from typing import Any
class ObjectEnhancedJSONEncoder(json.JSONEncoder):
def default(self, o: Any) -> Any:
if isinstance(o, ObjectID):
return o.to_base58()
return super().default(o)
class KnowledgeObject(ABC):
def __init__(self, object_type: ObjectType, desc: dict = {}, body: dict = {}):
@@ -18,7 +27,7 @@ class KnowledgeObject(ABC):
def object_id(self) -> ObjectID:
return self.calculate_id()
def set_desc_with_key_value(self, key, value):
self.desc[key] = value
@@ -27,7 +36,7 @@ class KnowledgeObject(ABC):
def get_desc(self) -> dict:
return self.desc
def set_body_with_key_value(self, key, value):
self.body[key] = value
@@ -36,10 +45,13 @@ class KnowledgeObject(ABC):
def get_body(self) -> dict:
return self.body
def calculate_id(self):
# Convert the object_type and desc to string and compute the SHA256 hash
data = json.dumps({"object_type": self.object_type, "desc": self.desc})
data = json.dumps(
{"object_type": self.object_type, "desc": self.desc},
cls=ObjectEnhancedJSONEncoder,
)
sha256 = hashlib.sha256()
sha256.update(data.encode())
return ObjectID(sha256.digest())
@@ -50,5 +62,3 @@ class KnowledgeObject(ABC):
@staticmethod
def decode(data: bytes):
return pickle.loads(data)
+2 -2
View File
@@ -1,12 +1,12 @@
# define a object type enum
from abc import ABC, abstractmethod
from enum import Enum
from enum import IntEnum
from .hash import HashValue
import base58
import base36
class ObjectType(Enum):
class ObjectType(IntEnum):
Chunk = 7
Image = 101
Video = 102
+2 -2
View File
@@ -4,10 +4,10 @@ import sqlite3
from typing import List, Tuple, Optional
import logging
import os
from enum import Enum
from enum import IntEnum
class ObjectRelationType(Enum):
class ObjectRelationType(IntEnum):
Parent = 1