public CoreIdGenerator(IConfiguration config) { var storageConnection = config.GetSection("ConnectionStrings:AzureBlobStorage").Get <BlobStorageConnection>(); var batchSize = config.GetValue <int>("IdGeneratorBatchSize"); _cloudStorageAccount = Microsoft.Azure.Storage.CloudStorageAccount.Parse(storageConnection.ConnectionString); _containerName = storageConnection.ContainerName; _dataStore = BlobOptimisticDataStore.CreateAsync(_cloudStorageAccount, _containerName).Result; _generator = new UniqueIdGenerator(_dataStore) { BatchSize = batchSize }; }
public void ConfigureServices(IServiceCollection services) { // Enable header based versioning services.AddApiVersioning(o => { o.ReportApiVersions = true; o.AssumeDefaultVersionWhenUnspecified = true; o.DefaultApiVersion = new ApiVersion(1, 0); o.ApiVersionReader = new HeaderApiVersionReader("api-version"); }) .AddSwaggerGen(setupAction => { setupAction.SwaggerDoc("v1", new OpenApiInfo { Title = APIName, Version = "v1" }); var xmlCommentsFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlCommentsFullPath = Path.Combine(AppContext.BaseDirectory, xmlCommentsFile); setupAction.IncludeXmlComments(xmlCommentsFullPath); }) .AddServicesRegistrations() .AddRepositoriesRegistrations() .AddProvidersRegistrations() // SQL Server configuration .AddDbContext <AppDBContext>(opts => opts.UseSqlServer(Configuration.GetConnectionString("UrlShortnerDB"))) // IOptimisticDataStore for SnowMaker .AddSingleton <IOptimisticDataStore>(sp => { var cloudStorageAccount = CloudStorageAccount.Parse(Configuration["AppSettings:SnowMakerConfiguration:StorageAccountConnection"]); // I know it is bad practice but as per my knowledge there is no support for async resolve option in Microsoft DI return(BlobOptimisticDataStore.CreateAsync(cloudStorageAccount, UniqueKeysStorageContainerName).Result); }) //SnowMaker UniqueIdGenerator .AddSingleton <IUniqueIdGenerator>(sp => { var dataStore = sp.GetService <IOptimisticDataStore>(); if (dataStore != null) { return(new UniqueIdGenerator(dataStore)); } return(null); }); services.AddAutoMapper(typeof(Startup)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); }
protected override async Task <IOptimisticDataStore> BuildStoreAsync(TestScope scope) { return(await BlobOptimisticDataStore.CreateAsync(storageAccount, scope.ContainerName)); }