public static IServiceCollection AddDatabase(this IServiceCollection services, IConfiguration configuration)
        {
            // Registers databases
            services.AddScoped <Database>();
            services.AddScoped <Database1>();
            services.AddScoped <Database2>();
            services.AddScoped <Database3>();
            services.AddScoped <Database4>();
            services.AddScoped <Database5>();

            // Configures database options
            services.Configure <DatabaseOptions>(configuration);

            // Decrypts database connection string
            var rsa = X509.GetRSAPrivateKey(configuration.GetValue <string>(X509.CertFileName), configuration.GetValue <string>(X509.CertFileKey));

            services.Configure <DatabaseOptions>(options => {
                if (!string.IsNullOrEmpty(options.DefaultConnection))
                {
                    options.DefaultConnection = rsa.Decrypt(options.DefaultConnection);
                }
                if (!string.IsNullOrEmpty(options.Connection1))
                {
                    options.Connection1 = rsa.Decrypt(options.Connection1);
                }
                if (!string.IsNullOrEmpty(options.Connection2))
                {
                    options.Connection2 = rsa.Decrypt(options.Connection2);
                }
                if (!string.IsNullOrEmpty(options.Connection3))
                {
                    options.Connection3 = rsa.Decrypt(options.Connection3);
                }
                if (!string.IsNullOrEmpty(options.Connection4))
                {
                    options.Connection4 = rsa.Decrypt(options.Connection4);
                }
                if (!string.IsNullOrEmpty(options.Connection5))
                {
                    options.Connection5 = rsa.Decrypt(options.Connection5);
                }
            });

            return(services);
        }