Exemple #1
0
        /// <summary>
        /// Creates a new DocumentStore with the supplied StoreOptions
        /// </summary>
        /// <param name="options"></param>
        public DocumentStore(StoreOptions options)
        {
            options.ApplyConfiguration();
            options.CreatePatching();
            options.Validate();

            Options      = options;
            _logger      = options.Logger();
            Serializer   = options.Serializer();
            _retryPolicy = options.RetryPolicy();

            if (options.CreateDatabases != null)
            {
                IDatabaseGenerator databaseGenerator = new DatabaseGenerator();
                databaseGenerator.CreateDatabases(Tenancy, options.CreateDatabases);
            }

            Tenancy.Initialize();

            Schema = Tenancy.Schema;

            Storage.PostProcessConfiguration();

            Advanced = new AdvancedOptions(this);

            Diagnostics = new Diagnostics(this);

            Transform = new DocumentTransforms(this, Tenancy.Default);

            options.InitialData.Each(x => x.Populate(this));
        }
Exemple #2
0
        /// <summary>
        /// Creates a new DocumentStore with the supplied StoreOptions
        /// </summary>
        /// <param name="options"></param>
        public DocumentStore(StoreOptions options)
        {
            _options           = options;
            _connectionFactory = options.ConnectionFactory();

            _logger = options.Logger();

            Schema = new DocumentSchema(_options, _connectionFactory, _logger);


            _serializer = options.Serializer();

            var cleaner = new DocumentCleaner(_connectionFactory, Schema.As <DocumentSchema>());

            Advanced = new AdvancedOptions(cleaner, options, _serializer, Schema);

            Diagnostics = new Diagnostics(Schema);


            CreateDatabaseObjects();

            Transform = new DocumentTransforms(this);

            options.InitialData.Each(x => x.Populate(this));
        }
Exemple #3
0
        /// <summary>
        /// Creates a new DocumentStore with the supplied StoreOptions
        /// </summary>
        /// <param name="options"></param>
        public DocumentStore(StoreOptions options)
        {
            options.CreatePatching();

            _options           = options;
            _connectionFactory = options.ConnectionFactory();

            _logger = options.Logger();

            Schema = new DocumentSchema(_options, _connectionFactory, _logger);

            _serializer = options.Serializer();

            var cleaner = new DocumentCleaner(_connectionFactory, Schema.As <DocumentSchema>());

            Advanced = new AdvancedOptions(cleaner, options, _serializer, Schema);

            Diagnostics = new Diagnostics(Schema);


            CreateDatabaseObjects();

            Transform = new DocumentTransforms(this, _connectionFactory);

            options.InitialData.Each(x => x.Populate(this));


            if (options.AutoCreateSchemaObjects != AutoCreate.None)
            {
                Schema.As <DocumentSchema>().RebuildSystemFunctions();
            }
        }
        /// <summary>
        /// Asynchronously apply one or more Javascript document transformations
        /// </summary>
        /// <param name="store"></param>
        /// <param name="apply"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task TransformAsync(this IDocumentStore store, Action <IDocumentTransforms> apply, CancellationToken token = default)
        {
            var s = store.As <DocumentStore>();

            s.Tenancy.Default.EnsureStorageExists(typeof(TransformSchema));
            using var transforms = new DocumentTransforms(s, s.Tenancy.Default);
            apply(transforms);
            await transforms.Session.SaveChangesAsync(token);
        }
        /// <summary>
        /// Synchronously apply one or more Javascript document transformations
        /// </summary>
        /// <param name="store"></param>
        /// <param name="apply"></param>
        public static void Transform(this IDocumentStore store, Action <IDocumentTransforms> apply)
        {
            var s = store.As <DocumentStore>();

            s.Tenancy.Default.EnsureStorageExists(typeof(TransformSchema));

            using var transforms = new DocumentTransforms(s, s.Tenancy.Default);
            apply(transforms);
            transforms.Session.SaveChanges();
        }
Exemple #6
0
        /// <summary>
        /// Asynchronously apply one or more Javascript document transformations
        /// </summary>
        /// <param name="store"></param>
        /// <param name="apply"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task TransformAsync(this IDocumentStore store, string tenantId, Action <IDocumentTransforms> apply, CancellationToken token = default)
        {
            var s = store.As <DocumentStore>();

            var tenant = await s.Tenancy.GetTenantAsync(tenantId).ConfigureAwait(false);

            await tenant.Database.EnsureStorageExistsAsync(typeof(TransformSchema), token).ConfigureAwait(false);

            using var transforms = new DocumentTransforms(s, tenant);
            apply(transforms);
            await transforms.Session.SaveChangesAsync(token).ConfigureAwait(false);
        }
Exemple #7
0
        /// <summary>
        /// Synchronously apply one or more Javascript document transformations
        /// </summary>
        /// <param name="store"></param>
        /// <param name="tenantIdOrDatabaseName"></param>
        /// <param name="apply"></param>
        public static void Transform(this IDocumentStore store, string tenantId, Action <IDocumentTransforms> apply)
        {
            var s = store.As <DocumentStore>();

            var tenant = s.Tenancy.GetTenant(tenantId);

            tenant.Database.EnsureStorageExists(typeof(TransformSchema));

            using var transforms = new DocumentTransforms(s, tenant);
            apply(transforms);
            transforms.Session.SaveChanges();
        }
Exemple #8
0
        /// <summary>
        /// Creates a new DocumentStore with the supplied StoreOptions
        /// </summary>
        /// <param name="options"></param>
        public DocumentStore(StoreOptions options)
        {
            options.ApplyConfiguration();
            options.CreatePatching();
            options.Validate();
            Options = options;

            _logger = options.Logger();

            Tenancy = options.Tenancy;

            if (options.CreateDatabases != null)
            {
                IDatabaseGenerator databaseGenerator = new DatabaseGenerator();
                databaseGenerator.CreateDatabases(Tenancy, options.CreateDatabases);
            }

            Tenancy.Initialize();

            Schema = Tenancy.Schema;

            Storage = options.Storage;

            Storage.PostProcessConfiguration();

            Serializer = options.Serializer();

            if (options.UseCharBufferPooling)
            {
                _writerPool = new CharArrayTextWriter.Pool();
            }

            Advanced = new AdvancedOptions(this);

            Diagnostics = new Diagnostics(this);

            Transform = new DocumentTransforms(this, Tenancy.Default);

            options.InitialData.Each(x => x.Populate(this));

            Parser = new MartenExpressionParser(Serializer, options);

            HandlerFactory = new QueryHandlerFactory(this);

            Events = options.Events;
        }
Exemple #9
0
        /// <summary>
        /// Asynchronously apply one or more Javascript document transformations
        /// </summary>
        /// <param name="store"></param>
        /// <param name="apply"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task TransformAsync(this IDocumentStore store, Action <IDocumentTransforms> apply, CancellationToken token = default)
        {
            var s = store.As <DocumentStore>();

            if (!s.Options.Advanced.DefaultTenantUsageEnabled)
            {
                throw new DefaultTenantUsageDisabledException("Use the overload that takes a tenantId argument");
            }

            var tenant = s.Tenancy.Default;

            await tenant.Database.EnsureStorageExistsAsync(typeof(TransformSchema), token).ConfigureAwait(false);

            using var transforms = new DocumentTransforms(s, tenant);
            apply(transforms);
            await transforms.Session.SaveChangesAsync(token).ConfigureAwait(false);
        }
Exemple #10
0
        /// <summary>
        /// Synchronously apply one or more Javascript document transformations
        /// </summary>
        /// <param name="store"></param>
        /// <param name="apply"></param>
        public static void Transform(this IDocumentStore store, Action <IDocumentTransforms> apply)
        {
            var s = store.As <DocumentStore>();

            if (!s.Options.Advanced.DefaultTenantUsageEnabled)
            {
                throw new DefaultTenantUsageDisabledException("Use the overload that takes a tenantId argument");
            }

            var tenantId = s.Tenancy.Default;

            tenantId.Database.EnsureStorageExists(typeof(TransformSchema));

            using var transforms = new DocumentTransforms(s, tenantId);
            apply(transforms);
            transforms.Session.SaveChanges();
        }
Exemple #11
0
        /// <summary>
        /// Creates a new DocumentStore with the supplied StoreOptions
        /// </summary>
        /// <param name="options"></param>
        public DocumentStore(StoreOptions options)
        {
            options.Validate();
            options.CreatePatching();

            Options = options;

            _logger = options.Logger();

            Tenancy = options.Tenancy;
            Tenancy.Initialize();

            Schema = Tenancy.Schema;

            Storage = options.Storage;

            Storage.CompileSubClasses();

            Serializer = options.Serializer();

            if (options.UseCharBufferPooling)
            {
                _writerPool = new CharArrayTextWriter.Pool();
            }

            Advanced = new AdvancedOptions(this);

            Diagnostics = new Diagnostics(this);

            Transform = new DocumentTransforms(this, Tenancy.Default);

            options.InitialData.Each(x => x.Populate(this));

            Parser = new MartenExpressionParser(Serializer, options);

            HandlerFactory = new QueryHandlerFactory(this);

            Events = options.Events;
        }
Exemple #12
0
        /// <summary>
        /// Creates a new DocumentStore with the supplied StoreOptions
        /// </summary>
        /// <param name="options"></param>
        public DocumentStore(StoreOptions options)
        {
            options.ApplyConfiguration();
            options.CreatePatching();
            options.Validate();

            Options      = options;
            _logger      = options.Logger();
            Serializer   = options.Serializer();
            _retryPolicy = options.RetryPolicy();

            if (options.CreateDatabases != null)
            {
                IDatabaseGenerator databaseGenerator = new DatabaseGenerator();
                databaseGenerator.CreateDatabases(Tenancy, options.CreateDatabases);
            }

            Tenancy.Initialize();

            Schema = Tenancy.Schema;

            Storage.PostProcessConfiguration();

            _writerPool = options.UseCharBufferPooling ? MemoryPool <char> .Shared : new AllocatingMemoryPool <char>();

            Advanced = new AdvancedOptions(this);

            Diagnostics = new Diagnostics(this);

            Transform = new DocumentTransforms(this, Tenancy.Default);

            Parser = new MartenExpressionParser(Serializer, options);

            HandlerFactory = new QueryHandlerFactory(this);

            options.InitialData.Each(x => x.Populate(this));
        }