public bool ProcessRequest(IGameDataRequest <IGameData> request, out IResponse response) { ErrorMessage error; if (!_gameDataRequestValidator.IsValid(request, out error)) { response = new GameDataResponse().SetErrorResponse(error); return(false); } if (!_processor.TryProcess(request, out response) && response != null) { return(false); } if (request.RequestType == RequestType.Read) { response = ReadFromState(request.Payload); return(true); } response = ApplyToState(request, response); return(true); }
public bool TryProcess(IGameDataRequest <IGameData> request, out IResponse response) { switch (request.RequestType) { case RequestType.Create: return(TryPersistRecord(request, out response)); case RequestType.Update: return(TryUpdateRecord(request, out response)); case RequestType.Delete: return(TryDeleteRecord(request, out response)); case RequestType.Read: { //There's no real processing to do here response = null; return(true); } default: { var errorMessage = new ErrorMessage(ErrorCode.RequestTypeNotSupported); response = new GameDataResponse().SetErrorResponse(errorMessage); return(false); } } }
private IResponse ApplyToState(IGameDataRequest <IGameData> request, IResponse response) { switch (request.RequestType) { case RequestType.Create: return(AddToState(request.Payload)); case RequestType.Delete: return(DeleteFromState(response)); case RequestType.Update: return(UpdateState(response)); default: return(null); } }
private bool TryUpdateRecord(IGameDataRequest <IGameData> request, out IResponse errorMessage) { throw new NotImplementedException(); }
private bool TryPersistRecord(IGameDataRequest <IGameData> request, out IResponse response) { throw new NotImplementedException(); }
public bool IsValid(IGameDataRequest <IGameData> request, out ErrorMessage errorMessage) { throw new NotImplementedException(); }