Skip to content

Commit af7cf97

Browse files
committed
shorten table names based in extension definitions
1 parent 0d7862d commit af7cf97

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

stix2/datastore/relational_db/input_creation.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from stix2.datastore.relational_db.add_method import add_method
44
from stix2.datastore.relational_db.utils import (
5-
SCO_COMMON_PROPERTIES, SDO_COMMON_PROPERTIES, canonicalize_table_name,
5+
SCO_COMMON_PROPERTIES, SDO_COMMON_PROPERTIES, canonicalize_table_name, shorten_extension_definition_id
66
)
77
from stix2.properties import (
88
BinaryProperty, BooleanProperty, DictionaryProperty,
@@ -153,9 +153,10 @@ def generate_insert_information(self, name, stix_object, data_sink=None, table_n
153153
for ex_name, ex in stix_object["extensions"].items():
154154
# ignore new extensions - they have no properties
155155
if ex.extension_type is None or not ex.extension_type.startswith("new"):
156-
if ex_name.startswith("extension-definition"):
157-
ex_name = ex_name[0:30]
158-
ex_name = ex_name.replace("extension-definition-", "ext_def")
156+
if ex_name.startswith("extension-definition--"):
157+
# ex_name = ex_name[0:30]
158+
# ex_name = ex_name.replace("extension-definition-", "ext_def")
159+
ex_name = shorten_extension_definition_id(ex_name)
159160
bindings = {
160161
"id": stix_object["id"],
161162
"ext_table_name": canonicalize_table_name(ex_name, schema_name),
@@ -510,9 +511,10 @@ def generate_insert_for_sub_object(
510511
bindings["id"] = foreign_key_value
511512
if parent_table_name and (not is_extension or level > 0):
512513
type_name = parent_table_name + "_" + type_name
513-
if type_name.startswith("extension-definition"):
514-
type_name = type_name[0:30]
515-
type_name = type_name.replace("extension-definition-", "ext_def")
514+
if type_name.startswith("extension-definition--"):
515+
# type_name = type_name[0:30]
516+
# type_name = type_name.replace("extension-definition-", "ext_def")
517+
type_name = shorten_extension_definition_id(type_name)
516518
sub_insert_statements = list()
517519
for name, prop in stix_object._properties.items():
518520
if name in stix_object:

stix2/datastore/relational_db/table_creation.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from stix2.datastore.relational_db.utils import (
88
SCO_COMMON_PROPERTIES, SDO_COMMON_PROPERTIES, canonicalize_table_name,
99
determine_column_name, determine_sql_type_from_stix, flat_classes,
10-
get_stix_object_classes,
10+
get_stix_object_classes, shorten_extension_definition_id
1111
)
1212
from stix2.properties import (
1313
BinaryProperty, BooleanProperty, DictionaryProperty,
@@ -800,9 +800,10 @@ def generate_object_table(
800800
else:
801801
table_name = stix_object_class.__name__
802802
# avoid long table names
803-
if table_name.startswith("extension-definition"):
804-
table_name = table_name[0:30]
805-
table_name = table_name.replace("extension-definition-", "ext_def")
803+
if table_name.startswith("extension-definition--"):
804+
# table_name = table_name[0:30]
805+
# table_name = table_name.replace("extension-definition-", "ext_def")
806+
table_name = shorten_extension_definition_id(table_name)
806807
if parent_table_name:
807808
table_name = parent_table_name + "_" + table_name
808809
if is_embedded_object:

stix2/datastore/relational_db/utils.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ def table_name_for(stix_type_or_class):
109109
# Applies to registered extension-definition style extensions only.
110110
# Their "_type" attribute is actually set to the extension definition ID,
111111
# rather than a STIX type.
112-
if table_name.startswith("extension-definition"):
113-
table_name = table_name[0:30]
114-
table_name = table_name.replace("extension-definition-", "ext_def")
115-
112+
if table_name.startswith("extension-definition--"):
113+
# table_name = table_name[0:30]
114+
# table_name = table_name.replace("extension-definition-", "ext_def")
115+
table_name = shorten_extension_definition_id(table_name)
116116
table_name = canonicalize_table_name(table_name)
117117
return table_name
118118

@@ -169,3 +169,12 @@ def determine_column_name(cls_or_inst): # noqa: F811
169169
return "string_value"
170170
elif is_class_or_instance(cls_or_inst, TimestampProperty):
171171
return "timestamp_value"
172+
173+
174+
def shorten_extension_definition_id(id):
175+
id_parts = id.split("--")
176+
uuid_parts = id_parts[1].split("-")
177+
shortened_part = ""
178+
for p in uuid_parts:
179+
shortened_part = shortened_part + p[0] + p[-1]
180+
return "ext_def_" + shortened_part

0 commit comments

Comments
 (0)