/// <summary> /// Adds <paramref name="builder"/> with name <paramref name="name"/> into the list of builders for /// <paramref name="services"/>. /// </summary> /// <param name="services">Service collection for which the builder is added.</param> /// <param name="name">The name of the database builder.</param> /// <param name="builder">Database builder.</param> /// <returns><see langword="true"/>, if this was the first builder added, otherwise <see langword="false"/>.</returns> internal static void AddBuilder(IServiceCollection services, string name, KormBuilder builder) { Dictionary <string, KormBuilder> builders = AddBuildersDictionary(services); if (builders.ContainsKey(name)) { throw new ArgumentException(string.Format(Resources.DuplicateDatabaseName, name), nameof(name)); } builders.Add(name, builder); }
private static KormBuilder AddKormBuilder( IServiceCollection services, string name, KormConnectionSettings connectionSettings) { AddDatabaseFactory(services); var builder = new KormBuilder(services, connectionSettings); DatabaseFactory.AddBuilder(services, name, builder); services.TryAdd(ServiceDescriptor.Scoped <IDatabase>( serviceProvider => serviceProvider.GetRequiredService <IDatabaseFactory>().GetDatabase(name))); return(builder); }
IMigrationsRunner IDatabaseFactory.GetMigrationsRunner(string name) { KormBuilder builder = GetBuilder(name); return(builder.MigrationsRunner); }
IDatabase IDatabaseFactory.GetDatabase(string name) { KormBuilder builder = GetBuilder(name); return(_databases.GetOrAdd(name, _ => builder.Build())); }