Example #1
0
 public Task <int> ExecuteAsync(string query, params object[] args)
 {
     return(Task <int> .Factory.StartNew(
                () =>
     {
         SqliteSession conn = this.GetAsyncConnection();
         using (conn.Lock())
         {
             return conn.Execute(query, args);
         }
     }));
 }
        /// <summary>
        ///   The "integrity-check" command causes SQLite to read and verify
        ///   the accuracy of all inverted indices in an FTS3/4 table by
        ///   comparing those inverted indices against the original content.
        /// </summary>
        /// <param name="database">The database to use.</param>
        /// <param name="type">The table to check.</param>
        public static int IntegrityCheck(this SqliteSession database, Type type)
        {
            var map = database.GetMapping(type);

            return(database.Execute(String.Format(IntegrityCheckCommand, map.TableName)));
        }
        /// <summary>
        ///   The "automerge=B" command disables or enables automatic
        ///   incremental inverted index merging for an FTS3/4 table.
        ///   Enabling automatic incremental merge causes SQLite to do a small
        ///   amount of inverted index merging after every INSERT operation to
        ///   prevent spiky INSERT performance.
        /// </summary>
        /// <param name="database">The database to use.</param>
        /// <param name="type">
        ///   The table on which to enable/disable the merges.
        ///  </param>
        /// <param name="enable">
        ///   True to enable automatic incremental inverted index. False to
        ///   disable.
        /// </param>
        public static int AutoMerge(this SqliteSession database, Type type, bool enable = false)
        {
            var map = database.GetMapping(type);

            return(database.Execute(String.Format(AutoMergeCommand, map.TableName, enable ? 1 : 0)));
        }
        /// <summary>
        ///   The "rebuild" command causes SQLite to discard the entire FTS3/4
        ///   table and then rebuild it again from original text.
        ///   The concept is similar to REINDEX.
        /// </summary>
        /// <param name="database">The database to use.</param>
        /// <param name="type">The table to rebuild.</param>
        public static int Rebuild(this SqliteSession database, Type type)
        {
            var map = database.GetMapping(type);

            return(database.Execute(String.Format(RebuildCommand, map.TableName)));
        }
        /// <summary>
        ///   The "merge=X,Y" command (where X and Y are integers) causes
        ///   SQLite to do a limited amount of work toward merging the various
        ///   inverted index b-trees of an FTS3/4 table together into one large
        ///   b-tree.
        /// </summary>
        /// <param name="database">The database to use.</param>
        /// <param name="type">The table on which to perform the merge.</param>
        /// <param name="x">
        ///   The X value is the target number of "blocks" to be merged.
        ///   The value of X can be any positive integer but values on the
        ///   order of 100 to 300 are recommended.
        /// </param>
        /// <param name="y">
        ///   The Y is the minimum number of b-tree segments on a level
        ///   required before merging will be applied to that level.
        ///   The value of Y should be between 2 and 16 with a recommended
        ///   value of 8.
        /// </param>
        public static int Merge(this SqliteSession database, Type type, int x = 100, int y = 8)
        {
            var map = database.GetMapping(type);

            return(database.Execute(String.Format(MergeXyCommand, map.TableName, x, y)));
        }