public async Task <PersistData> SetPersistData([FromBody] SetDataRequest request)
        {
            var game = (await gameRepository.Lookup(request.gameLookup)).FirstOrDefault();

            if (game == null)
            {
                throw new ArgumentException();
            }
            var profile = (await profileRepository.Lookup(request.profileLookup)).FirstOrDefault();

            if (profile == null)
            {
                throw new NoSuchUserException();
            }

            var lookup = new PersistDataLookup();

            lookup.profileLookup = request.profileLookup;
            lookup.gameLookup    = request.gameLookup;
            lookup.DataIndex     = request.dataIndex;
            lookup.PersistType   = request.persistType;

            //delete request
            PersistData data_entry = null;

            if (request.base64Data.Length == 0)
            {
                bool success = await persistRepository.Delete(lookup);

                //if(success)
                {
                    var data = new PersistData();
                    data.Modified = DateTime.UtcNow;
                    data.Profile  = profile;
                    return(data);
                }
            }
            else
            {
                data_entry = (await persistRepository.Lookup(lookup)).FirstOrDefault();
                if (data_entry != null)
                {
                    data_entry.Base64Data = Convert.FromBase64String(request.base64Data);
                    return(await persistRepository.Update(data_entry));
                }
                else
                {
                    var data = new PersistData();
                    data.Base64Data  = Convert.FromBase64String(request.base64Data);
                    data.DataIndex   = request.dataIndex;
                    data.PersistType = request.persistType;
                    data.Profileid   = profile.Id;
                    data.Gameid      = game.Id;
                    return(await persistRepository.Create(data));
                }
            }
        }
        public async Task <IEnumerable <PersistData> > GetPersistData([FromBody] GetDataRequest request)
        {
            var lookup = new PersistDataLookup();

            lookup.profileLookup = request.profileLookup;
            lookup.gameLookup    = request.gameLookup;
            lookup.DataIndex     = request.dataIndex;
            lookup.PersistType   = request.persistType;
            lookup.modifiedSince = request.modifiedSince;
            return(await persistRepository.Lookup(lookup));
        }