protected override void OnConfiguring(CouchOptionsBuilder optionsBuilder)
 {
     optionsBuilder
     .UseEndpoint("http://localhost:5984/")
     .OverrideExistingIndexes()
     .UseBasicAuthentication("admin", "admin");
 }
Beispiel #2
0
 protected override void OnConfiguring(CouchOptionsBuilder optionsBuilder)
 {
     optionsBuilder
     .UseEndpoint("http://localhost:5984/")
     .EnsureDatabaseExists()
     .UseBasicAuthentication(username: "******", password: "******");
 }
Beispiel #3
0
        protected CouchContext(CouchOptions options)
        {
            Check.NotNull(options, nameof(options));

            var optionsBuilder  = new CouchOptionsBuilder(options);
            var databaseBuilder = new CouchDatabaseBuilder();

#pragma warning disable CA2214 // Do not call overridable methods in constructors
            OnConfiguring(optionsBuilder);
            OnDatabaseCreating(databaseBuilder);
#pragma warning restore CA2214 // Do not call overridable methods in constructors

            Client = new CouchClient(options);
            IEnumerable <PropertyInfo> databasePropertyInfos = GetDatabaseProperties();

            foreach (PropertyInfo dbProperty in databasePropertyInfos)
            {
                Type documentType = dbProperty.PropertyType.GetGenericArguments()[0];

                var initDatabasesTask = (Task)InitDatabasesGenericMethod.MakeGenericMethod(documentType)
                                        .Invoke(this, new object[] { dbProperty, options });
                initDatabasesTask.ConfigureAwait(false).GetAwaiter().GetResult();

                var applyDatabaseChangesTask = (Task)ApplyDatabaseChangesGenericMethod.MakeGenericMethod(documentType)
                                               .Invoke(this, new object[] { dbProperty, options, databaseBuilder });
                applyDatabaseChangesTask.ConfigureAwait(false).GetAwaiter().GetResult();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Creates a new CouchDB client.
        /// </summary>
        /// <param name="endpoint">URI to the CouchDB endpoint.</param>
        /// <param name="couchSettingsFunc">A function to configure options.</param>
        public CouchClient(Uri endpoint, Action <CouchOptionsBuilder>?couchSettingsFunc = null)
        {
            var optionsBuilder = new CouchOptionsBuilder();

            couchSettingsFunc?.Invoke(optionsBuilder);
            _options     = optionsBuilder.Options;
            Endpoint     = endpoint;
            _flurlClient = GetConfiguredClient();
        }
        public static IServiceCollection AddCouchContext <TContext>(this IServiceCollection services,
                                                                    Action <CouchOptionsBuilder <TContext> > optionBuilderAction)
            where TContext : CouchContext
        {
            NotNull(services, nameof(services));
            NotNull(optionBuilderAction, nameof(optionBuilderAction));

            var builder = new CouchOptionsBuilder <TContext>();

            optionBuilderAction?.Invoke(builder);
            return(services
                   .AddSingleton(builder.Options)
                   .AddSingleton <TContext>());
        }
Beispiel #6
0
        /// <summary>
        /// Creates a new CouchDB client.
        /// </summary>
        /// <param name="couchSettingsFunc">A function to configure options.</param>
        public CouchClient(Action <CouchOptionsBuilder>?couchSettingsFunc = null)
        {
            var optionsBuilder = new CouchOptionsBuilder();

            couchSettingsFunc?.Invoke(optionsBuilder);

            if (optionsBuilder.Options.Endpoint == null)
            {
                throw new InvalidOperationException("Database endpoint must be set.");
            }

            _options     = optionsBuilder.Options;
            Endpoint     = _options.Endpoint;
            _flurlClient = GetConfiguredClient();
        }
Beispiel #7
0
        protected CouchContext(CouchOptions options)
        {
            Check.NotNull(options, nameof(options));

            var optionsBuilder  = new CouchOptionsBuilder(options);
            var databaseBuilder = new CouchDatabaseBuilder();

#pragma warning disable CA2214 // Do not call overridable methods in constructors
            OnConfiguring(optionsBuilder);
            OnDatabaseCreating(databaseBuilder);
#pragma warning restore CA2214 // Do not call overridable methods in constructors

            Client = new CouchClient(options);

            SetupDiscriminators(databaseBuilder);
            InitializeDatabases(options, databaseBuilder);
        }
Beispiel #8
0
        public static ContainerBuilder AddCouchContext <TContext>(this ContainerBuilder builder,
                                                                  Action <CouchOptionsBuilder <TContext> > optionBuilderAction)
            where TContext : CouchContext
        {
            Check.NotNull(builder, nameof(builder));
            Check.NotNull(optionBuilderAction, nameof(optionBuilderAction));

            var optionsBuilder = new CouchOptionsBuilder <TContext>();

            optionBuilderAction?.Invoke(optionsBuilder);

            builder
            .RegisterInstance(optionsBuilder.Options)
            .AsSelf();

            builder
            .RegisterType <TContext>()
            .SingleInstance();

            return(builder);
        }
Beispiel #9
0
        protected CouchContext(CouchOptions options)
        {
            Check.NotNull(options, nameof(options));

            var builder = new CouchOptionsBuilder(options);

#pragma warning disable CA2214 // Do not call overridable methods in constructors
            OnConfiguring(builder);
#pragma warning restore CA2214 // Do not call overridable methods in constructors

            Client = new CouchClient(options);

            PropertyInfo[] databasePropertyInfos = GetDatabaseProperties();

            foreach (PropertyInfo propertyInfo in databasePropertyInfos)
            {
                Type   documentType = propertyInfo.PropertyType.GetGenericArguments()[0];
                object?database;
                if (options.CheckDatabaseExists)
                {
                    MethodInfo getOrCreateDatabaseMethod = GetOrCreateDatabaseAsyncGenericMethod.MakeGenericMethod(documentType);
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
                    var parameters = new[] { (object)null, null, default(CancellationToken) };
#pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type.
                    var task = (Task)getOrCreateDatabaseMethod.Invoke(Client, parameters);
                    task.ConfigureAwait(false).GetAwaiter().GetResult();
                    PropertyInfo resultProperty = task.GetType().GetProperty(nameof(Task <object> .Result));
                    database = resultProperty.GetValue(task);
                }
                else
                {
                    MethodInfo getDatabaseMethod = GetDatabaseGenericMethod.MakeGenericMethod(documentType);
                    database = getDatabaseMethod.Invoke(Client, Array.Empty <object>());
                }
                propertyInfo.SetValue(this, database);
            }
        }
Beispiel #10
0
 protected virtual void OnConfiguring(CouchOptionsBuilder optionsBuilder)
 {
 }