IDocumentStore => IZeroStore
This commit is contained in:
@@ -29,7 +29,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<IApplication>> GetAll()
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await session
|
||||
.Query<IApplication>()
|
||||
.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<IApplication>().ToQueriedListAsync(query);
|
||||
}
|
||||
|
||||
|
||||
@@ -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<BackofficeUser> SignInManager { get; private set; }
|
||||
|
||||
|
||||
public AuthenticationApi(IDocumentStore raven, IZeroContext context, SignInManager<BackofficeUser> signInManager)
|
||||
public AuthenticationApi(IZeroStore store, IZeroContext context, SignInManager<BackofficeUser> signInManager)
|
||||
{
|
||||
Raven = raven;
|
||||
Store = store;
|
||||
Context = context;
|
||||
SignInManager = signInManager;
|
||||
}
|
||||
|
||||
@@ -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<BackofficeUser> signInManager)
|
||||
public AuthorizationApi(IZeroStore store, IHttpContextAccessor httpContextAccessor, SignInManager<BackofficeUser> signInManager)
|
||||
{
|
||||
Raven = raven;
|
||||
Store = store;
|
||||
HttpContextAccessor = httpContextAccessor;
|
||||
SignInManager = signInManager;
|
||||
}
|
||||
|
||||
@@ -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<T>(id);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<Dictionary<string, T>> GetByIds<T>(params string[] ids) where T : IZeroIdEntity
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
Dictionary<string, T> models = await session.LoadAsync<T>(ids);
|
||||
Dictionary<string, T> result = new Dictionary<string, T>();
|
||||
|
||||
@@ -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
|
||||
/// <inheritdoc />
|
||||
public async Task<EntityResult<T>> DeleteById<T>(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<T>(id);
|
||||
@@ -207,7 +207,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<EntityResult<T>> Purge<T>(string querySuffix = null, Parameters parameters = null)
|
||||
{
|
||||
await Raven.PurgeAsync<T>(querySuffix, parameters);
|
||||
await Store.RavenStore.PurgeAsync<T>(querySuffix, parameters);
|
||||
return EntityResult<T>.Success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<ICountry>> GetAll(string languageId)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await session.Query<ICountry>()
|
||||
.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<ICountry>()
|
||||
.OrderByDescending(x => x.IsPreferred)
|
||||
.ThenBy(x => x.Name)
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<ILanguage>> GetAll()
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
return await session.Query<ILanguage>()
|
||||
.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<ILanguage>().ToQueriedListAsync(query);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IMailTemplate> GetByKey(string key)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await session.Query<IMailTemplate>().FirstOrDefaultAsync(x => x.Key == key);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace zero.Core.Api
|
||||
/// </summary>
|
||||
public async Task<IList<IMailTemplate>> GetAll()
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<IMailTemplate>().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<IMailTemplate>()
|
||||
.ToQueriedListAsync(query);
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<string> GetSourceById(string id, bool thumb = false, bool enforceAppId = true)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
IMedia media = await session.LoadAsync<IMedia>(id);
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<Dictionary<string, IMedia>> GetById(IEnumerable<string> ids)
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.LoadAsync<IMedia>(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<IMedia>()
|
||||
.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<MediaListItem> dbQuery = session.Query<MediaListItem, Media_ByParent>().ProjectInto<MediaListItem>();
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<IMediaFolder>> GetAll(string parentId = null)
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<IMediaFolder>()
|
||||
.WhereIf(x => x.ParentId == parentId, !parentId.IsNullOrEmpty(), x => x.ParentId == null)
|
||||
@@ -49,7 +49,7 @@ namespace zero.Core.Api
|
||||
List<TreeItem> items = new List<TreeItem>();
|
||||
string[] openIds = new string[0] { };
|
||||
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
IList<IMediaFolder> folders = await session.Query<IMediaFolder>()
|
||||
.WhereIf(x => x.ParentId == parentId, !parentId.IsNullOrEmpty(), x => x.ParentId == null)
|
||||
@@ -126,7 +126,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<IMediaFolder>> GetHierarchy(string id)
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
MediaFolder_ByHierarchy.Result result = await session.Query<MediaFolder_ByHierarchy.Result, MediaFolder_ByHierarchy>()
|
||||
.ProjectInto<MediaFolder_ByHierarchy.Result>()
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace zero.Core.Api
|
||||
IReadOnlyCollection<PageType> pageTypes = Backoffice.Options.Pages.GetAllItems();
|
||||
string[] openIds = new string[0] { };
|
||||
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
IList<IPage> pages = await session
|
||||
.Query<IPage>()
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace zero.Core.Api
|
||||
return EntityResult<IList<IPage>>.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<IPage>.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)
|
||||
|
||||
@@ -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<IRecycledEntity>()
|
||||
.WhereIf(x => x.Group == query.Group, !query.Group.IsNullOrWhiteSpace())
|
||||
@@ -80,7 +80,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<IRecycledEntity>> GetByOperation(string operationId)
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<IRecycledEntity>()
|
||||
.Where(x => x.OperationId == operationId)
|
||||
@@ -94,7 +94,7 @@ namespace zero.Core.Api
|
||||
/// </summary>
|
||||
public async Task<int> GetCountByOperation(string operationId)
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<IRecycledEntity>()
|
||||
.Where(x => x.OperationId == operationId)
|
||||
|
||||
@@ -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
|
||||
/// </summary>
|
||||
public async Task<ListResult<Revision>> GetPaged<T>(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<T> items = await session.Advanced.Revisions.GetForAsync<T>(id, (pageNumber - 1) * pageSize, pageSize);
|
||||
|
||||
@@ -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<ISpaceContent>()
|
||||
.Where(x => x.SpaceAlias == space.Alias)
|
||||
@@ -63,7 +63,7 @@ namespace zero.Core.Api
|
||||
{
|
||||
Space space = GetBy<T>();
|
||||
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<T>()
|
||||
.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<ISpaceContent>()
|
||||
.Where(x => x.SpaceAlias == alias)
|
||||
@@ -93,7 +93,7 @@ namespace zero.Core.Api
|
||||
Space space = GetBy<T>();
|
||||
query.SearchSelector = item => item.Name;
|
||||
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<T>()
|
||||
.Where(x => x.SpaceAlias == space.Alias)
|
||||
|
||||
@@ -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<ChangeToken>().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);
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<ITranslation>> GetAll()
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await session.Query<ITranslation>().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<ITranslation>().OrderByDescending(x => x.CreatedDate).ToQueriedListAsync(query);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<IBackofficeUser>> GetAll()
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await session.Query<IBackofficeUser>()
|
||||
.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<IBackofficeUser>()
|
||||
.ToQueriedListAsync(query);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace zero.Core.Api
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<IBackofficeUserRole>> GetAll()
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
return await session.Query<IBackofficeUserRole>().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
|
||||
/// <inheritdoc />
|
||||
public async Task<EntityResult<IBackofficeUserRole>> Delete(string id)
|
||||
{
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
BackofficeUserRole country = await session.LoadAsync<BackofficeUserRole>(id);
|
||||
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get underlying raven document store
|
||||
/// </summary>
|
||||
public IDocumentStore Store => this;
|
||||
public IDocumentStore RavenStore => this;
|
||||
|
||||
/// <summary>
|
||||
/// Database for the currently resolved application
|
||||
/// </summary>
|
||||
public string CurrentDatabase { get; private set; }
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IAsyncDocumentSession OpenAsyncSession(string database)
|
||||
@@ -40,18 +46,20 @@ namespace zero.Core.Database
|
||||
/// <inheritdoc />
|
||||
public override IAsyncDocumentSession OpenAsyncSession(SessionOptions options)
|
||||
{
|
||||
options.Database = options.Database ?? CurrentDatabase;
|
||||
return base.OpenAsyncSession(options);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IAsyncDocumentSession OpenAsyncSession()
|
||||
{
|
||||
return base.OpenAsyncSession();
|
||||
return base.OpenAsyncSession(CurrentDatabase);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IDocumentSession OpenSession(SessionOptions options)
|
||||
{
|
||||
options.Database = options.Database ?? CurrentDatabase;
|
||||
return base.OpenSession(options);
|
||||
}
|
||||
|
||||
@@ -64,7 +72,7 @@ namespace zero.Core.Database
|
||||
/// <inheritdoc />
|
||||
public override IDocumentSession OpenSession()
|
||||
{
|
||||
return base.OpenSession();
|
||||
return base.OpenSession(CurrentDatabase);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -78,7 +86,7 @@ namespace zero.Core.Database
|
||||
/// </summary>
|
||||
public BulkInsertOperation BulkInsert(CancellationToken token = default)
|
||||
{
|
||||
return base.BulkInsert(null, token);
|
||||
return base.BulkInsert(CurrentDatabase, token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,15 +94,6 @@ namespace zero.Core.Extensions
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Create a new unique Id
|
||||
/// </summary>
|
||||
public static string Id(this IDocumentStore store, int length = -1)
|
||||
{
|
||||
return IdGenerator.Create(length);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Reserves a key cluster-wide
|
||||
/// </summary>
|
||||
|
||||
@@ -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<T>()
|
||||
.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<T>()
|
||||
.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<TReference>(id);
|
||||
return model != null;
|
||||
}).WithMessage("@errors.forms.reference_notfound");
|
||||
|
||||
@@ -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<TRole> : IRoleStore<TRole>, IRoleClaimStore<TRole>
|
||||
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
|
||||
/// <inheritdoc/>
|
||||
public async Task<TRole> FindByIdAsync(string roleId, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TRole>()).FirstOrDefaultAsync(x => x.Id == roleId, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -147,7 +148,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc/>
|
||||
public async Task<TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TRole>()).FirstOrDefaultAsync(x => x.Name == normalizedRoleName, cancellationToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<TUser>
|
||||
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<TUser>(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<TUser>(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
|
||||
/// <inheritdoc />
|
||||
public async Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).FirstOrDefaultAsync(x => x.Id == userId, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -185,7 +186,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).FirstOrDefaultAsync(x => x.Username == normalizedUserName, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -253,7 +254,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).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
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<TUser>> 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<TUser>()).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<UserClaim> 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);
|
||||
|
||||
@@ -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) { }
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -39,7 +40,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<TUser>> GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).Where(x => roleName.In(x.RoleIds)).ToListAsync(); // TODO scope
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<string> GetUrl(IPage page)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
Pages_ByHierarchy.Result result = await session.Query<Pages_ByHierarchy.Result, Pages_ByHierarchy>()
|
||||
.ProjectInto<Pages_ByHierarchy.Result>()
|
||||
|
||||
+11
-10
@@ -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<Routes> Logger { get; set; }
|
||||
protected IEnumerable<IRouteProvider> Providers { get; set; }
|
||||
protected IApplicationContext Context { get; set; }
|
||||
|
||||
|
||||
public Routes(IDocumentStore raven, ILogger<Routes> logger, IEnumerable<IRouteProvider> providers, IApplicationContext context)
|
||||
public Routes(IZeroStore store, ILogger<Routes> logger, IEnumerable<IRouteProvider> 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<T, IRoute> result = new Dictionary<T, IRoute>();
|
||||
|
||||
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
|
||||
/// <inheritdoc />
|
||||
public async Task<IResolvedRoute> 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<IRoute> all = new List<IRoute>();
|
||||
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<IRoute> routes = await provider.GetAllRoutes(session);
|
||||
|
||||
// delete all registered routes in the database for this provider
|
||||
await Raven.PurgeAsync<IRoute>($"where {nameof(IRoute.ProviderAlias)} = $alias", new Raven.Client.Parameters()
|
||||
await Store.RavenStore.PurgeAsync<IRoute>($"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)
|
||||
{
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// {
|
||||
// IList<IApplication> apps;
|
||||
|
||||
// using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
// using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
// {
|
||||
// apps = await session.Query<IApplication>().ToListAsync();
|
||||
// }
|
||||
@@ -69,7 +69,7 @@
|
||||
// HashSet<string> ids = new HashSet<string>();
|
||||
// IList<T> 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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<PageType> pageTypes = Options.Pages.GetAllItems();
|
||||
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
Dictionary<string, IPage> pages = await session.LoadAsync<IPage>(ids);
|
||||
Dictionary<string, IRoute> routes = await session.LoadAsync<IRoute>(pages.Where(x => x.Value != null).Select(x => "routes." + x.Value.Hash));
|
||||
|
||||
@@ -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<IZeroStore, ZeroStore>(context =>
|
||||
{
|
||||
IZeroOptions options = context.GetService<IZeroOptions>();
|
||||
|
||||
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;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user