Skip to content

Commit 0e3bf33

Browse files
committed
handle-hex-better
1 parent 6465249 commit 0e3bf33

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

stix2/datastore/relational_db/database_backends/database_backend_base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,10 @@ def determine_sql_type_for_key_as_id(): # noqa: F811
105105
@staticmethod
106106
def array_allowed():
107107
return False
108+
109+
def generate_value(self, stix_type, value):
110+
sql_type = stix_type.determine_sql_type(self)
111+
if sql_type == self.determine_sql_type_for_string_property():
112+
return value
113+
elif sql_type == self.determine_sql_type_for_hex_property():
114+
return bytes.fromhex(value)

stix2/datastore/relational_db/database_backends/postgres_backend.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,12 @@ def schema_for_core():
5050

5151
@staticmethod
5252
def determine_sql_type_for_binary_property(): # noqa: F811
53-
return Text
53+
return PostgresBackend.determine_sql_type_for_string_property()
5454

5555
@staticmethod
5656
def determine_sql_type_for_hex_property(): # noqa: F811
57-
return LargeBinary
57+
# return LargeBinary
58+
return PostgresBackend.determine_sql_type_for_string_property()
5859

5960
@staticmethod
6061
def determine_sql_type_for_timestamp_property(): # noqa: F811

stix2/datastore/relational_db/input_creation.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,8 @@ def generate_insert_information(self, name, stix_object, **kwargs): # noqa: F81
140140

141141

142142
@add_method(HexProperty)
143-
def generate_insert_information(self, name, stix_object, **kwargs): # noqa: F811
144-
v = bytes.fromhex(stix_object[name])
145-
return {name: v}
143+
def generate_insert_information(self, name, stix_object, data_sink, **kwargs): # noqa: F811
144+
return {name: data_sink.db_backend.generate_value(self, stix_object[name])}
146145

147146

148147
def generate_insert_for_hashes(
@@ -249,7 +248,7 @@ def generate_insert_information( # noqa: F811
249248
else:
250249
if db_backend.array_allowed():
251250
if isinstance(self.contained, HexProperty):
252-
return {name: [bytes.fromhex(x) for x in stix_object[name]]}
251+
return {name: [data_sink.db_backend.generate_value(self.contained, x) for x in stix_object[name]]}
253252
else:
254253
return {name: stix_object[name]}
255254

0 commit comments

Comments
 (0)