Skip to content

Commit e46fccb

Browse files
author
Max Wang
committed
remove _wait_for_entity_ready and some other refactor
1 parent 96e0bea commit e46fccb

1 file changed

Lines changed: 13 additions & 21 deletions

File tree

src/dataverse_sdk/odata.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ def _create_entity(
698698
display_name: str,
699699
attributes: List[Dict[str, Any]],
700700
solution_unique_name: Optional[str] = None,
701-
) -> str:
701+
) -> Dict[str, Any]:
702702
url = f"{self.api}/EntityDefinitions"
703703
payload = {
704704
"@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata",
@@ -716,24 +716,18 @@ def _create_entity(
716716
if solution_unique_name:
717717
params = {"SolutionUniqueName": solution_unique_name}
718718
self._request("post", url, json=payload, params=params)
719-
ent = self._wait_for_entity_ready(schema_name)
719+
ent = self._get_entity_by_schema(
720+
schema_name,
721+
headers={"Consistency": "Strong"},
722+
)
720723
if not ent or not ent.get("EntitySetName"):
721724
raise RuntimeError(
722725
f"Failed to create or retrieve entity '{schema_name}' (EntitySetName not available)."
723726
)
724-
return ent["MetadataId"]
725-
726-
def _wait_for_entity_ready(self, schema_name: str, delays: Optional[List[int]] = None) -> Optional[Dict[str, Any]]:
727-
import time
728-
delays = delays or [0, 2, 5, 10, 20, 30]
729-
ent: Optional[Dict[str, Any]] = None
730-
strong_consistency_headers = {"Consistency": "Strong"}
731-
for idx, delay in enumerate(delays):
732-
if idx > 0 and delay > 0:
733-
time.sleep(delay)
734-
ent = self._get_entity_by_schema(schema_name, headers=strong_consistency_headers)
735-
if ent and ent.get("EntitySetName"):
736-
return ent
727+
if not ent.get("MetadataId"):
728+
raise RuntimeError(
729+
f"MetadataId missing after creating entity '{schema_name}'."
730+
)
737731
return ent
738732

739733
def _normalize_attribute_schema(self, entity_schema: str, column_name: str) -> str:
@@ -1191,20 +1185,18 @@ def _create_table(
11911185
if not solution_unique_name:
11921186
raise ValueError("solution_unique_name cannot be empty")
11931187

1194-
metadata_id = self._create_entity(
1188+
metadata = self._create_entity(
11951189
entity_schema,
11961190
tablename,
11971191
attributes,
11981192
solution_unique_name,
11991193
)
1200-
ent2: Dict[str, Any] = self._wait_for_entity_ready(entity_schema) or {}
1201-
logical_name = ent2.get("LogicalName")
12021194

12031195
return {
12041196
"entity_schema": entity_schema,
1205-
"entity_logical_name": logical_name,
1206-
"entity_set_name": ent2.get("EntitySetName") if ent2 else None,
1207-
"metadata_id": metadata_id,
1197+
"entity_logical_name": metadata.get("LogicalName"),
1198+
"entity_set_name": metadata.get("EntitySetName"),
1199+
"metadata_id": metadata.get("MetadataId"),
12081200
"columns_created": created_cols,
12091201
}
12101202

0 commit comments

Comments
 (0)