/// <summary>
        /// Rebuilds the index.
        /// </summary>
        /// <param name="onlineMode">if set to <c>true</c> the task will be running in Online mode.</param>
        /// <returns>Number of affected entries (zero in this case).</returns>
        public static int RebuildIndex(bool onlineMode)
        {
            Log.Audit(Context.User, "'Rebuild index' task started with parameter onlineMode={0}", onlineMode.ToString());
            string getSqlQuery = Util.GetSqlQueryFromItem(
                onlineMode ? RebuildIndexOnlineQueryItem : RebuildIndexQueryItem, Util.SqlProviderName);

            return(AnalyticsDatabaseHelper.ExecuteNonQuery(getSqlQuery));
        }
 /// <summary>
 /// Trivial logic for cleanup tasks with filter.
 /// </summary>
 /// <param name="query">Prepared query</param>
 /// <returns>Number of affected entries.</returns>
 private static int ApplySimpleCleanFilter(string query)
 {
     try
     {
         AnalyticsDatabaseHelper.MakeConstraintsCascade();
         int processed = AnalyticsDatabaseHelper.ExecuteNonQuery(query);
         AnalyticsDatabaseHelper.RemoveUnusedGlobalSessions();
         return(processed);
     }
     finally
     {
         AnalyticsDatabaseHelper.MakeConstraintsStandard();
     }
 }
        /// <summary>
        /// Backups current analytics database.
        /// </summary>
        /// <param name="pathToBackupFile">Path to the file, which will be created as a backup (directory must exist).</param>
        /// <returns>The full name of the created backup file.</returns>
        public static string BackupDatabase(string pathToBackupFile)
        {
            Assert.IsNotNull(Path.GetDirectoryName(pathToBackupFile), "Path could not be null");
            Assert.IsTrue(
                Directory.Exists(Path.GetDirectoryName(pathToBackupFile) ?? string.Empty),
                "Directory must exist: " + pathToBackupFile);
            Log.Audit(Context.User, "'BackupDatabase' task started with parameter pathToBackupFile={0}", pathToBackupFile);

            string getSqlQuery   = Util.GetSqlQueryFromItem(BackupDatabaseQueryItem, Util.SqlProviderName);
            string preparedQuery = string.Format(
                getSqlQuery, AnalyticsDatabaseHelper.GetAnalyticsDatabaseName(), pathToBackupFile);

            AnalyticsDatabaseHelper.ExecuteNonQuery(preparedQuery);
            return(pathToBackupFile);
        }
        /// <summary>
        /// Removes the BOTs sessions.
        /// </summary>
        /// <returns>Number of affected entries.</returns>
        public static int RemoveBotSessions()
        {
            Log.Audit(Context.User, "'RemoveBotSessions' task started");

            try
            {
                AnalyticsDatabaseHelper.MakeConstraintsCascade();
                string getSqlQuery = Util.GetSqlQueryFromItem(RemoveBotVisitsQueryItem, Util.SqlProviderName);
                int    processed   = AnalyticsDatabaseHelper.ExecuteNonQuery(getSqlQuery);
                return(processed);
            }
            finally
            {
                AnalyticsDatabaseHelper.MakeConstraintsStandard();
            }
        }
        public static int CleanAllCollectedData(bool cleanIps, out int ipOwnersRemoved)
        {
            Log.Audit(Context.User, "Clean all task started with cleanIps={0}", cleanIps.ToString());
            string getSqlQuery           = Util.GetSqlQueryFromItem(CleanAllCollectedDataQueryItem, Util.SqlProviderName);
            string getSqlQueryHelperPart = Util.GetSqlQueryFromItem(CleanCollectedHelperDataQueryItem, Util.SqlProviderName);
            string getSqlQueryIpsPart    = Util.GetSqlQueryFromItem(CleanCollectedIpsQueryItem, Util.SqlProviderName);

            try
            {
                AnalyticsDatabaseHelper.MakeConstraintsCascade();
                int processed = AnalyticsDatabaseHelper.ExecuteNonQuery(getSqlQuery);
                ipOwnersRemoved = cleanIps ? AnalyticsDatabaseHelper.ExecuteNonQuery(getSqlQueryIpsPart) : 0;
                AnalyticsDatabaseHelper.ExecuteNonQuery(getSqlQueryHelperPart);

                return(processed);
            }
            finally
            {
                AnalyticsDatabaseHelper.MakeConstraintsStandard();
            }
        }