MCPcopy Create free account
hub / github.com/IQEngine/IQEngine / sync

Function sync

api/database/datasource_repo.py:61–101  ·  view source on GitHub ↗
(account: str, container: str)

Source from the content-addressed store, hash-verified

59
60
61async def sync(account: str, container: str):
62 import database.metadata_repo
63
64 azure_blob_client = AzureBlobClient(account, container)
65 datasource = await get(account, container)
66 if datasource is None:
67 raise Exception(f"[SYNC] Datasource {account}/{container} does not exist")
68 if datasource.sasToken:
69 azure_blob_client.set_sas_token(decrypt(datasource.sasToken.get_secret_value()))
70 metadatas = azure_blob_client.get_metadata_files()
71 async for metadata in metadatas:
72 filepath = metadata[0].replace(".sigmf-meta", "")
73 try:
74 if await database.metadata_repo.exists(account, container, filepath):
75 print(f"[SYNC] Metadata already exists for {filepath}")
76 continue
77 if not await azure_blob_client.blob_exist(filepath + ".sigmf-data"):
78 print(f"[SYNC] Data file {filepath} does not exist for metadata file")
79 continue
80 metadata = metadata[1]
81 metadata.globalMetadata.traceability_origin = DataSourceReference(
82 **{
83 "type": "api",
84 "account": account,
85 "container": container,
86 "file_path": filepath,
87 }
88 )
89 metadata.globalMetadata.traceability_revision = 0
90 file_length = await azure_blob_client.get_file_length(
91 filepath + ".sigmf-data"
92 )
93 metadata.globalMetadata.traceability_sample_length = (
94 file_length
95 / get_bytes_per_iq_sample(metadata.globalMetadata.core_datatype)
96 )
97 await database.metadata_repo.create(metadata)
98 print(f"[SYNC] Created metadata for {filepath}")
99 except Exception as e:
100 print(f"[SYNC] Error creating metadata for {filepath}: {e}")
101 print(f"[SYNC] Finished syncing {account}/{container}")
102
103
104async def create(datasource: DataSource, user: Optional[dict]) -> DataSource:

Callers 1

DataSourceRowFunction · 0.85

Calls 10

set_sas_tokenMethod · 0.95
get_metadata_filesMethod · 0.95
blob_existMethod · 0.95
get_file_lengthMethod · 0.95
AzureBlobClientClass · 0.90
decryptFunction · 0.90
DataSourceReferenceClass · 0.90
get_bytes_per_iq_sampleFunction · 0.90
getFunction · 0.70
createMethod · 0.65

Tested by

no test coverage detected