public async Task Generate(IMarkdownFunctionSettings settings) { _logger.Information("Generating model"); await _ephemeralRepository.GenerateModel(settings.ModelId, async reader => { var model = reader.Read <Model>().FirstOrDefault(); var decayHierarchy = reader.Read <DecayHierarchy>().ToList(); var elasticityHierarchy = reader.Read <ElasticityHierarchy>().ToList(); var workingSet64 = Process.GetCurrentProcess().WorkingSet64; _logger.Debug("Generated model. Working Set is {Size} ({Bytes})", workingSet64.ToOrdinalString(), workingSet64); _logger.Information("Writing data to S3"); var modelPath = SmS3Path.ModelPath(SmS3PathName.Model, settings.S3ModelBucketName, settings.S3ModelTemplate, settings.ModelId, model.ModelRunId); await _s3Repository.WriteRecord(modelPath, model); var elasticityPath = SmS3Path.ModelPath(SmS3PathName.ElasticityHierarchy, settings.S3ModelBucketName, settings.S3ModelTemplate, settings.ModelId, model.ModelRunId); await _s3Repository.WriteRecords(elasticityPath, elasticityHierarchy); var decayPath = SmS3Path.ModelPath(SmS3PathName.DecayHierarchy, settings.S3ModelBucketName, settings.S3ModelTemplate, settings.ModelId, model.ModelRunId); await _s3Repository.WriteRecords(decayPath, decayHierarchy); }); _logger.Information("Model generation complete"); }
public async Task <SmModelData> GetModelData(IMarkdownFunctionSettings settings) { var elasticityPath = SmS3Path.ModelPath(SmS3PathName.ElasticityHierarchy, settings); var elasticity = await _s3Repository.ReadRecords <ElasticityHierarchy>(elasticityPath); var decayPath = SmS3Path.ModelPath(SmS3PathName.DecayHierarchy, settings); var decay = await _s3Repository.ReadRecords <DecayHierarchy>(decayPath); return(SmModelData.Build(elasticity, decay)); }