Skip to content

Commit

Permalink
feat(DatasetFiles): add helper to check if file exists
Browse files Browse the repository at this point in the history
  • Loading branch information
cheikhgwane authored and nazarfil committed Jul 19, 2024
1 parent 9861b04 commit c76d890
Showing 1 changed file with 72 additions and 7 deletions.
79 changes: 72 additions & 7 deletions openhexa/sdk/datasets/dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,15 @@ class DatasetFile:
_download_url = None
version = None

def __init__(self, version: any, id: str, uri: str, filename: str, content_type: str, created_at: str):
def __init__(
self,
version: any,
id: str,
uri: str,
filename: str,
content_type: str,
created_at: str,
):
self.version = version
self.id = id
self.uri = uri
Expand Down Expand Up @@ -91,15 +99,23 @@ def _next_page(self):
}
}
""",
{"datasetId": self.dataset.id, "page": self.page_number + 1, "perPage": self.per_page},
{
"datasetId": self.dataset.id,
"page": self.page_number + 1,
"perPage": self.per_page,
},
)
if res["dataset"] is None:
raise ValueError(f"Dataset {self.dataset.id} does not exist")

if res["dataset"]["versions"]["totalPages"] == self.page_number + 1:
self.has_next_page = False

return Page(parent=self, items=res["dataset"]["versions"]["items"], item_to_value=self.item_to_value)
return Page(
parent=self,
items=res["dataset"]["versions"]["items"],
item_to_value=self.item_to_value,
)


class VersionFilesIterator(Iterator):
Expand Down Expand Up @@ -140,15 +156,23 @@ def _next_page(self):
}
}
""",
{"versionId": self.version.id, "page": self.page_number + 1, "perPage": self.per_page},
{
"versionId": self.version.id,
"page": self.page_number + 1,
"perPage": self.per_page,
},
)
if res["datasetVersion"] is None:
raise ValueError(f"Dataset version {self.version.id} does not exist")

if res["datasetVersion"]["files"]["totalPages"] == self.page_number + 1:
self.has_next_page = False

return Page(parent=self, items=res["datasetVersion"]["files"]["items"], item_to_value=self.item_to_value)
return Page(
parent=self,
items=res["datasetVersion"]["files"]["items"],
item_to_value=self.item_to_value,
)


class DatasetVersion:
Expand Down Expand Up @@ -256,7 +280,13 @@ def add_file(
}
}
""",
{"input": {"versionId": self.id, "contentType": mime_type, "uri": filename}},
{
"input": {
"versionId": self.id,
"contentType": mime_type,
"uri": filename,
}
},
)

if data["createDatasetVersionFile"]["success"] is False:
Expand All @@ -273,6 +303,38 @@ def add_file(
created_at=result["file"]["createdAt"],
)

def exists(self, objectKey: str):
"""
Check if an object with the specified key exists.
This method checks if an object identified by `objectKey` exists in the dataset.
Args:
objectKey (str): The key of the object to check for existence.
Returns
-------
bool: True if the object exists, False otherwise.
"""
data = graphql(
"""
query getDatasetFile($versionId: ID!, $filename: String!) {
datasetVersion(id: $versionId) {
fileByName(name: $filename) {
id
uri
filename
contentType
createdAt
}
}
}
""",
{"versionId": self.id, "filename": objectKey},
)

return data["datasetVersion"]["fileByName"] is not None

def raise_upload_exception(self, errors):
"""Raise an exception if an error occurs on upload."""
if "LOCKED_VERSION" in errors:
Expand Down Expand Up @@ -346,7 +408,10 @@ def create_version(self, name: typing.Any) -> DatasetVersion:

version = data["version"]
self._latest_version = DatasetVersion(
dataset=self, id=version["id"], name=version["name"], created_at=version["createdAt"]
dataset=self,
id=version["id"],
name=version["name"],
created_at=version["createdAt"],
)

return self.latest_version
Expand Down

0 comments on commit c76d890

Please sign in to comment.