ソースを参照

Exposed method to run FTS commands.

Andrew Goodale 11 年 前
コミット
c35fa77245
2 ファイル変更27 行追加0 行削除
  1. 14 0
      src/fts3/FMDatabase+FTS3.h
  2. 13 0
      src/fts3/FMDatabase+FTS3.m

+ 14 - 0
src/fts3/FMDatabase+FTS3.h

@@ -8,6 +8,15 @@
 
 #import "FMDatabase.h"
 
+/**
+ Names of commands that can be issued against an FTS table.
+ */
+extern NSString *const kFTSCommandOptimize;        // "optimize"
+extern NSString *const kFTSCommandRebuild;         // "rebuild"
+extern NSString *const kFTSCommandIntegrityCheck;  // "integrity-check"
+extern NSString *const kFTSCommandMerge;           // "merge=%u,%u"
+extern NSString *const kFTSCommandAutoMerge;       // "automerge=%u"
+
 @protocol FMTokenizerDelegate;
 
 /**
@@ -26,6 +35,11 @@
  */
 - (BOOL)installTokenizerModule;
 
+/**
+ Runs a "special command" for FTS3/FTS4 tables.
+ */
+- (BOOL)issueCommand:(NSString *)command forTable:(NSString *)tableName;
+
 @end
 
 #pragma mark

+ 13 - 0
src/fts3/FMDatabase+FTS3.m

@@ -9,6 +9,12 @@
 #import "FMDatabase+FTS3.h"
 #import "fts3_tokenizer.h"
 
+NSString *const kFTSCommandOptimize = @"optimize";
+NSString *const kFTSCommandRebuild  = @"rebuild";
+NSString *const kFTSCommandIntegrityCheck = @"integrity-check";
+NSString *const kFTSCommandMerge = @"merge=%u,%u";
+NSString *const kFTSCommandAutoMerge = @"automerge=%u";
+
 /* I know this is an evil global, but we need to be able to map names to implementations. */
 static NSMapTable *g_delegateMap = nil;
 
@@ -195,4 +201,11 @@ - (BOOL)installTokenizerModule
     return NO;
 }
 
+- (BOOL)issueCommand:(NSString *)command forTable:(NSString *)tableName
+{
+    NSString *sql = [NSString stringWithFormat:@"INSERT INTO %1$@(%1$@) VALUES (?)", tableName];
+    
+    return [self executeUpdate:sql, command];
+}
+
 @end