/// <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)); }
/// <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)); }
/// <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(); }
/// <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); }
/// <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(); }
/// <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; }
/// <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); }
/// <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(); }
/// <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; }
/// <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)); }