using FluentValidation; using Raven.Client.Documents; using Raven.Client.Documents.Session; using System.Collections.Generic; using System.Threading.Tasks; using zero.Core.Entities; using zero.Core.Extensions; namespace zero.Core.Api { public class ApplicationsApi : BackofficeApi, IApplicationsApi { IValidator Validator; public ApplicationsApi(IBackofficeStore store, IValidator validator) : base(store) { Validator = validator; } /// public async Task GetById(string id) { return await GetById(id); } /// public async Task> GetAll() { using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) { return await session .Query() .OrderByDescending(x => x.CreatedDate) .ToListAsync(); } } /// public async Task> GetByQuery(ListQuery query) { query.SearchFor(entity => entity.Name); using (IAsyncDocumentSession session = Raven.OpenAsyncSession()) { return await session.Query() .ToQueriedListAsync(query); } } /// public async Task> Save(IApplication model) { return await SaveModel(model, Validator); } /// public async Task> Delete(string id) { return await DeleteById(id); } } public interface IApplicationsApi { /// /// Get application by Id /// Task GetById(string id); /// /// Get all available zero applications /// Task> GetAll(); /// /// Get all available applications (with query) /// Task> GetByQuery(ListQuery query); /// /// Creates or updates a application /// Task> Save(IApplication model); /// /// Deletes a application by Id /// Task> Delete(string id); } }