예제 #1
0
        private DataResponse <TEntity> HandleDeleteRequest <TEntity>(DataRequest <TEntity> request)
            where TEntity : class, IDataEntity
        {
            bool ok = _storage.Delete <TEntity>(request.Id);

            return(!ok ? DataResponse <TEntity> .NotFound() : DataResponse <TEntity> .Ok());
        }
예제 #2
0
        private DataResponse <TEntity> HandleSaveRequest <TEntity>(DataRequest <TEntity> request)
            where TEntity : class, IDataEntity
        {
            // If we are doing an in-place update, we need the entity to not exist, the ID to
            // be provided, and the InPlaceUpdate delegate to be set
            if (request.Entity == null && !string.IsNullOrEmpty(request.Id) && request.InPlaceUpdate != null)
            {
                request.Entity = _storage.Get <TEntity>(request.Id);
                if (request.Entity == null)
                {
                    return(DataResponse <TEntity> .NotFound());
                }
                request.InPlaceUpdate(request.Entity);
            }

            // If we don't have an entity at this point, it's an error
            if (request.Entity == null)
            {
                return(DataResponse <TEntity> .BadRequest());
            }

            var version = _storage.Save(request.Entity, request.Force);

            if (version == VersionMismatch)
            {
                return(DataResponse <TEntity> .VersionMismatch());
            }
            request.Entity.StoreVersion = version;
            return(DataResponse <TEntity> .Saved(request.Entity));
        }
예제 #3
0
        private DataResponse <TEntity> HandleGetRequest <TEntity>(DataRequest <TEntity> request) where TEntity : class, IDataEntity
        {
            var entity = _storage.Get <TEntity>(request.Id);

            return(entity == null ? DataResponse <TEntity> .NotFound() : DataResponse <TEntity> .Found(entity));
        }