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)); }
/// <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); }
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); }
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); }
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); }
// 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); }