Esempio n. 1
0
        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}'");
        }
Esempio n. 2
0
        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}'");
        }
Esempio n. 3
0
 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");
 }