Esempio n. 1
0
        public async Task <ActionResult <Book> > RollBackAsync(string id, RollbackRequest request, [FromQuery] string reason = null)
        {
            var result = await _snapshots.GetAsync(ObjectType.Book, request.SnapshotId);

            if (!result.TryPickT0(out var snapshot, out _))
            {
                return(ResultUtilities.NotFound(request.SnapshotId));
            }

            var rollbackResult = await _snapshots.RollbackAsync <DbBook>(snapshot, new SnapshotArgs
            {
                Committer = User,
                Event     = SnapshotEvent.AfterRollback,
                Reason    = reason,
                Rollback  = snapshot,
                Source    = SnapshotSource.User
            });

            if (!rollbackResult.TryPickT0(out var value, out _))
            {
                return(ResultUtilities.NotFound(id));
            }

            var(book, _) = value;

            return(book.Convert(_services));
        }