public async Task CreateDatasetRecord(Dataset dataset, DatasetItemContainerDetails containerDetails) { var datasetItem = dataset.ToDatasetStorageItem(d => { d.Created = DateTime.UtcNow; d.CreatedByUserName = dataset.CreatedByUserName; d.CreatedByUserEmail = dataset.CreatedByUserEmail; }); var options = new RequestOptions { PartitionKey = new PartitionKey(dataset.Id.ToString()) }; var datasetRecord = await Client.UpsertDocumentAsync(DatasetDocumentCollectionUri, datasetItem, options).ConfigureAwait(false); var link = new Attachment { Id = containerDetails.Name, ContentType = containerDetails.ContentType, MediaLink = containerDetails.Uri }; link.SetPropertyValue("storageType", "blob"); link.SetPropertyValue("container", containerDetails.Container); link.SetPropertyValue("account", containerDetails.Account); await Client.UpsertAttachmentAsync(datasetRecord.Resource.SelfLink, link, options).ConfigureAwait(false); }
public async Task CreateDatasetStorageDetailsRecord(DatasetItemContainerDetails containerDetails) { var datasetItem = new DatasetStorageDetailsStorageItem { DatasetId = containerDetails.DatasetId, Id = Guid.NewGuid(), Account = containerDetails.Account, Container = containerDetails.Container, StorageType = "blob", PrimaryUri = new Uri(containerDetails.Uri), }; var options = new RequestOptions { PartitionKey = new PartitionKey(containerDetails.DatasetId.ToString()) }; await Client.UpsertDocumentAsync(DatasetDocumentCollectionUri, datasetItem, options).ConfigureAwait(false); }
private async Task <Func <Task> > SetupDataset(DatasetStorageItem dataset, Action <DatasetStorage> setParamsFn = null) { var sasTokens = Services.GetService <SasTokenService>(); var datasetStorage = new DatasetStorage { Id = dataset.Id, DatasetName = dataset.Name, AccountName = sasTokens.DefaultDatasetStorageAccount(), }; await sasTokens.FindUniqueDatasetContainerName(datasetStorage); await sasTokens.CreateDatasetContainer(datasetStorage); var blobClient = await Services.GetBlobClient(); var container = blobClient.GetContainerReference(datasetStorage.ContainerName); foreach (var testFile in TestFiles) { var blob = container.GetBlockBlobReference($"{testFile}.txt"); var content = $"{testFile}, generated {DateTime.UtcNow.ToString()}"; await blob.UploadTextAsync(content); } var datasetId = dataset.Id.ToString(); var requestOptions = new RequestOptions { PartitionKey = new PartitionKey(datasetId) }; var cosmosConfig = Services.GetService <IOptions <CosmosConfiguration> >().Value; var cosmosClient = await Services.GetCosmosClient(); var response = await cosmosClient.CreateDocumentAsync( UriFactory.CreateDocumentCollectionUri(cosmosConfig.Database, cosmosConfig.DatasetCollection), dataset, requestOptions); var containerDetails = new DatasetItemContainerDetails { DatasetId = dataset.Id, Account = datasetStorage.AccountName, Container = datasetStorage.ContainerName, Uri = container.Uri.ToString(), }; var link = new Attachment { Id = containerDetails.Name, ContentType = containerDetails.ContentType, MediaLink = containerDetails.Uri }; link.SetPropertyValue("storageType", "blob"); link.SetPropertyValue("container", containerDetails.Container); link.SetPropertyValue("account", containerDetails.Account); await cosmosClient.UpsertAttachmentAsync( response.Resource.SelfLink, link, requestOptions); setParamsFn?.Invoke(datasetStorage); return(async() => { await cosmosClient.DeleteDocumentAsync( UriFactory.CreateDocumentUri(cosmosConfig.Database, cosmosConfig.DatasetCollection, datasetId), requestOptions); await sasTokens.DeleteDatasetContainer(datasetStorage); }); }