public async Task CleanupTable(CleanupTableRequest request) { var inStatement = GetInStatement(request.InstanceFieldValues); Log.Warn($"Cleaning target table '{request.TableName}'"); int deleted; if (request.NotOlderThan == null || request.FullReloading) { var query = $@"DELETE FROM {request.TableName} WHERE ({GetTenantFilter(request.InstanceFieldName, request.InstanceFieldValues, inStatement)}) AND ({GetDeleteProtectionDateFilter(request)})"; Log.Warn(query); deleted = await _connection.ExecuteAsync(query, commandTimeout : Timeout); } else { var query = $@"DELETE FROM {request.TableName} WHERE {request.ActualityFieldName} >= @NotOlderThan AND ({GetTenantFilter(request.InstanceFieldName, request.InstanceFieldValues, inStatement)}) AND ({GetDeleteProtectionDateFilter(request)})"; Log.Warn(query); deleted = await _connection.ExecuteAsync( query, new { NotOlderThan = request.NotOlderThan.Value }, commandTimeout : Timeout); } Log.Warn($"Deleted {deleted} record(s) in target table '{request.TableName}'"); }
public async Task CleanupHistoryTable(CleanupTableRequest request) { var inStatement = GetInStatement(request.InstanceFieldValues); Log.Warn($"Cleaning target table '{request.TableName}' in history mode"); var deleted = 0; if (request.FullReloading) { var query = $@"DELETE FROM {request.TableName} WHERE ({GetTenantFilter(request.InstanceFieldName, request.InstanceFieldValues, inStatement)}) AND ({GetDeleteProtectionDateFilter(request)})"; Log.Warn(query); deleted = await _connection.ExecuteAsync(query, commandTimeout : Timeout); } else { var query = $@"DELETE FROM {request.TableName} WHERE {request.HistoryDateFromFieldName} = @CurrentPropertyDate AND ({GetTenantFilter(request.InstanceFieldName, request.InstanceFieldValues, inStatement)}) AND ({GetDeleteProtectionDateFilter(request)})"; Log.Warn(query); deleted = await _connection.ExecuteAsync( query, new { request.CurrentPropertyDate }, commandTimeout : Timeout); } Log.Warn($"Deleted {deleted} record(s) in target table '{request.TableName}'"); }
private static string GetDeleteProtectionDateFilter(CleanupTableRequest request) { if (request.DeleteProtectionDate != null) { return ($"{request.ActualityFieldName} >= cast('{request.DeleteProtectionDate.Value.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}' as date)"); } return("1=1"); }