Files
mixtape/zero.Core/Unimplemented/RevisionsApi.cs
T
2021-11-24 13:56:08 +01:00

103 lines
3.3 KiB
C#

//using Raven.Client.Documents.Session;
//using System.Collections.Generic;
//using System.Linq;
//using System.Threading.Tasks;
//using zero.Core.Entities;
//using zero.Core.Extensions;
//namespace zero.Core.Api
//{
// public class RevisionsApi : IRevisionsApi
// {
// protected IAsyncDocumentSession Session { get; set; }
// public RevisionsApi(IAsyncDocumentSession session)
// {
// Session = session;
// }
// /// <summary>
// /// Get revision list for an entity
// /// </summary>
// public async Task<Paged<Revision<T>>> GetPagedWithModel<T>(string id, int pageNumber = 1, int pageSize = 10) where T : ZeroEntity
// {
// // get paged revisions
// List<T> items = await Session.Advanced.Revisions.GetForAsync<T>(id, (pageNumber - 1) * pageSize, pageSize);
// long totalResults = await Session.Advanced.Revisions.GetCountForAsync(id);
// // add creation for last page
// //if (!items.Any() && pageNumber >= (int)Math.Ceiling((decimal)totalResults / pageSize))
// //{
// // T currentRevision = await Session.LoadAsync<T>(id);
// // if (currentRevision != null)
// // {
// // items.Add(currentRevision);
// // }
// //}
// List<Revision<T>> revisions = new();
// // load affected users as the revisions could have been edited by other users too
// string[] userIds = items.Select(x => x.LastModifiedById).Distinct().ToArray();
// Dictionary<string, ZeroUser> users = await Session.LoadAsync<ZeroUser>(userIds);
// // create revision objects
// foreach (T item in items)
// {
// Revision<T> revision = new()
// {
// Model = item,
// ModelId = item.Id,
// ChangeVector = Session.Advanced.GetChangeVectorFor(item),
// Date = item.LastModifiedDate
// };
// if (!item.LastModifiedById.IsNullOrEmpty() && users.TryGetValue(item.LastModifiedById, out ZeroUser user) && user != null)
// {
// revision.User = new RevisionUser()
// {
// AvatarId = user.AvatarId,
// Id = user.Id,
// Name = user.Name
// };
// }
// revisions.Add(revision);
// }
// return new Paged<Revision<T>>(revisions, totalResults, pageNumber, pageSize);
// }
// /// <summary>
// /// Get revision list for an entity
// /// </summary>
// public async Task<Paged<Revision>> GetPaged<T>(string id, int pageNumber = 1, int pageSize = 10) where T : ZeroEntity
// {
// Paged<Revision<T>> items = await GetPagedWithModel<T>(id, pageNumber, pageSize);
// return items.MapTo(model => new Revision()
// {
// ChangeVector = model.ChangeVector,
// Date = model.Date,
// ModelId = model.ModelId,
// User = model.User
// });
// }
// }
// public interface IRevisionsApi
// {
// /// <summary>
// /// Get revision list including models for an entity
// /// </summary>
// Task<Paged<Revision<T>>> GetPagedWithModel<T>(string id, int pageNumber = 1, int pageSize = 10) where T : ZeroEntity;
// /// <summary>
// /// Get revision list for an entity
// /// </summary>
// Task<Paged<Revision>> GetPaged<T>(string id, int pageNumber = 1, int pageSize = 10) where T : ZeroEntity;
// }
//}