From c4e91efd5bacd63ed82834a5955a233bf2e73d92 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Sun, 15 Nov 2020 17:07:27 +0100 Subject: [PATCH] IDocumentStore => IZeroStore --- zero.Core/Api/ApplicationsApi.cs | 4 +- zero.Core/Api/AuthenticationApi.cs | 7 ++-- zero.Core/Api/AuthorizationApi.cs | 7 ++-- zero.Core/Api/BackofficeApi.cs | 16 ++++---- zero.Core/Api/BackofficeStore.cs | 9 +++-- zero.Core/Api/CountriesApi.cs | 4 +- zero.Core/Api/LanguagesApi.cs | 4 +- zero.Core/Api/MailTemplatesApi.cs | 6 +-- zero.Core/Api/MediaApi.cs | 8 ++-- zero.Core/Api/MediaFolderApi.cs | 6 +-- zero.Core/Api/PageTreeApi.cs | 2 +- zero.Core/Api/PagesApi.cs | 6 +-- zero.Core/Api/RecycleBinApi.cs | 6 +-- zero.Core/Api/RevisionsApi.cs | 9 +++-- zero.Core/Api/SpacesApi.cs | 8 ++-- zero.Core/Api/Token.cs | 13 ++++--- zero.Core/Api/TranslationsApi.cs | 4 +- zero.Core/Api/UserApi.cs | 4 +- zero.Core/Api/UserRolesApi.cs | 6 +-- zero.Core/Database/ZeroStore.cs | 20 +++++++--- .../RavenDocumentStoreExtensions.cs | 9 ----- zero.Core/Extensions/ValidatorExtensions.cs | 6 +-- zero.Core/Identity/RavenRoleStore(TRole).cs | 17 ++++---- zero.Core/Identity/RavenScopedStores.cs | 7 ++-- zero.Core/Identity/RavenUserStore(TUser).cs | 39 ++++++++++--------- .../Identity/RavenUserStore(TUser,TRole).cs | 5 ++- zero.Core/Routing/Page/PageUrlBuilder.cs | 9 +++-- zero.Core/Routing/Routes.cs | 21 +++++----- .../MigrationController.Blueprints.cs | 6 +-- zero.Debug/Controllers/MigrationController.cs | 20 ++-------- zero.Web/Controllers/PagesController.cs | 11 +++--- zero.Web/ZeroBuilder.cs | 14 +++---- zero.sln | 6 --- 33 files changed, 155 insertions(+), 164 deletions(-) diff --git a/zero.Core/Api/ApplicationsApi.cs b/zero.Core/Api/ApplicationsApi.cs index f9e81891..c0dbb7a5 100644 --- a/zero.Core/Api/ApplicationsApi.cs +++ b/zero.Core/Api/ApplicationsApi.cs @@ -29,7 +29,7 @@ namespace zero.Core.Api /// public async Task> GetAll() { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session .Query() .OrderByDescending(x => x.CreatedDate) @@ -42,7 +42,7 @@ namespace zero.Core.Api { query.SearchFor(entity => entity.Name); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query().ToQueriedListAsync(query); } diff --git a/zero.Core/Api/AuthenticationApi.cs b/zero.Core/Api/AuthenticationApi.cs index 1660e824..92448ba1 100644 --- a/zero.Core/Api/AuthenticationApi.cs +++ b/zero.Core/Api/AuthenticationApi.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Identity; @@ -11,16 +12,16 @@ namespace zero.Core.Api { public class AuthenticationApi : IAuthenticationApi { - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } protected IZeroContext Context { get; set; } protected SignInManager SignInManager { get; private set; } - public AuthenticationApi(IDocumentStore raven, IZeroContext context, SignInManager signInManager) + public AuthenticationApi(IZeroStore store, IZeroContext context, SignInManager signInManager) { - Raven = raven; + Store = store; Context = context; SignInManager = signInManager; } diff --git a/zero.Core/Api/AuthorizationApi.cs b/zero.Core/Api/AuthorizationApi.cs index 60ea35ea..6a3fc615 100644 --- a/zero.Core/Api/AuthorizationApi.cs +++ b/zero.Core/Api/AuthorizationApi.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Identity; @@ -14,7 +15,7 @@ namespace zero.Core.Api { public class AuthorizationApi : IAuthorizationApi { - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } protected IHttpContextAccessor HttpContextAccessor { get; set; } @@ -23,9 +24,9 @@ namespace zero.Core.Api protected ClaimsPrincipal Principal => HttpContextAccessor.HttpContext?.User; - public AuthorizationApi(IDocumentStore raven, IHttpContextAccessor httpContextAccessor, SignInManager signInManager) + public AuthorizationApi(IZeroStore store, IHttpContextAccessor httpContextAccessor, SignInManager signInManager) { - Raven = raven; + Store = store; HttpContextAccessor = httpContextAccessor; SignInManager = signInManager; } diff --git a/zero.Core/Api/BackofficeApi.cs b/zero.Core/Api/BackofficeApi.cs index 34a63201..60645b02 100644 --- a/zero.Core/Api/BackofficeApi.cs +++ b/zero.Core/Api/BackofficeApi.cs @@ -1,12 +1,12 @@ using FluentValidation; using FluentValidation.Results; using Raven.Client; -using Raven.Client.Documents; using Raven.Client.Documents.Session; using System; using System.Collections.Generic; using System.Threading.Tasks; using zero.Core.Attributes; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Entities.Messages; using zero.Core.Extensions; @@ -16,7 +16,7 @@ namespace zero.Core.Api { public abstract class BackofficeApi : IBackofficeApi { - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } const string NEW_ID = "new:"; @@ -25,7 +25,7 @@ namespace zero.Core.Api public BackofficeApi(IBackofficeStore store) { - Raven = store.Raven; + Store = store.Store; Backoffice = store; } @@ -38,7 +38,7 @@ namespace zero.Core.Api return default; } - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.LoadAsync(id); } @@ -46,7 +46,7 @@ namespace zero.Core.Api /// public async Task> GetByIds(params string[] ids) where T : IZeroIdEntity { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); Dictionary models = await session.LoadAsync(ids); Dictionary result = new Dictionary(); @@ -145,7 +145,7 @@ namespace zero.Core.Api model.CreatedById ??= userId; model.Hash ??= IdGenerator.Create(); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); session.Advanced.WaitForIndexesAfterSaveChanges(throwOnTimeout: false); await session.StoreAsync(model); @@ -171,7 +171,7 @@ namespace zero.Core.Api /// public async Task> DeleteById(string id) where T : IZeroIdEntity { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); session.Advanced.WaitForIndexesAfterSaveChanges(throwOnTimeout: false); T entity = await session.LoadAsync(id); @@ -207,7 +207,7 @@ namespace zero.Core.Api /// public async Task> Purge(string querySuffix = null, Parameters parameters = null) { - await Raven.PurgeAsync(querySuffix, parameters); + await Store.RavenStore.PurgeAsync(querySuffix, parameters); return EntityResult.Success(); } } diff --git a/zero.Core/Api/BackofficeStore.cs b/zero.Core/Api/BackofficeStore.cs index 57b0bfdf..5b2aef79 100644 --- a/zero.Core/Api/BackofficeStore.cs +++ b/zero.Core/Api/BackofficeStore.cs @@ -1,4 +1,5 @@ using Raven.Client.Documents; +using zero.Core.Database; using zero.Core.Messages; using zero.Core.Options; @@ -6,7 +7,7 @@ namespace zero.Core.Api { public class BackofficeStore : IBackofficeStore { - public IDocumentStore Raven { get; private set; } + public IZeroStore Store { get; private set; } public IApplicationContext AppContext { get; private set; } @@ -17,9 +18,9 @@ namespace zero.Core.Api public IMessageAggregator Messages { get; private set; } - public BackofficeStore(IDocumentStore raven, IApplicationContext appContext, IZeroOptions options, IAuthenticationApi authenticationApi, IMessageAggregator messages) + public BackofficeStore(IZeroStore store, IApplicationContext appContext, IZeroOptions options, IAuthenticationApi authenticationApi, IMessageAggregator messages) { - Raven = raven; + Store = store; AppContext = appContext; Options = options; Auth = authenticationApi; @@ -30,7 +31,7 @@ namespace zero.Core.Api public interface IBackofficeStore { - IDocumentStore Raven { get; } + IZeroStore Store { get; } IApplicationContext AppContext { get; } diff --git a/zero.Core/Api/CountriesApi.cs b/zero.Core/Api/CountriesApi.cs index dcf323eb..79f32a16 100644 --- a/zero.Core/Api/CountriesApi.cs +++ b/zero.Core/Api/CountriesApi.cs @@ -37,7 +37,7 @@ namespace zero.Core.Api /// public async Task> GetAll(string languageId) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query() .OrderByDescending(x => x.IsPreferred) .ThenBy(x => x.Name) @@ -50,7 +50,7 @@ namespace zero.Core.Api { query.SearchSelector = country => country.Name; - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query() .OrderByDescending(x => x.IsPreferred) .ThenBy(x => x.Name) diff --git a/zero.Core/Api/LanguagesApi.cs b/zero.Core/Api/LanguagesApi.cs index 9d202c29..3eb321e8 100644 --- a/zero.Core/Api/LanguagesApi.cs +++ b/zero.Core/Api/LanguagesApi.cs @@ -40,7 +40,7 @@ namespace zero.Core.Api /// public async Task> GetAll() { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query() .OrderByDescending(x => x.CreatedDate) @@ -70,7 +70,7 @@ namespace zero.Core.Api { query.SearchFor(entity => entity.Name); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query().ToQueriedListAsync(query); } diff --git a/zero.Core/Api/MailTemplatesApi.cs b/zero.Core/Api/MailTemplatesApi.cs index e91d1583..da7c70db 100644 --- a/zero.Core/Api/MailTemplatesApi.cs +++ b/zero.Core/Api/MailTemplatesApi.cs @@ -30,7 +30,7 @@ namespace zero.Core.Api /// public async Task GetByKey(string key) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query().FirstOrDefaultAsync(x => x.Key == key); } @@ -47,7 +47,7 @@ namespace zero.Core.Api /// public async Task> GetAll() { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query().ToListAsync(); } @@ -59,7 +59,7 @@ namespace zero.Core.Api { query.SearchSelector = entity => entity.Name; - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .ToQueriedListAsync(query); diff --git a/zero.Core/Api/MediaApi.cs b/zero.Core/Api/MediaApi.cs index 21a36c0d..52c3d5ff 100644 --- a/zero.Core/Api/MediaApi.cs +++ b/zero.Core/Api/MediaApi.cs @@ -48,7 +48,7 @@ namespace zero.Core.Api /// public async Task GetSourceById(string id, bool thumb = false, bool enforceAppId = true) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); IMedia media = await session.LoadAsync(id); @@ -69,7 +69,7 @@ namespace zero.Core.Api /// public async Task> GetById(IEnumerable ids) { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.LoadAsync(ids); } @@ -81,7 +81,7 @@ namespace zero.Core.Api { query.SearchFor(entity => entity.Name); - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .WhereIf(x => x.FolderId == query.FolderId, !query.FolderId.IsNullOrEmpty(), x => x.FolderId == null) @@ -99,7 +99,7 @@ namespace zero.Core.Api .OrderByDescending(x => x.IsFolder) .ThenBy(query.OrderBy, query.OrderIsDescending, query.OrderType == ListQueryOrderType.String ? OrderingType.String : OrderingType.Double); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); session.Advanced.MaxNumberOfRequestsPerSession = query.PageSize + 1; IRavenQueryable dbQuery = session.Query().ProjectInto(); diff --git a/zero.Core/Api/MediaFolderApi.cs b/zero.Core/Api/MediaFolderApi.cs index ef53e5db..d7d70b17 100644 --- a/zero.Core/Api/MediaFolderApi.cs +++ b/zero.Core/Api/MediaFolderApi.cs @@ -33,7 +33,7 @@ namespace zero.Core.Api /// public async Task> GetAll(string parentId = null) { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .WhereIf(x => x.ParentId == parentId, !parentId.IsNullOrEmpty(), x => x.ParentId == null) @@ -49,7 +49,7 @@ namespace zero.Core.Api List items = new List(); string[] openIds = new string[0] { }; - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { IList folders = await session.Query() .WhereIf(x => x.ParentId == parentId, !parentId.IsNullOrEmpty(), x => x.ParentId == null) @@ -126,7 +126,7 @@ namespace zero.Core.Api /// public async Task> GetHierarchy(string id) { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { MediaFolder_ByHierarchy.Result result = await session.Query() .ProjectInto() diff --git a/zero.Core/Api/PageTreeApi.cs b/zero.Core/Api/PageTreeApi.cs index 7d719a28..87cfaea0 100644 --- a/zero.Core/Api/PageTreeApi.cs +++ b/zero.Core/Api/PageTreeApi.cs @@ -24,7 +24,7 @@ namespace zero.Core.Api IReadOnlyCollection pageTypes = Backoffice.Options.Pages.GetAllItems(); string[] openIds = new string[0] { }; - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); IList pages = await session .Query() diff --git a/zero.Core/Api/PagesApi.cs b/zero.Core/Api/PagesApi.cs index fcda3cc4..3e2c93ad 100644 --- a/zero.Core/Api/PagesApi.cs +++ b/zero.Core/Api/PagesApi.cs @@ -141,7 +141,7 @@ namespace zero.Core.Api return EntityResult>.Fail("@errors.page.sortingmultipleparents"); } - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { session.Advanced.WaitForIndexesAfterSaveChanges(throwOnTimeout: false); @@ -211,7 +211,7 @@ namespace zero.Core.Api return EntityResult.Fail("@errors.page.parentnotallowed"); } - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { session.Advanced.WaitForIndexesAfterSaveChanges(throwOnTimeout: false); @@ -360,7 +360,7 @@ namespace zero.Core.Api items.Add(model); - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { // recursive function to store descendants async Task AddChildren(string parentId) diff --git a/zero.Core/Api/RecycleBinApi.cs b/zero.Core/Api/RecycleBinApi.cs index df10c12d..73fb42e5 100644 --- a/zero.Core/Api/RecycleBinApi.cs +++ b/zero.Core/Api/RecycleBinApi.cs @@ -67,7 +67,7 @@ namespace zero.Core.Api { query.SearchSelector = x => x.Name; - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .WhereIf(x => x.Group == query.Group, !query.Group.IsNullOrWhiteSpace()) @@ -80,7 +80,7 @@ namespace zero.Core.Api /// public async Task> GetByOperation(string operationId) { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .Where(x => x.OperationId == operationId) @@ -94,7 +94,7 @@ namespace zero.Core.Api /// public async Task GetCountByOperation(string operationId) { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .Where(x => x.OperationId == operationId) diff --git a/zero.Core/Api/RevisionsApi.cs b/zero.Core/Api/RevisionsApi.cs index 7fc0cb55..1e9dbfba 100644 --- a/zero.Core/Api/RevisionsApi.cs +++ b/zero.Core/Api/RevisionsApi.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; using zero.Core.Options; @@ -18,13 +19,13 @@ namespace zero.Core.Api { protected IZeroOptions Options { get; set; } - protected IDocumentStore Raven { get; set; } + protected IZeroStore Store { get; set; } - public RevisionsApi(IZeroOptions options, IDocumentStore raven) + public RevisionsApi(IZeroOptions options, IZeroStore store) { Options = options; - Raven = raven; + Store = store; } @@ -33,7 +34,7 @@ namespace zero.Core.Api /// public async Task> GetPaged(string id, int pageNumber = 1, int pageSize = 10, bool includeContent = false) where T : IZeroEntity { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); // get paged revisions List items = await session.Advanced.Revisions.GetForAsync(id, (pageNumber - 1) * pageSize, pageSize); diff --git a/zero.Core/Api/SpacesApi.cs b/zero.Core/Api/SpacesApi.cs index d9bc3150..21fa0568 100644 --- a/zero.Core/Api/SpacesApi.cs +++ b/zero.Core/Api/SpacesApi.cs @@ -48,7 +48,7 @@ namespace zero.Core.Api { Space space = GetByAlias(alias); - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .Where(x => x.SpaceAlias == space.Alias) @@ -63,7 +63,7 @@ namespace zero.Core.Api { Space space = GetBy(); - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .Where(x => x.SpaceAlias == space.Alias) @@ -78,7 +78,7 @@ namespace zero.Core.Api { query.SearchSelector = item => item.Name; - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .Where(x => x.SpaceAlias == alias) @@ -93,7 +93,7 @@ namespace zero.Core.Api Space space = GetBy(); query.SearchSelector = item => item.Name; - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query() .Where(x => x.SpaceAlias == space.Alias) diff --git a/zero.Core/Api/Token.cs b/zero.Core/Api/Token.cs index b06e699b..55f7aea2 100644 --- a/zero.Core/Api/Token.cs +++ b/zero.Core/Api/Token.cs @@ -3,6 +3,7 @@ using Raven.Client.Documents.Session; using System; using System.Linq; using System.Threading.Tasks; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; using zero.Core.Options; @@ -11,16 +12,16 @@ namespace zero.Core.Api { public class Token : IToken { - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } protected IZeroOptions Options { get; private set; } private const string PREFIX = "changeTokens"; - public Token(IDocumentStore raven, IZeroOptions options) + public Token(IZeroStore store, IZeroOptions options) { - Raven = raven; + Store = store; Options = options; } @@ -45,7 +46,7 @@ namespace zero.Core.Api return false; } - using (IDocumentSession session = Raven.OpenSession()) + using (IDocumentSession session = Store.OpenSession()) { return session.Query().Any(x => x.Id == token && x.ReferenceId == entityId); } @@ -69,11 +70,11 @@ namespace zero.Core.Api ChangeToken token = new ChangeToken() { - Id = Options.Raven.CollectionPrefix.EnsureEndsWith(Raven.Conventions.IdentityPartsSeparator) + PREFIX.EnsureEndsWith(Raven.Conventions.IdentityPartsSeparator) + Guid.NewGuid(), + Id = Options.Raven.CollectionPrefix.EnsureEndsWith(Store.RavenStore.Conventions.IdentityPartsSeparator) + PREFIX.EnsureEndsWith(Store.RavenStore.Conventions.IdentityPartsSeparator) + Guid.NewGuid(), ReferenceId = entityId }; - using (IDocumentSession session = Raven.OpenSession()) + using (IDocumentSession session = Store.OpenSession()) { session.Store(token); session.Advanced.GetMetadataFor(token)[Constants.Database.Expires] = DateTime.UtcNow.AddMinutes(Options.TokenExpiration); diff --git a/zero.Core/Api/TranslationsApi.cs b/zero.Core/Api/TranslationsApi.cs index 736a6a4d..fa6680ea 100644 --- a/zero.Core/Api/TranslationsApi.cs +++ b/zero.Core/Api/TranslationsApi.cs @@ -38,7 +38,7 @@ namespace zero.Core.Api /// public async Task> GetAll() { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query().OrderByDescending(x => x.CreatedDate).ToListAsync(); } @@ -48,7 +48,7 @@ namespace zero.Core.Api { query.SearchFor(entity => entity.Key, entity => entity.Value); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query().OrderByDescending(x => x.CreatedDate).ToQueriedListAsync(query); } diff --git a/zero.Core/Api/UserApi.cs b/zero.Core/Api/UserApi.cs index b76a07c3..e1bc0002 100644 --- a/zero.Core/Api/UserApi.cs +++ b/zero.Core/Api/UserApi.cs @@ -49,7 +49,7 @@ namespace zero.Core.Api /// public async Task> GetAll() { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query() .OrderByDescending(x => x.CreatedDate) .ToListAsync(); @@ -63,7 +63,7 @@ namespace zero.Core.Api query.SearchSelector = user => user.Name; - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await session.Query() .ToQueriedListAsync(query); } diff --git a/zero.Core/Api/UserRolesApi.cs b/zero.Core/Api/UserRolesApi.cs index 8ce7e5eb..1d89083f 100644 --- a/zero.Core/Api/UserRolesApi.cs +++ b/zero.Core/Api/UserRolesApi.cs @@ -37,7 +37,7 @@ namespace zero.Core.Api /// public async Task> GetAll() { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { return await session.Query().OrderBy(x => x.Sort).ThenBy(x => x.Name).ToListAsync(); } @@ -68,7 +68,7 @@ namespace zero.Core.Api model.Alias = Safenames.Alias(model.Name); - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { await session.StoreAsync(model); @@ -89,7 +89,7 @@ namespace zero.Core.Api /// public async Task> Delete(string id) { - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { BackofficeUserRole country = await session.LoadAsync(id); diff --git a/zero.Core/Database/ZeroStore.cs b/zero.Core/Database/ZeroStore.cs index 33a02e52..c0e61bf6 100644 --- a/zero.Core/Database/ZeroStore.cs +++ b/zero.Core/Database/ZeroStore.cs @@ -7,7 +7,7 @@ namespace zero.Core.Database { public interface IZeroStore { - IDocumentStore Store { get; } + IDocumentStore RavenStore { get; } BulkInsertOperation BulkInsert(CancellationToken token = default); BulkInsertOperation BulkInsert(string database, CancellationToken token = default); @@ -23,13 +23,19 @@ namespace zero.Core.Database { public ZeroStore() : base() { - + CurrentDatabase = "laola.hofbauer"; } /// /// Get underlying raven document store /// - public IDocumentStore Store => this; + public IDocumentStore RavenStore => this; + + /// + /// Database for the currently resolved application + /// + public string CurrentDatabase { get; private set; } + /// public override IAsyncDocumentSession OpenAsyncSession(string database) @@ -40,18 +46,20 @@ namespace zero.Core.Database /// public override IAsyncDocumentSession OpenAsyncSession(SessionOptions options) { + options.Database = options.Database ?? CurrentDatabase; return base.OpenAsyncSession(options); } /// public override IAsyncDocumentSession OpenAsyncSession() { - return base.OpenAsyncSession(); + return base.OpenAsyncSession(CurrentDatabase); } /// public override IDocumentSession OpenSession(SessionOptions options) { + options.Database = options.Database ?? CurrentDatabase; return base.OpenSession(options); } @@ -64,7 +72,7 @@ namespace zero.Core.Database /// public override IDocumentSession OpenSession() { - return base.OpenSession(); + return base.OpenSession(CurrentDatabase); } /// @@ -78,7 +86,7 @@ namespace zero.Core.Database /// public BulkInsertOperation BulkInsert(CancellationToken token = default) { - return base.BulkInsert(null, token); + return base.BulkInsert(CurrentDatabase, token); } } } diff --git a/zero.Core/Extensions/RavenDocumentStoreExtensions.cs b/zero.Core/Extensions/RavenDocumentStoreExtensions.cs index 798a99a3..6078c3d0 100644 --- a/zero.Core/Extensions/RavenDocumentStoreExtensions.cs +++ b/zero.Core/Extensions/RavenDocumentStoreExtensions.cs @@ -94,15 +94,6 @@ namespace zero.Core.Extensions } - /// - /// Create a new unique Id - /// - public static string Id(this IDocumentStore store, int length = -1) - { - return IdGenerator.Create(length); - } - - /// /// Reserves a key cluster-wide /// diff --git a/zero.Core/Extensions/ValidatorExtensions.cs b/zero.Core/Extensions/ValidatorExtensions.cs index a59f11f2..82b8f99b 100644 --- a/zero.Core/Extensions/ValidatorExtensions.cs +++ b/zero.Core/Extensions/ValidatorExtensions.cs @@ -105,7 +105,7 @@ namespace zero.Core.Extensions { return ruleBuilder.MustAsync(async (entity, value, context, cancellation) => { - using IAsyncDocumentSession session = store.Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = store.Store.OpenAsyncSession(); bool any = await session.Advanced.AsyncDocumentQuery() .WhereNotEquals(nameof(IZeroIdEntity.Id), entity.Id) @@ -124,7 +124,7 @@ namespace zero.Core.Extensions { return ruleBuilder.MustAsync(async (entity, value, context, cancellation) => { - using IAsyncDocumentSession session = store.Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = store.Store.OpenAsyncSession(); return await session.Advanced.AsyncDocumentQuery() .WhereNotEquals(nameof(IZeroIdEntity.Id), entity.Id) @@ -155,7 +155,7 @@ namespace zero.Core.Extensions return true; } - using IAsyncDocumentSession session = store.Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = store.Store.OpenAsyncSession(); TReference model = await session.LoadAsync(id); return model != null; }).WithMessage("@errors.forms.reference_notfound"); diff --git a/zero.Core/Identity/RavenRoleStore(TRole).cs b/zero.Core/Identity/RavenRoleStore(TRole).cs index 51ed07ad..82de190f 100644 --- a/zero.Core/Identity/RavenRoleStore(TRole).cs +++ b/zero.Core/Identity/RavenRoleStore(TRole).cs @@ -8,6 +8,7 @@ using System.Linq; using System.Security.Claims; using System.Threading; using System.Threading.Tasks; +using zero.Core.Database; using zero.Core.Entities; namespace zero.Core.Identity @@ -15,14 +16,14 @@ namespace zero.Core.Identity public class RavenRoleStore : IRoleStore, IRoleClaimStore where TRole : class, IIdentityUserRole { - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } protected IdentityErrorDescriber ErrorDescriber { get; private set; } - public RavenRoleStore(IDocumentStore raven, IdentityErrorDescriber describer = null) + public RavenRoleStore(IZeroStore store, IdentityErrorDescriber describer = null) { - Raven = raven; + Store = store; ErrorDescriber = describer ?? new IdentityErrorDescriber(); } @@ -50,7 +51,7 @@ namespace zero.Core.Identity Description = $"The affected role is is not part of this role store and can't be created." }); } - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { await session.StoreAsync(role); await session.SaveChangesAsync(cancellationToken); @@ -72,7 +73,7 @@ namespace zero.Core.Identity } try { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); await session.StoreAsync(role, cancellationToken); await session.SaveChangesAsync(cancellationToken); } @@ -97,7 +98,7 @@ namespace zero.Core.Identity } try { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); session.Delete(role); await session.SaveChangesAsync(cancellationToken); } @@ -139,7 +140,7 @@ namespace zero.Core.Identity /// public async Task FindByIdAsync(string roleId, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ScopeQuery(session.Query()).FirstOrDefaultAsync(x => x.Id == roleId, cancellationToken); } @@ -147,7 +148,7 @@ namespace zero.Core.Identity /// public async Task FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ScopeQuery(session.Query()).FirstOrDefaultAsync(x => x.Name == normalizedRoleName, cancellationToken); } diff --git a/zero.Core/Identity/RavenScopedStores.cs b/zero.Core/Identity/RavenScopedStores.cs index d73acaa4..4b9214c2 100644 --- a/zero.Core/Identity/RavenScopedStores.cs +++ b/zero.Core/Identity/RavenScopedStores.cs @@ -2,6 +2,7 @@ using Raven.Client.Documents; using Raven.Client.Documents.Linq; using System; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; @@ -12,7 +13,7 @@ namespace zero.Core.Identity { protected IZeroContext Context { get; private set; } - public RavenScopedRoleStore(IDocumentStore raven, IZeroContext context, IdentityErrorDescriber describer = null) : base(raven, describer) + public RavenScopedRoleStore(IZeroStore store, IZeroContext context, IdentityErrorDescriber describer = null) : base(store, describer) { Context = context; } @@ -31,7 +32,7 @@ namespace zero.Core.Identity { protected IZeroContext Context { get; private set; } - public RavenScopedUserStore(IDocumentStore raven, IZeroContext context) : base(raven) + public RavenScopedUserStore(IZeroStore store, IZeroContext context) : base(store) { Context = context; } @@ -54,7 +55,7 @@ namespace zero.Core.Identity { protected IZeroContext Context { get; private set; } - public RavenScopedUserStore(IDocumentStore raven, IZeroContext context) : base(raven) + public RavenScopedUserStore(IZeroStore store, IZeroContext context) : base(store) { Context = context; } diff --git a/zero.Core/Identity/RavenUserStore(TUser).cs b/zero.Core/Identity/RavenUserStore(TUser).cs index 6ac59567..0c074d88 100644 --- a/zero.Core/Identity/RavenUserStore(TUser).cs +++ b/zero.Core/Identity/RavenUserStore(TUser).cs @@ -8,6 +8,7 @@ using System.Linq; using System.Security.Claims; using System.Threading; using System.Threading.Tasks; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; @@ -23,11 +24,11 @@ namespace zero.Core.Identity IProtectedUserStore where TUser : class, IIdentityUser { - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } - public RavenUserStore(IDocumentStore raven) + public RavenUserStore(IZeroStore store) { - Raven = raven; + Store = store; } @@ -61,10 +62,10 @@ namespace zero.Core.Identity }); } - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); // try to reserve the key for the new user - if (!await Raven.ReserveAsync(GetReservationKey(user), user.Id)) + if (!await Store.RavenStore.ReserveAsync(GetReservationKey(user), user.Id)) { return IdentityResult.Failed(new IdentityError { @@ -86,7 +87,7 @@ namespace zero.Core.Identity { // The compare/exchange email reservation is cluster-wide, outside of the session scope. // We need to manually roll it back. - await Raven.RemoveReservationAsync(GetReservationKey(user)); + await Store.RavenStore.RemoveReservationAsync(GetReservationKey(user)); throw; } @@ -107,11 +108,11 @@ namespace zero.Core.Identity } // Remove the cluster-wide compare/exchange key. - await Raven.RemoveReservationAsync(GetReservationKey(user)); + await Store.RavenStore.RemoveReservationAsync(GetReservationKey(user)); // Delete the user and save it. We must save it because deleting is a cluster-wide operation. // Only if the deletion succeeds will we remove the cluster-wide compare/exchange key. - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); TUser source = await session.LoadAsync(user.Id, cancellationToken); @@ -134,7 +135,7 @@ namespace zero.Core.Identity }); } - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { TUser source = await session.LoadAsync(user.Id, cancellationToken); @@ -150,7 +151,7 @@ namespace zero.Core.Identity if (source.Email != user.Email) { // try to reserve the key for the new user - if (!await Raven.ReserveAsync(GetReservationKey(user), user.Id)) + if (!await Store.RavenStore.ReserveAsync(GetReservationKey(user), user.Id)) { return IdentityResult.Failed(new IdentityError { @@ -160,11 +161,11 @@ namespace zero.Core.Identity } // Remove the cluster-wide compare/exchange key. - await Raven.RemoveReservationAsync(GetReservationKey(source)); + await Store.RavenStore.RemoveReservationAsync(GetReservationKey(source)); } } - using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) + using (IAsyncDocumentSession session = Store.OpenAsyncSession()) { await session.StoreAsync(user, cancellationToken); await session.SaveChangesAsync(cancellationToken); @@ -177,7 +178,7 @@ namespace zero.Core.Identity /// public async Task FindByIdAsync(string userId, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ScopeQuery(session.Query()).FirstOrDefaultAsync(x => x.Id == userId, cancellationToken); } @@ -185,7 +186,7 @@ namespace zero.Core.Identity /// public async Task FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ScopeQuery(session.Query()).FirstOrDefaultAsync(x => x.Username == normalizedUserName, cancellationToken); } @@ -253,7 +254,7 @@ namespace zero.Core.Identity /// public async Task FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ScopeQuery(session.Query()).FirstOrDefaultAsync(x => x.Email == normalizedEmail, cancellationToken); } @@ -384,7 +385,7 @@ namespace zero.Core.Identity return; } - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); user.Claims.AddRange(claims.Select(claim => new UserClaim(claim))); await session.StoreAsync(user, cancellationToken); @@ -402,7 +403,7 @@ namespace zero.Core.Identity /// public async Task> GetUsersForClaimAsync(Claim claim, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); UserClaim userClaim = new UserClaim(claim); return await ScopeQuery(session.Query()).Where(x => x.Claims.Any(c => c.Type == userClaim.Type && c.Value == userClaim.Value)).ToListAsync(); } @@ -417,7 +418,7 @@ namespace zero.Core.Identity return; } - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); IEnumerable userClaims = claims.Select(c => new UserClaim(c)).ToList(); @@ -438,7 +439,7 @@ namespace zero.Core.Identity return; } - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); UserClaim userClaim = new UserClaim(claim); UserClaim newUserClaim = new UserClaim(newClaim); diff --git a/zero.Core/Identity/RavenUserStore(TUser,TRole).cs b/zero.Core/Identity/RavenUserStore(TUser,TRole).cs index 3c768acd..e433566e 100644 --- a/zero.Core/Identity/RavenUserStore(TUser,TRole).cs +++ b/zero.Core/Identity/RavenUserStore(TUser,TRole).cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using zero.Core.Database; namespace zero.Core.Identity { @@ -18,7 +19,7 @@ namespace zero.Core.Identity where TUser : class, IIdentityUserWithRoles where TRole : class, IIdentityUserRole { - public RavenUserStore(IDocumentStore raven) : base(raven) { } + public RavenUserStore(IZeroStore store) : base(store) { } /// @@ -39,7 +40,7 @@ namespace zero.Core.Identity /// public async Task> GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ScopeQuery(session.Query()).Where(x => roleName.In(x.RoleIds)).ToListAsync(); // TODO scope } diff --git a/zero.Core/Routing/Page/PageUrlBuilder.cs b/zero.Core/Routing/Page/PageUrlBuilder.cs index dcfd8b37..cdd52aff 100644 --- a/zero.Core/Routing/Page/PageUrlBuilder.cs +++ b/zero.Core/Routing/Page/PageUrlBuilder.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using zero.Core.Api; +using zero.Core.Database; using zero.Core.Database.Indexes; using zero.Core.Entities; using zero.Core.Extensions; @@ -18,19 +19,19 @@ namespace zero.Core.Routing const bool TRAILING_SLASH = false; - protected IDocumentStore Raven { get; private set; } + protected IZeroStore Store { get; private set; } - public PageUrlBuilder(IDocumentStore raven) + public PageUrlBuilder(IZeroStore store) { - Raven = raven; + Store = store; } /// public async Task GetUrl(IPage page) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); Pages_ByHierarchy.Result result = await session.Query() .ProjectInto() diff --git a/zero.Core/Routing/Routes.cs b/zero.Core/Routing/Routes.cs index daf1dd25..1ad128dc 100644 --- a/zero.Core/Routing/Routes.cs +++ b/zero.Core/Routing/Routes.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using zero.Core.Api; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; @@ -16,15 +17,15 @@ namespace zero.Core.Routing { public class Routes : IRoutes { - protected IDocumentStore Raven { get; set; } + protected IZeroStore Store { get; set; } protected ILogger Logger { get; set; } protected IEnumerable Providers { get; set; } protected IApplicationContext Context { get; set; } - public Routes(IDocumentStore raven, ILogger logger, IEnumerable providers, IApplicationContext context) + public Routes(IZeroStore store, ILogger logger, IEnumerable providers, IApplicationContext context) { - Raven = raven; + Store = store; Logger = logger; Providers = providers; Context = context; @@ -50,7 +51,7 @@ namespace zero.Core.Routing return null; } - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await routeProvider.GetRoute(session, model); } @@ -73,7 +74,7 @@ namespace zero.Core.Routing Dictionary result = new Dictionary(); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); foreach (T model in models) { @@ -89,7 +90,7 @@ namespace zero.Core.Routing { path = path.Length > 1 ? path.TrimEnd('/') : path; - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); string[] pathParts = path.Trim('/').Split('/'); string[] parts = new string[pathParts.Length]; @@ -142,7 +143,7 @@ namespace zero.Core.Routing /// public async Task ResolveRoute(IRoute route) { - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); return await ResolveRouteInternal(session, route); } @@ -152,7 +153,7 @@ namespace zero.Core.Routing { int count = 0; List all = new List(); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); session.Advanced.MaxNumberOfRequestsPerSession = 1000; foreach (IRouteProvider provider in Providers) @@ -161,13 +162,13 @@ namespace zero.Core.Routing IList routes = await provider.GetAllRoutes(session); // delete all registered routes in the database for this provider - await Raven.PurgeAsync($"where {nameof(IRoute.ProviderAlias)} = $alias", new Raven.Client.Parameters() + await Store.RavenStore.PurgeAsync($"where {nameof(IRoute.ProviderAlias)} = $alias", new Raven.Client.Parameters() { { "alias", provider.Alias } }); // store new routes - using (BulkInsertOperation bulkInsert = Raven.BulkInsert()) + using (BulkInsertOperation bulkInsert = Store.BulkInsert()) { foreach (IRoute route in routes) { diff --git a/zero.Debug/Controllers/MigrationController.Blueprints.cs b/zero.Debug/Controllers/MigrationController.Blueprints.cs index 854ac8b0..9cf1a95a 100644 --- a/zero.Debug/Controllers/MigrationController.Blueprints.cs +++ b/zero.Debug/Controllers/MigrationController.Blueprints.cs @@ -24,7 +24,7 @@ // { // IList apps; -// using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) +// using (IAsyncDocumentSession session = Store.OpenAsyncSession()) // { // apps = await session.Query().ToListAsync(); // } @@ -69,7 +69,7 @@ // HashSet ids = new HashSet(); // IList items; -// using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) +// using (IAsyncDocumentSession session = Store.OpenAsyncSession()) // { // session.Advanced.MaxNumberOfRequestsPerSession = 10000; @@ -98,7 +98,7 @@ // await session.SaveChangesAsync(); // } -// using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) +// using (IAsyncDocumentSession session = Store.OpenAsyncSession()) // { // session.Advanced.MaxNumberOfRequestsPerSession = 10000; diff --git a/zero.Debug/Controllers/MigrationController.cs b/zero.Debug/Controllers/MigrationController.cs index 0cab9c28..f3369a4b 100644 --- a/zero.Debug/Controllers/MigrationController.cs +++ b/zero.Debug/Controllers/MigrationController.cs @@ -1,27 +1,15 @@ using Microsoft.AspNetCore.Mvc; -using Raven.Client.Documents; -using Raven.Client.Documents.Session; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using zero.Commerce.Entities; -using zero.Core; -using zero.Core.Api; -using zero.Core.Attributes; -using zero.Core.Entities; -using zero.Core.Extensions; -using zero.Core.Utils; +using zero.Core.Database; namespace zero.Debug.Controllers { public partial class MigrationController : Controller { - private IDocumentStore Raven { get; set; } + private IZeroStore Store { get; set; } - public MigrationController(IDocumentStore raven) + public MigrationController(IZeroStore store) { - Raven = raven; + Store = store; } } } \ No newline at end of file diff --git a/zero.Web/Controllers/PagesController.cs b/zero.Web/Controllers/PagesController.cs index bede767d..4bf1b1f1 100644 --- a/zero.Web/Controllers/PagesController.cs +++ b/zero.Web/Controllers/PagesController.cs @@ -1,13 +1,12 @@ using Microsoft.AspNetCore.Mvc; using Raven.Client.Documents; using Raven.Client.Documents.Session; -using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using zero.Core.Api; +using zero.Core.Database; using zero.Core.Entities; -using zero.Core.Extensions; using zero.Core.Routing; using zero.Web.Models; @@ -16,14 +15,14 @@ namespace zero.Web.Controllers public class PagesController : BackofficeController { IPagesApi Api; - IDocumentStore Raven; + IZeroStore Store; IRevisionsApi RevisionsApi; - public PagesController(IPagesApi api, IRevisionsApi revisionsApi, IDocumentStore raven) + public PagesController(IPagesApi api, IRevisionsApi revisionsApi, IZeroStore store) { Api = api; RevisionsApi = revisionsApi; - Raven = raven; + Store = store; } @@ -60,7 +59,7 @@ namespace zero.Web.Controllers { IReadOnlyCollection pageTypes = Options.Pages.GetAllItems(); - using IAsyncDocumentSession session = Raven.OpenAsyncSession(); + using IAsyncDocumentSession session = Store.OpenAsyncSession(); Dictionary pages = await session.LoadAsync(ids); Dictionary routes = await session.LoadAsync(pages.Where(x => x.Value != null).Select(x => "routes." + x.Value.Hash)); diff --git a/zero.Web/ZeroBuilder.cs b/zero.Web/ZeroBuilder.cs index 9240fe27..9f161463 100644 --- a/zero.Web/ZeroBuilder.cs +++ b/zero.Web/ZeroBuilder.cs @@ -17,6 +17,7 @@ using System.Threading.Tasks; using zero.Core; using zero.Core.Api; using zero.Core.Assemblies; +using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; using zero.Core.Handlers; @@ -139,14 +140,13 @@ namespace zero.Web void ConfigureDatabase() { // add raven - Services.AddSingleton(context => + Services.AddSingleton(context => { IZeroOptions options = context.GetService(); - - DocumentStore store = new DocumentStore() + + IDocumentStore store = new ZeroStore() { - Urls = new string[1] { options.Raven.Url }, - //Database = options.Raven.Database // we do not specify a default database so every session + operation is forced to specify it + Urls = new string[1] { options.Raven.Url } }; IDocumentStore raven = store.Setup(options).Initialize(); @@ -157,10 +157,10 @@ namespace zero.Web // TODO maybe we shouldn't use all auto-registered assemblies but specify them directly via options? foreach (Assembly assembly in assemblies) { - IndexCreation.CreateIndexes(assembly, store); + IndexCreation.CreateIndexes(assembly, store, database: "laola.hofbauer"); } - return raven; + return (ZeroStore)raven; }); } diff --git a/zero.sln b/zero.sln index be0b8e19..919c7921 100644 --- a/zero.sln +++ b/zero.sln @@ -7,8 +7,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Core", "zero.Core\zero EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Commerce", "zero.Commerce\zero.Commerce.csproj", "{63A8AD15-15F0-4555-BD62-C38B4465FFC1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Debug", "zero.Debug\zero.Debug.csproj", "{83473041-7A1B-40ED-9FD0-968B22EB36B3}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Web", "zero.Web\zero.Web.csproj", "{06156006-7684-41EC-8BD4-3B2A762147CD}" EndProject Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "zero.Web.UI", "zero.Web.UI\", "{8CE1A69A-35DB-4748-AE1C-86F5BC2E11D4}" @@ -53,10 +51,6 @@ Global {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Debug|Any CPU.Build.0 = Debug|Any CPU {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Release|Any CPU.ActiveCfg = Release|Any CPU {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Release|Any CPU.Build.0 = Release|Any CPU - {83473041-7A1B-40ED-9FD0-968B22EB36B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83473041-7A1B-40ED-9FD0-968B22EB36B3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83473041-7A1B-40ED-9FD0-968B22EB36B3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83473041-7A1B-40ED-9FD0-968B22EB36B3}.Release|Any CPU.Build.0 = Release|Any CPU {06156006-7684-41EC-8BD4-3B2A762147CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {06156006-7684-41EC-8BD4-3B2A762147CD}.Debug|Any CPU.Build.0 = Debug|Any CPU {06156006-7684-41EC-8BD4-3B2A762147CD}.Release|Any CPU.ActiveCfg = Release|Any CPU