Beispiel #1
0
        public async Task<Uri> StoreSample(DataSample sample)
        {
            sample.Recalculate();

            var header = new DataSampleItem()
            {
                Key = sample.Key,
                Created = sample.Created,
                Modified = sample.Modified,
                Label = sample.Label,
                SourceDataUrl = sample.SourceDataUrl,
                Description = sample.Description,
                StartDate = sample.StartDate,
                EndDate = sample.EndDate
            };

            await _db.TransactAsync(async () =>
            {
                var summaryId = await _db.InsertAsync(sample.Summary);

                header.SummaryId = summaryId.Value;

                var sampleId = await _db.InsertAsync(header);

                if (sample.SampleData.Any())
                {
                    var dataBlobs = sample.SampleData.Select(s => DataItemBlob.Create(s, sampleId.Value));

                    var count = await _db.InsertManyAsync(dataBlobs);
                }

                if (sample.Metadata != null && sample.Metadata.Fields.Any())
                {
                    var flds = sample.Metadata.Fields.Select(f => new SampleFieldMetadata()
                    {
                        DataType = f.DataType,
                        FieldUsage = f.FieldUsage,
                        Index = f.Index,
                        Label = f.Label,
                        Name = f.Name,
                        SampleId = sampleId.Value,
                        DataModel = f.DataModel
                    });

                    var count = await _db.InsertManyAsync(flds);
                }
            });

            sample.Id = header.Id;
            sample.Summary.Id = header.SummaryId;

            return header.Uri;
        }