using Microsoft.AspNetCore.Mvc; using Raven.Client.Documents.Indexes; namespace zero.Api.Abstractions; public abstract class ZeroApiEntityStoreController : ZeroApiController where TModel : ZeroEntity, new() where TStore : IEntityStore { protected TStore Store { get; set; } protected ZeroApiEntityStoreOperations Ops { get; set; } public ZeroApiEntityStoreController(TStore store) { Store = store; Ops = new ZeroApiEntityStoreOperations(this, store); } protected Task> EmptyModel(string flavorAlias = null, Action modify = null) => Ops.EmptyModel(flavorAlias, modify); protected Task> EmptyModel(string flavorAlias = null, Action modify = null) => Ops.EmptyModel(flavorAlias, modify); protected Task> GetModel(string id, string changeVector = null) => Ops.GetModel(id, changeVector); protected Task> GetModel(string id, string changeVector = null) => Ops.GetModel(id, changeVector); protected Task> GetModels(ListQuery query) => Ops.GetModels(query); protected Task> GetModels(ListQuery query) => Ops.GetModels(query); protected Task> GetModelsByIndex(ListQuery query) where TIndex : AbstractCommonApiForIndexes, new() => Ops.GetModelsByIndex(query); protected Task> GetModelsByIndex(ListQuery query) where TIndex : AbstractCommonApiForIndexes, new() => Ops.GetModelsByIndex(query); protected Task> CreateModel(T saveModel) where T : ISupportsFlavors => Ops.CreateModel(saveModel); protected Task> CreateModel(TModel saveModel) => Ops.CreateModel(saveModel); protected Task> UpdateModel(string id, T updateModel, string changeToken = null) where T : ZeroIdEntity => Ops.UpdateModel(id, updateModel, changeToken); protected Task> UpdateModel(string id, TModel updateModel, string changeToken = null) => Ops.UpdateModel(id, updateModel, changeToken); protected Task> SortModels(string[] ids) => Ops.SortModels(ids); protected Task> DeleteModel(string id) => Ops.DeleteModel(id); }