Exemple #1
0
        private async Task <Tuple <T, KinveyException, int> > HandlePushDELETE(PendingWriteAction pwa)
        {
            var             offset          = 0;
            KinveyException kinveyException = null;

            try
            {
                int result = 0;

                NetworkRequest <KinveyDeleteResponse> request = Client.NetworkFactory.buildDeleteRequest <KinveyDeleteResponse>(pwa.collection, pwa.entityId);
                KinveyDeleteResponse kdr = await request.ExecuteAsync().ConfigureAwait(false);

                if (kdr.count == 1)
                {
                    result = SyncQueue.Remove(pwa);

                    if (result == 0)
                    {
                        offset++;
                    }
                }
            }
            catch (KinveyException ke)
            {
                kinveyException = ke;
                offset++;
            }

            return(new Tuple <T, KinveyException, int>(default(T), kinveyException, offset));
        }
Exemple #2
0
        /// <summary>
        /// Delete the specified file.
        /// </summary>
        /// <param name="fileId">The _id of the file to delete.</param>
        /// <param name="ct">[optional] The cancellation token.  If cancellation is requested, an OperationCancelledException will be thrown.</param>
        public async Task <KinveyDeleteResponse> delete(string fileId, CancellationToken ct = default(CancellationToken))
        {
            DeleteFileAndMetaDataRequest request = buildDeleteFileRequest(fileId);

            ct.ThrowIfCancellationRequested();
            KinveyDeleteResponse deleteResponse = await request.ExecuteAsync();

            return(deleteResponse);
        }
Exemple #3
0
        public KinveyDeleteResponse DeleteByIDs(List <string> IDs)
        {
            KinveyDeleteResponse kdr = new KinveyDeleteResponse();

            foreach (string ID in IDs)
            {
                kdr.count += DeleteByID(ID).count;
            }

            kdr.IDs = new List <string>(IDs);
            return(kdr);
        }
Exemple #4
0
        public KinveyDeleteResponse DeleteByQuery(IQueryable <object> query)
        {
            var kdr = new KinveyDeleteResponse();

            try
            {
                var visitor    = new KinveyQueryVisitor(typeof(T), VisitorClause.Where);
                var queryModel = (query.Provider as KinveyQueryProvider)?.qm;
                //We call it here to find unsupported LINQ where clauses.
                queryModel?.Accept(visitor);

                int              skipNumber    = 0;
                int              takeNumber    = 0;
                bool             sortAscending = true;
                LambdaExpression exprSort      = null;

                var lambdaExpr = ConvertQueryExpressionToFunction(query.Expression, ref skipNumber, ref takeNumber, ref sortAscending, ref exprSort);

                var dataTable = dbConnectionSync.Table <T>();

                if (lambdaExpr == null)
                {
                    throw new KinveyException(EnumErrorCategory.ERROR_GENERAL, EnumErrorCode.ERROR_DATASTORE_WHERE_CLAUSE_IS_ABSENT_IN_QUERY, "'Where' clause is absent in query.");
                }

                dataTable = dataTable.Where(lambdaExpr);

                var matchIDs = new List <string>();
                foreach (var item in dataTable.ToList())
                {
                    var entity = item as IPersistable;
                    matchIDs.Add(entity.ID);
                }

                kdr = this.DeleteByIDs(matchIDs);
            }
            catch (SQLiteException ex)
            {
                throw new KinveyException(EnumErrorCategory.ERROR_DATASTORE_CACHE, EnumErrorCode.ERROR_DATASTORE_CACHE_REMOVING_ENTITIES_ACCORDING_TO_QUERY, string.Empty, ex);
            }

            return(kdr);
        }
Exemple #5
0
        public KinveyDeleteResponse DeleteByID(string id)
        {
            KinveyDeleteResponse kdr = new KinveyDeleteResponse();

            try
            {
                kdr.count = dbConnectionSync.Delete <T>(id);
                var ids = new List <string>();
                ids.Add(id);
                kdr.IDs = ids;
            }
            catch (SQLiteException e)
            {
                Logger.Log("Kinvey exception in cache remove: item not found.  " + e.Message);
            }
            catch (Exception e)
            {
                throw new KinveyException(EnumErrorCategory.ERROR_DATASTORE_CACHE, EnumErrorCode.ERROR_DATASTORE_CACHE_REMOVE_ENTITY, "", e);
            }

            return(kdr);
        }
Exemple #6
0
        // DELETE APIs
        //

        /// <summary>
        /// Clear this local cache table of all its content.
        /// </summary>
        public KinveyDeleteResponse Clear(Expression expr = null)
        {
            KinveyDeleteResponse kdr = new KinveyDeleteResponse();

            try
            {
                if (expr == null)
                {
                    kdr.count = dbConnectionSync.DeleteAll <T>();
                }
                else
                {
                    int              skipNumber    = 0;
                    int              takeNumber    = 0;
                    bool             sortAscending = true;
                    LambdaExpression exprSort      = null;

                    var lambdaExpr = ConvertQueryExpressionToFunction(expr, ref skipNumber, ref takeNumber, ref sortAscending, ref exprSort);

                    if (lambdaExpr == null && skipNumber == 0 && takeNumber == 0)
                    {
                        kdr.count = dbConnectionSync.DeleteAll <T>();
                    }
                    else if (skipNumber == 0)
                    {
                        List <T> results;

                        var query = dbConnectionSync.Table <T>();
                        if (lambdaExpr != null)
                        {
                            query = query.Where(lambdaExpr);
                        }

                        if (takeNumber != 0)
                        {
                            query = query.Take(takeNumber);
                        }

                        if (exprSort != null)
                        {
                            ApplySort(ref query, sortAscending, exprSort);
                        }

                        results = query.ToList();

                        List <string> matchIDs = new List <string>();
                        foreach (var match in results)
                        {
                            IPersistable entity = match as IPersistable;
                            matchIDs.Add(entity.ID);
                        }

                        kdr = this.DeleteByIDs(matchIDs);
                    }
                    else
                    {
                        // Pagination appears to be happening here, so we should not delete any cached items because the complete pull is no finished.
                        // Do nothing here.
                    }
                }
            }
            catch (SQLiteException e)
            {
                throw new KinveyException(EnumErrorCategory.ERROR_DATASTORE_CACHE, EnumErrorCode.ERROR_DATASTORE_CACHE_CLEAR, "", e);
            }

            return(kdr);
        }