Example #1
0
        // TODO: Get/GetAll with a Filter predicate that we can execute on the Data thread and only
        // return values which match.
        public DataResponse <TEntity> HandleRequest <TEntity>(DataRequest <TEntity> request)
            where TEntity : class, IDataEntity
        {
            if (!request.IsValid())
            {
                return(DataResponse <TEntity> .BadRequest());
            }

            try
            {
                switch (request.Type)
                {
                case DataRequestType.GetAll:
                    var all = _storage.GetAll <TEntity>();
                    return(DataResponse <TEntity> .FoundAll(all));

                case DataRequestType.Get:
                    return(HandleGetRequest(request));

                case DataRequestType.Delete:
                    return(HandleDeleteRequest(request));

                case DataRequestType.Save:
                    return(HandleSaveRequest(request));

                default:
                    return(DataResponse <TEntity> .BadRequest());
                }
            }
            catch (Exception e)
            {
                _log.LogError(e, "Error handling data request");
                return(DataResponse <TEntity> .BadRequest());
            }
        }