motion-yapper 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.travis.yml +6 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +63 -0
- data/README.md +16 -0
- data/Rakefile +20 -0
- data/app/app_delegate.rb +5 -0
- data/lib/yapper.rb +30 -0
- data/lib/yapper/attachment.rb +48 -0
- data/lib/yapper/bson.rb +20 -0
- data/lib/yapper/config.rb +18 -0
- data/lib/yapper/db.rb +151 -0
- data/lib/yapper/document.rb +54 -0
- data/lib/yapper/document/attachment.rb +26 -0
- data/lib/yapper/document/callbacks.rb +86 -0
- data/lib/yapper/document/persistance.rb +171 -0
- data/lib/yapper/document/relation.rb +84 -0
- data/lib/yapper/document/selection.rb +100 -0
- data/lib/yapper/extensions.rb +80 -0
- data/lib/yapper/log.rb +5 -0
- data/lib/yapper/sync.rb +134 -0
- data/lib/yapper/sync/data.rb +12 -0
- data/lib/yapper/sync/event.rb +194 -0
- data/lib/yapper/sync/queue.rb +164 -0
- data/lib/yapper/timestamps.rb +16 -0
- data/lib/yapper/version.rb +3 -0
- data/lib/yapper/yapper.rb +2 -0
- data/spec/helpers/time_helper.rb +3 -0
- data/spec/integration/all_spec.rb +40 -0
- data/spec/integration/callback_spec.rb +87 -0
- data/spec/integration/db_spec.rb +40 -0
- data/spec/integration/find_spec.rb +51 -0
- data/spec/integration/persistance_spec.rb +118 -0
- data/spec/integration/relation_spec.rb +174 -0
- data/spec/integration/sync_spec.rb +42 -0
- data/spec/integration/timestamps_spec.rb +34 -0
- data/spec/integration/types_spec.rb +23 -0
- data/spec/integration/when_spec.rb +29 -0
- data/spec/integration/where_spec.rb +132 -0
- data/vendor/Podfile.lock +24 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +641 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +1396 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +133 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +327 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +113 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +321 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +71 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +150 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +157 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +43 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +68 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +143 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +370 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +848 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +89 -0
- data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +167 -0
- data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +78 -0
- data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +191 -0
- data/vendor/Pods/AFNetworking/LICENSE +19 -0
- data/vendor/Pods/AFNetworking/README.md +208 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +641 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +133 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +113 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +71 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +43 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +68 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +370 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +89 -0
- data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +78 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/ContextFilterLogFormatter.h +65 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +41 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +102 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +334 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +601 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +167 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DispatchQueueLogFormatter.h +116 -0
- data/vendor/Pods/BuildHeaders/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
- data/vendor/Pods/BuildHeaders/Reachability/Reachability.h +109 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +90 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +20 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +547 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +447 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnectionState.h +29 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +37 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtension.h +15 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionConnection.h +11 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +440 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionTransaction.h +11 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +108 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewConnection.h +12 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +19 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +39 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearch.h +89 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchConnection.h +32 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +69 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchTransaction.h +68 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseLogging.h +158 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseManager.h +17 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +424 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseQuery.h +42 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +100 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexConnection.h +33 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +73 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetup.h +33 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +58 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseStatement.h +13 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseString.h +121 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +541 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +186 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +272 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChangePrivate.h +94 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +115 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +825 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappingsPrivate.h +72 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +56 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPage.h +36 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPageMetadata.h +27 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +153 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptions.h +330 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +17 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +447 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapMemoryTable.h +74 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapNull.h +17 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapSet.h +41 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapTouch.h +15 -0
- data/vendor/Pods/CocoaLumberjack/LICENSE.txt +18 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +41 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +99 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +102 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +727 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +334 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +1353 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +601 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +1083 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +167 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +1479 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.h +65 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.m +191 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.h +116 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.m +251 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +7 -0
- data/vendor/Pods/CocoaLumberjack/README.markdown +37 -0
- data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +641 -0
- data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +133 -0
- data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +113 -0
- data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +71 -0
- data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
- data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +43 -0
- data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +68 -0
- data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +370 -0
- data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +89 -0
- data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +78 -0
- data/vendor/Pods/Headers/CocoaLumberjack/ContextFilterLogFormatter.h +65 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +41 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +102 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +334 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +601 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +167 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DispatchQueueLogFormatter.h +116 -0
- data/vendor/Pods/Headers/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
- data/vendor/Pods/Headers/Reachability/Reachability.h +109 -0
- data/vendor/Pods/Headers/YapDatabase/YapCache.h +90 -0
- data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +20 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +547 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +447 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnectionState.h +29 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseDefaults.h +37 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtension.h +15 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionConnection.h +11 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionPrivate.h +440 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionTransaction.h +11 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +108 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewConnection.h +12 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewPrivate.h +19 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +39 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearch.h +89 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchConnection.h +32 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchPrivate.h +69 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchTransaction.h +68 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseLogging.h +158 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseManager.h +17 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabasePrivate.h +424 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseQuery.h +42 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +100 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexConnection.h +33 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +73 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexSetup.h +33 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +58 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseStatement.h +13 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseString.h +121 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +541 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +186 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +272 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChangePrivate.h +94 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +115 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +825 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappingsPrivate.h +72 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +56 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPage.h +36 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPageMetadata.h +27 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPrivate.h +153 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptions.h +330 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +17 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +447 -0
- data/vendor/Pods/Headers/YapDatabase/YapMemoryTable.h +74 -0
- data/vendor/Pods/Headers/YapDatabase/YapNull.h +17 -0
- data/vendor/Pods/Headers/YapDatabase/YapSet.h +41 -0
- data/vendor/Pods/Headers/YapDatabase/YapTouch.h +15 -0
- data/vendor/Pods/Headers/____Pods-AFNetworking-prefix.h +17 -0
- data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +5 -0
- data/vendor/Pods/Headers/____Pods-NSData+MD5Digest-prefix.h +5 -0
- data/vendor/Pods/Headers/____Pods-Reachability-prefix.h +5 -0
- data/vendor/Pods/Headers/____Pods-YapDatabase-prefix.h +5 -0
- data/vendor/Pods/Headers/____Pods-environment.h +38 -0
- data/vendor/Pods/Manifest.lock +24 -0
- data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
- data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.m +39 -0
- data/vendor/Pods/NSData+MD5Digest/README.md +11 -0
- data/vendor/Pods/Pods-AFNetworking-Private.xcconfig +5 -0
- data/vendor/Pods/Pods-AFNetworking-dummy.m +5 -0
- data/vendor/Pods/Pods-AFNetworking-prefix.pch +17 -0
- data/vendor/Pods/Pods-AFNetworking.xcconfig +1 -0
- data/vendor/Pods/Pods-Acknowledgements.markdown +96 -0
- data/vendor/Pods/Pods-Acknowledgements.plist +142 -0
- data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +5 -0
- data/vendor/Pods/Pods-CocoaLumberjack-dummy.m +5 -0
- data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +5 -0
- data/vendor/Pods/Pods-CocoaLumberjack.xcconfig +0 -0
- data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +5 -0
- data/vendor/Pods/Pods-NSData+MD5Digest-dummy.m +5 -0
- data/vendor/Pods/Pods-NSData+MD5Digest-prefix.pch +5 -0
- data/vendor/Pods/Pods-NSData+MD5Digest.xcconfig +0 -0
- data/vendor/Pods/Pods-Reachability-Private.xcconfig +5 -0
- data/vendor/Pods/Pods-Reachability-dummy.m +5 -0
- data/vendor/Pods/Pods-Reachability-prefix.pch +5 -0
- data/vendor/Pods/Pods-Reachability.xcconfig +1 -0
- data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +5 -0
- data/vendor/Pods/Pods-YapDatabase-dummy.m +5 -0
- data/vendor/Pods/Pods-YapDatabase-prefix.pch +5 -0
- data/vendor/Pods/Pods-YapDatabase.xcconfig +1 -0
- data/vendor/Pods/Pods-dummy.m +5 -0
- data/vendor/Pods/Pods-environment.h +38 -0
- data/vendor/Pods/Pods-resources.sh +68 -0
- data/vendor/Pods/Pods.bridgesupport +5096 -0
- data/vendor/Pods/Pods.xcconfig +5 -0
- data/vendor/Pods/Pods.xcodeproj/project.pbxproj +5536 -0
- data/vendor/Pods/Reachability/LICENCE.txt +24 -0
- data/vendor/Pods/Reachability/README.md +65 -0
- data/vendor/Pods/Reachability/Reachability.h +109 -0
- data/vendor/Pods/Reachability/Reachability.m +527 -0
- data/vendor/Pods/YapDatabase/LICENSE.txt +18 -0
- data/vendor/Pods/YapDatabase/README.md +30 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +19 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +108 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +175 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.h +12 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.m +41 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +39 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +966 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +69 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h +89 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m +146 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.h +32 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +298 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.m +95 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.h +68 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +1352 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +440 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.h +15 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +58 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.h +11 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +46 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.h +11 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +180 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +73 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +100 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +149 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.h +33 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +330 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.h +33 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +184 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.h +58 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +1166 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewChangePrivate.h +94 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewMappingsPrivate.h +72 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.h +36 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.mm +296 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.h +27 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.m +28 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +153 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewRangeOptionsPrivate.h +17 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +272 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +2494 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +825 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +1567 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.h +330 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.m +141 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +186 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +191 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +115 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +897 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +56 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.m +27 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +447 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +4505 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +90 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +453 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.h +29 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.m +48 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +37 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +83 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.h +158 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.m +73 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.h +17 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.m +56 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +424 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.h +13 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.m +26 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseString.h +121 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.h +74 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.m +603 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.h +17 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +31 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.h +15 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.m +31 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +20 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +194 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.h +42 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.m +96 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.h +41 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.m +82 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +547 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +2022 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +447 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +3874 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +541 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +5282 -0
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +16 -0
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +13 -0
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +20 -0
- data/yapper.gemspec +24 -0
- metadata +458 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#import "YapDatabaseFullTextSearch.h"
|
|
2
|
+
#import "YapDatabaseFullTextSearchConnection.h"
|
|
3
|
+
#import "YapDatabaseFullTextSearchTransaction.h"
|
|
4
|
+
|
|
5
|
+
#import "YapDatabase.h"
|
|
6
|
+
#import "YapDatabaseConnection.h"
|
|
7
|
+
#import "YapDatabaseTransaction.h"
|
|
8
|
+
|
|
9
|
+
#import "sqlite3.h"
|
|
10
|
+
|
|
11
|
+
@interface YapDatabaseFullTextSearch () {
|
|
12
|
+
@public
|
|
13
|
+
|
|
14
|
+
YapDatabaseFullTextSearchBlock block;
|
|
15
|
+
YapDatabaseFullTextSearchBlockType blockType;
|
|
16
|
+
|
|
17
|
+
NSOrderedSet *columnNames;
|
|
18
|
+
NSDictionary *options;
|
|
19
|
+
int version;
|
|
20
|
+
|
|
21
|
+
id columnNamesSharedKeySet;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- (NSString *)tableName;
|
|
25
|
+
|
|
26
|
+
@end
|
|
27
|
+
|
|
28
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
29
|
+
#pragma mark -
|
|
30
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
31
|
+
|
|
32
|
+
@interface YapDatabaseFullTextSearchConnection () {
|
|
33
|
+
@public
|
|
34
|
+
|
|
35
|
+
__strong YapDatabaseFullTextSearch *fts;
|
|
36
|
+
__unsafe_unretained YapDatabaseConnection *databaseConnection;
|
|
37
|
+
|
|
38
|
+
NSMutableDictionary *blockDict;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
- (id)initWithFTS:(YapDatabaseFullTextSearch *)fts
|
|
42
|
+
databaseConnection:(YapDatabaseConnection *)databaseConnection;
|
|
43
|
+
|
|
44
|
+
- (sqlite3_stmt *)insertRowidStatement;
|
|
45
|
+
- (sqlite3_stmt *)setRowidStatement;
|
|
46
|
+
- (sqlite3_stmt *)removeRowidStatement;
|
|
47
|
+
- (sqlite3_stmt *)removeAllStatement;
|
|
48
|
+
- (sqlite3_stmt *)queryStatement;
|
|
49
|
+
- (sqlite3_stmt *)querySnippetStatement;
|
|
50
|
+
|
|
51
|
+
@end
|
|
52
|
+
|
|
53
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
54
|
+
#pragma mark -
|
|
55
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
56
|
+
|
|
57
|
+
@interface YapDatabaseFullTextSearchTransaction () {
|
|
58
|
+
@private
|
|
59
|
+
|
|
60
|
+
__unsafe_unretained YapDatabaseFullTextSearchConnection *ftsConnection;
|
|
61
|
+
__unsafe_unretained YapDatabaseReadTransaction *databaseTransaction;
|
|
62
|
+
|
|
63
|
+
BOOL isMutated;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
- (id)initWithFTSConnection:(YapDatabaseFullTextSearchConnection *)ftsConnection
|
|
67
|
+
databaseTransaction:(YapDatabaseReadTransaction *)databaseTransaction;
|
|
68
|
+
|
|
69
|
+
@end
|
data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
#import "YapDatabaseExtension.h"
|
|
4
|
+
#import "YapDatabaseFullTextSearchConnection.h"
|
|
5
|
+
#import "YapDatabaseFullTextSearchTransaction.h"
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Welcome to YapDatabase!
|
|
9
|
+
*
|
|
10
|
+
* https://github.com/yaptv/YapDatabase
|
|
11
|
+
*
|
|
12
|
+
* The project wiki has a wealth of documentation if you have any questions.
|
|
13
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
14
|
+
*
|
|
15
|
+
* YapDatabaseFullTextSearch is an extension for performing text based search.
|
|
16
|
+
* Internally it uses sqlite's FTS module which was contributed by Google.
|
|
17
|
+
**/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The block handles extracting the column values for indexing by the FTS module.
|
|
21
|
+
*
|
|
22
|
+
* When you add or update rows in the databse the FTS block is invoked.
|
|
23
|
+
* Your block can inspect the row and determine if it contains any text columns that should be indexed.
|
|
24
|
+
* If not, the block can simply return.
|
|
25
|
+
* Otherwise the block should extract any text values, add them to the given dictionary.
|
|
26
|
+
*
|
|
27
|
+
* After the block returns, the dictionary parameter will be inspected,
|
|
28
|
+
* and any set values will be automatically passed to sqlite's FTS module for indexing.
|
|
29
|
+
*
|
|
30
|
+
* You should choose a block type that takes the minimum number of required parameters.
|
|
31
|
+
* The view can make various optimizations based on required parameters of the block.
|
|
32
|
+
**/
|
|
33
|
+
typedef id YapDatabaseFullTextSearchBlock; // One of YapDatabaseFullTextSearchXBlock types
|
|
34
|
+
|
|
35
|
+
typedef void (^YapDatabaseFullTextSearchWithKeyBlock) \
|
|
36
|
+
(NSMutableDictionary *dict, NSString *collection, NSString *key);
|
|
37
|
+
typedef void (^YapDatabaseFullTextSearchWithObjectBlock) \
|
|
38
|
+
(NSMutableDictionary *dict, NSString *collection, NSString *key, id object);
|
|
39
|
+
typedef void (^YapDatabaseFullTextSearchWithMetadataBlock) \
|
|
40
|
+
(NSMutableDictionary *dict, NSString *collection, NSString *key, id metadata);
|
|
41
|
+
typedef void (^YapDatabaseFullTextSearchWithRowBlock) \
|
|
42
|
+
(NSMutableDictionary *dict, NSString *collection, NSString *key, id object, id metadata);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Use this enum to specify what kind of block you're passing.
|
|
46
|
+
**/
|
|
47
|
+
typedef enum {
|
|
48
|
+
YapDatabaseFullTextSearchBlockTypeWithKey = 201,
|
|
49
|
+
YapDatabaseFullTextSearchBlockTypeWithObject = 202,
|
|
50
|
+
YapDatabaseFullTextSearchBlockTypeWithMetadata = 203,
|
|
51
|
+
YapDatabaseFullTextSearchBlockTypeWithRow = 204
|
|
52
|
+
} YapDatabaseFullTextSearchBlockType;
|
|
53
|
+
|
|
54
|
+
@interface YapDatabaseFullTextSearch : YapDatabaseExtension
|
|
55
|
+
|
|
56
|
+
/* Inherited from YapDatabaseExtension
|
|
57
|
+
|
|
58
|
+
@property (nonatomic, strong, readonly) NSString *registeredName;
|
|
59
|
+
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
- (id)initWithColumnNames:(NSArray *)columnNames
|
|
63
|
+
block:(YapDatabaseFullTextSearchBlock)block
|
|
64
|
+
blockType:(YapDatabaseFullTextSearchBlockType)blockType;
|
|
65
|
+
|
|
66
|
+
- (id)initWithColumnNames:(NSArray *)columnNames
|
|
67
|
+
block:(YapDatabaseFullTextSearchBlock)block
|
|
68
|
+
blockType:(YapDatabaseFullTextSearchBlockType)blockType
|
|
69
|
+
version:(int)version;
|
|
70
|
+
|
|
71
|
+
- (id)initWithColumnNames:(NSArray *)columnNames
|
|
72
|
+
options:(NSDictionary *)options
|
|
73
|
+
block:(YapDatabaseFullTextSearchBlock)block
|
|
74
|
+
blockType:(YapDatabaseFullTextSearchBlockType)blockType
|
|
75
|
+
version:(int)version;
|
|
76
|
+
|
|
77
|
+
@property (nonatomic, strong, readonly) YapDatabaseFullTextSearchBlock block;
|
|
78
|
+
@property (nonatomic, assign, readonly) YapDatabaseFullTextSearchBlockType blockType;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The version assists in making changes to the extension.
|
|
82
|
+
*
|
|
83
|
+
* If you need to change the columnNames and/or block,
|
|
84
|
+
* then simply pass an incremented version during the init method,
|
|
85
|
+
* and the FTS extension will automatically update itself.
|
|
86
|
+
**/
|
|
87
|
+
@property (nonatomic, assign, readonly) int version;
|
|
88
|
+
|
|
89
|
+
@end
|
data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
#import "YapDatabaseFullTextSearch.h"
|
|
2
|
+
#import "YapDatabaseFullTextSearchPrivate.h"
|
|
3
|
+
|
|
4
|
+
#import "YapDatabasePrivate.h"
|
|
5
|
+
#import "YapDatabaseExtensionPrivate.h"
|
|
6
|
+
|
|
7
|
+
#import "YapDatabaseLogging.h"
|
|
8
|
+
|
|
9
|
+
#if ! __has_feature(objc_arc)
|
|
10
|
+
#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Define log level for this file: OFF, ERROR, WARN, INFO, VERBOSE
|
|
15
|
+
* See YapDatabaseLogging.h for more information.
|
|
16
|
+
**/
|
|
17
|
+
#if DEBUG
|
|
18
|
+
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
|
19
|
+
#else
|
|
20
|
+
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
@implementation YapDatabaseFullTextSearch
|
|
24
|
+
|
|
25
|
+
+ (void)dropTablesForRegisteredName:(NSString *)registeredName
|
|
26
|
+
withTransaction:(YapDatabaseReadWriteTransaction *)transaction
|
|
27
|
+
{
|
|
28
|
+
sqlite3 *db = transaction->connection->db;
|
|
29
|
+
|
|
30
|
+
NSString *tableName = [self tableNameForRegisteredName:registeredName];
|
|
31
|
+
NSString *dropTable = [NSString stringWithFormat:@"DROP TABLE IF EXISTS \"%@\";", tableName];
|
|
32
|
+
|
|
33
|
+
int status;
|
|
34
|
+
|
|
35
|
+
status = sqlite3_exec(db, [dropTable UTF8String], NULL, NULL, NULL);
|
|
36
|
+
if (status != SQLITE_OK)
|
|
37
|
+
{
|
|
38
|
+
YDBLogError(@"%@ - Failed dropping FTS table (%@): %d %s",
|
|
39
|
+
THIS_METHOD, dropTable, status, sqlite3_errmsg(db));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
+ (NSArray *)previousClassNames
|
|
44
|
+
{
|
|
45
|
+
return @[ @"YapCollectionsDatabaseFullTextSearch" ];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
+ (NSString *)tableNameForRegisteredName:(NSString *)registeredName
|
|
49
|
+
{
|
|
50
|
+
return [NSString stringWithFormat:@"fts_%@", registeredName];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
54
|
+
#pragma mark Instance
|
|
55
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
56
|
+
|
|
57
|
+
@synthesize block = block;
|
|
58
|
+
@synthesize blockType = blockType;
|
|
59
|
+
@synthesize version = version;
|
|
60
|
+
|
|
61
|
+
- (id)initWithColumnNames:(NSArray *)inColumnNames
|
|
62
|
+
block:(YapDatabaseFullTextSearchBlock)inBlock
|
|
63
|
+
blockType:(YapDatabaseFullTextSearchBlockType)inBlockType
|
|
64
|
+
{
|
|
65
|
+
return [self initWithColumnNames:inColumnNames options:nil block:inBlock blockType:inBlockType version:0];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
- (id)initWithColumnNames:(NSArray *)inColumnNames
|
|
69
|
+
block:(YapDatabaseFullTextSearchBlock)inBlock
|
|
70
|
+
blockType:(YapDatabaseFullTextSearchBlockType)inBlockType
|
|
71
|
+
version:(int)inVersion
|
|
72
|
+
{
|
|
73
|
+
return [self initWithColumnNames:inColumnNames options:nil block:inBlock blockType:inBlockType version:inVersion];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
- (id)initWithColumnNames:(NSArray *)inColumnNames
|
|
77
|
+
options:(NSDictionary *)inOptions
|
|
78
|
+
block:(YapDatabaseFullTextSearchBlock)inBlock
|
|
79
|
+
blockType:(YapDatabaseFullTextSearchBlockType)inBlockType
|
|
80
|
+
version:(int)inVersion
|
|
81
|
+
{
|
|
82
|
+
if ([inColumnNames count] == 0)
|
|
83
|
+
{
|
|
84
|
+
NSAssert(NO, @"Empty columnNames array");
|
|
85
|
+
return nil;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
for (id columnName in inColumnNames)
|
|
89
|
+
{
|
|
90
|
+
if (![columnName isKindOfClass:[NSString class]])
|
|
91
|
+
{
|
|
92
|
+
NSAssert(NO, @"Invalid column name. Not a string: %@", columnName);
|
|
93
|
+
return nil;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
NSRange range = [(NSString *)columnName rangeOfString:@"\""];
|
|
97
|
+
if (range.location != NSNotFound)
|
|
98
|
+
{
|
|
99
|
+
NSAssert(NO, @"Invalid column name. Cannot contain quotes: %@", columnName);
|
|
100
|
+
return nil;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
NSAssert(inBlock != NULL, @"Null block");
|
|
105
|
+
|
|
106
|
+
NSAssert(inBlockType == YapDatabaseFullTextSearchBlockTypeWithKey ||
|
|
107
|
+
inBlockType == YapDatabaseFullTextSearchBlockTypeWithObject ||
|
|
108
|
+
inBlockType == YapDatabaseFullTextSearchBlockTypeWithMetadata ||
|
|
109
|
+
inBlockType == YapDatabaseFullTextSearchBlockTypeWithRow,
|
|
110
|
+
@"Invalid block type");
|
|
111
|
+
|
|
112
|
+
if ((self = [super init]))
|
|
113
|
+
{
|
|
114
|
+
columnNames = [NSOrderedSet orderedSetWithArray:inColumnNames];
|
|
115
|
+
columnNamesSharedKeySet = [NSDictionary sharedKeySetForKeys:[columnNames array]];
|
|
116
|
+
|
|
117
|
+
options = [inOptions copy];
|
|
118
|
+
|
|
119
|
+
block = inBlock;
|
|
120
|
+
blockType = inBlockType;
|
|
121
|
+
|
|
122
|
+
version = inVersion;
|
|
123
|
+
}
|
|
124
|
+
return self;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Subclasses must implement this method.
|
|
129
|
+
* This method is called during the view registration process to enusre the extension supports the database config.
|
|
130
|
+
**/
|
|
131
|
+
- (BOOL)supportsDatabase:(YapDatabase *)database withRegisteredExtensions:(NSDictionary *)registeredExtensions
|
|
132
|
+
{
|
|
133
|
+
return YES;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
- (YapDatabaseExtensionConnection *)newConnection:(YapDatabaseConnection *)databaseConnection
|
|
137
|
+
{
|
|
138
|
+
return [[YapDatabaseFullTextSearchConnection alloc] initWithFTS:self databaseConnection:databaseConnection];
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
- (NSString *)tableName
|
|
142
|
+
{
|
|
143
|
+
return [[self class] tableNameForRegisteredName:self.registeredName];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import "YapDatabaseExtensionConnection.h"
|
|
3
|
+
|
|
4
|
+
@class YapDatabaseFullTextSearch;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Welcome to YapDatabase!
|
|
8
|
+
*
|
|
9
|
+
* https://github.com/yaptv/YapDatabase
|
|
10
|
+
*
|
|
11
|
+
* The project wiki has a wealth of documentation if you have any questions.
|
|
12
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
13
|
+
*
|
|
14
|
+
* YapDatabaseFullTextSearch is an extension for performing text based search.
|
|
15
|
+
* Internally it uses sqlite's FTS module which was contributed by Google.
|
|
16
|
+
*
|
|
17
|
+
* As an extension, YapCollectiosnDatabaseFullTextSearchConnection is automatically
|
|
18
|
+
* created by YapDatabaseConnnection. You can access this object via:
|
|
19
|
+
*
|
|
20
|
+
* [databaseConnection extension:@"myRegisteredExtensionName"]
|
|
21
|
+
*
|
|
22
|
+
* @see YapDatabaseFullTextSearch
|
|
23
|
+
* @see YapDatabaseFullTextSearchTransaction
|
|
24
|
+
**/
|
|
25
|
+
@interface YapDatabaseFullTextSearchConnection : YapDatabaseExtensionConnection
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns the parent instance.
|
|
29
|
+
**/
|
|
30
|
+
@property (nonatomic, strong, readonly) YapDatabaseFullTextSearch *fullTextSearch;
|
|
31
|
+
|
|
32
|
+
@end
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
#import "YapDatabaseFullTextSearchConnection.h"
|
|
2
|
+
#import "YapDatabaseFullTextSearchPrivate.h"
|
|
3
|
+
|
|
4
|
+
#import "YapDatabasePrivate.h"
|
|
5
|
+
#import "YapDatabaseExtensionPrivate.h"
|
|
6
|
+
|
|
7
|
+
#import "YapDatabaseLogging.h"
|
|
8
|
+
|
|
9
|
+
#if ! __has_feature(objc_arc)
|
|
10
|
+
#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Define log level for this file: OFF, ERROR, WARN, INFO, VERBOSE
|
|
15
|
+
* See YapDatabaseLogging.h for more information.
|
|
16
|
+
**/
|
|
17
|
+
#if DEBUG
|
|
18
|
+
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
|
19
|
+
#else
|
|
20
|
+
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@implementation YapDatabaseFullTextSearchConnection {
|
|
26
|
+
@private
|
|
27
|
+
|
|
28
|
+
sqlite3_stmt *insertRowidStatement;
|
|
29
|
+
sqlite3_stmt *setRowidStatement;
|
|
30
|
+
sqlite3_stmt *removeRowidStatement;
|
|
31
|
+
sqlite3_stmt *removeAllStatement;
|
|
32
|
+
sqlite3_stmt *queryStatement;
|
|
33
|
+
sqlite3_stmt *querySnippetStatement;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@synthesize fullTextSearch = fts;
|
|
37
|
+
|
|
38
|
+
- (id)initWithFTS:(YapDatabaseFullTextSearch *)inFTS
|
|
39
|
+
databaseConnection:(YapDatabaseConnection *)inDatabaseConnection
|
|
40
|
+
{
|
|
41
|
+
if ((self = [super init]))
|
|
42
|
+
{
|
|
43
|
+
fts = inFTS;
|
|
44
|
+
databaseConnection = inDatabaseConnection;
|
|
45
|
+
}
|
|
46
|
+
return self;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
- (void)dealloc
|
|
50
|
+
{
|
|
51
|
+
sqlite_finalize_null(&insertRowidStatement);
|
|
52
|
+
sqlite_finalize_null(&setRowidStatement);
|
|
53
|
+
sqlite_finalize_null(&removeRowidStatement);
|
|
54
|
+
sqlite_finalize_null(&removeAllStatement);
|
|
55
|
+
sqlite_finalize_null(&queryStatement);
|
|
56
|
+
sqlite_finalize_null(&querySnippetStatement);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Required override method from YapDatabaseExtensionConnection
|
|
61
|
+
**/
|
|
62
|
+
- (void)_flushMemoryWithLevel:(int)level
|
|
63
|
+
{
|
|
64
|
+
if (level >= YapDatabaseConnectionFlushMemoryLevelModerate)
|
|
65
|
+
{
|
|
66
|
+
sqlite_finalize_null(&insertRowidStatement);
|
|
67
|
+
sqlite_finalize_null(&setRowidStatement);
|
|
68
|
+
sqlite_finalize_null(&removeRowidStatement);
|
|
69
|
+
sqlite_finalize_null(&removeAllStatement);
|
|
70
|
+
sqlite_finalize_null(&queryStatement);
|
|
71
|
+
sqlite_finalize_null(&querySnippetStatement);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
76
|
+
#pragma mark Accessors
|
|
77
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Required override method from YapDatabaseExtensionConnection.
|
|
81
|
+
**/
|
|
82
|
+
- (YapDatabaseExtension *)extension
|
|
83
|
+
{
|
|
84
|
+
return fts;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
88
|
+
#pragma mark Transactions
|
|
89
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Required override method from YapDatabaseExtensionConnection.
|
|
93
|
+
**/
|
|
94
|
+
- (id)newReadTransaction:(YapDatabaseReadTransaction *)databaseTransaction
|
|
95
|
+
{
|
|
96
|
+
YapDatabaseFullTextSearchTransaction *transaction =
|
|
97
|
+
[[YapDatabaseFullTextSearchTransaction alloc] initWithFTSConnection:self
|
|
98
|
+
databaseTransaction:databaseTransaction];
|
|
99
|
+
|
|
100
|
+
return transaction;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Required override method from YapDatabaseExtensionConnection.
|
|
105
|
+
**/
|
|
106
|
+
- (id)newReadWriteTransaction:(YapDatabaseReadWriteTransaction *)databaseTransaction
|
|
107
|
+
{
|
|
108
|
+
YapDatabaseFullTextSearchTransaction *transaction =
|
|
109
|
+
[[YapDatabaseFullTextSearchTransaction alloc] initWithFTSConnection:self
|
|
110
|
+
databaseTransaction:databaseTransaction];
|
|
111
|
+
|
|
112
|
+
if (blockDict == nil)
|
|
113
|
+
blockDict = [NSMutableDictionary dictionaryWithSharedKeySet:fts->columnNamesSharedKeySet];
|
|
114
|
+
|
|
115
|
+
return transaction;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
119
|
+
#pragma mark Changeset
|
|
120
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Required override method from YapDatabaseExtensionConnection
|
|
124
|
+
**/
|
|
125
|
+
- (void)getInternalChangeset:(NSMutableDictionary **)internalChangesetPtr
|
|
126
|
+
externalChangeset:(NSMutableDictionary **)externalChangesetPtr
|
|
127
|
+
hasDiskChanges:(BOOL *)hasDiskChangesPtr
|
|
128
|
+
{
|
|
129
|
+
// Nothing to do for this particular extension.
|
|
130
|
+
//
|
|
131
|
+
// YapDatabaseExtension rows a "not implemented" exception
|
|
132
|
+
// to ensure extensions have implementations of all required methods.
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Required override method from YapDatabaseExtensionConnection
|
|
137
|
+
**/
|
|
138
|
+
- (void)processChangeset:(NSDictionary *)changeset
|
|
139
|
+
{
|
|
140
|
+
// Nothing to do for this particular extension.
|
|
141
|
+
//
|
|
142
|
+
// YapDatabaseExtension rows a "not implemented" exception
|
|
143
|
+
// to ensure extensions have implementations of all required methods.
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
147
|
+
#pragma mark Statements
|
|
148
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
149
|
+
|
|
150
|
+
- (sqlite3_stmt *)insertRowidStatement
|
|
151
|
+
{
|
|
152
|
+
if (insertRowidStatement == NULL)
|
|
153
|
+
{
|
|
154
|
+
NSMutableString *string = [NSMutableString stringWithCapacity:100];
|
|
155
|
+
[string appendFormat:@"INSERT INTO \"%@\" (\"rowid\"", [fts tableName]];
|
|
156
|
+
|
|
157
|
+
for (NSString *columnName in fts->columnNames)
|
|
158
|
+
{
|
|
159
|
+
[string appendFormat:@", \"%@\"", columnName];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
[string appendString:@") VALUES (?"];
|
|
163
|
+
|
|
164
|
+
NSUInteger count = [fts->columnNames count];
|
|
165
|
+
NSUInteger i;
|
|
166
|
+
for (i = 0; i < count; i++)
|
|
167
|
+
{
|
|
168
|
+
[string appendString:@", ?"];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
[string appendString:@");"];
|
|
172
|
+
|
|
173
|
+
sqlite3 *db = databaseConnection->db;
|
|
174
|
+
|
|
175
|
+
int status = sqlite3_prepare_v2(db, [string UTF8String], -1, &insertRowidStatement, NULL);
|
|
176
|
+
if (status != SQLITE_OK)
|
|
177
|
+
{
|
|
178
|
+
YDBLogError(@"%@: Error creating prepared statement: %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return insertRowidStatement;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
- (sqlite3_stmt *)setRowidStatement
|
|
186
|
+
{
|
|
187
|
+
if (setRowidStatement == NULL)
|
|
188
|
+
{
|
|
189
|
+
NSMutableString *string = [NSMutableString stringWithCapacity:100];
|
|
190
|
+
[string appendFormat:@"INSERT OR REPLACE INTO \"%@\" (\"rowid\"", [fts tableName]];
|
|
191
|
+
|
|
192
|
+
for (NSString *columnName in fts->columnNames)
|
|
193
|
+
{
|
|
194
|
+
[string appendFormat:@", \"%@\"", columnName];
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
[string appendString:@") VALUES (?"];
|
|
198
|
+
|
|
199
|
+
NSUInteger count = [fts->columnNames count];
|
|
200
|
+
NSUInteger i;
|
|
201
|
+
for (i = 0; i < count; i++)
|
|
202
|
+
{
|
|
203
|
+
[string appendString:@", ?"];
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
[string appendString:@");"];
|
|
207
|
+
|
|
208
|
+
sqlite3 *db = databaseConnection->db;
|
|
209
|
+
|
|
210
|
+
int status = sqlite3_prepare_v2(db, [string UTF8String], -1, &setRowidStatement, NULL);
|
|
211
|
+
if (status != SQLITE_OK)
|
|
212
|
+
{
|
|
213
|
+
YDBLogError(@"%@: Error creating prepared statement: %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return setRowidStatement;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
- (sqlite3_stmt *)removeRowidStatement
|
|
221
|
+
{
|
|
222
|
+
if (removeRowidStatement == NULL)
|
|
223
|
+
{
|
|
224
|
+
NSString *string = [NSString stringWithFormat:@"DELETE FROM \"%@\" WHERE \"rowid\" = ?;", [fts tableName]];
|
|
225
|
+
|
|
226
|
+
sqlite3 *db = databaseConnection->db;
|
|
227
|
+
|
|
228
|
+
int status = sqlite3_prepare_v2(db, [string UTF8String], -1, &removeRowidStatement, NULL);
|
|
229
|
+
if (status != SQLITE_OK)
|
|
230
|
+
{
|
|
231
|
+
YDBLogError(@"%@: Error creating prepared statement: %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return removeRowidStatement;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
- (sqlite3_stmt *)removeAllStatement
|
|
239
|
+
{
|
|
240
|
+
if (removeAllStatement == NULL)
|
|
241
|
+
{
|
|
242
|
+
NSString *string = [NSString stringWithFormat:@"DELETE FROM \"%@\";", [fts tableName]];
|
|
243
|
+
|
|
244
|
+
sqlite3 *db = databaseConnection->db;
|
|
245
|
+
|
|
246
|
+
int status = sqlite3_prepare_v2(db, [string UTF8String], -1, &removeAllStatement, NULL);
|
|
247
|
+
if (status != SQLITE_OK)
|
|
248
|
+
{
|
|
249
|
+
YDBLogError(@"%@: Error creating prepared statement: %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return removeAllStatement;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
- (sqlite3_stmt *)queryStatement
|
|
257
|
+
{
|
|
258
|
+
if (queryStatement == NULL)
|
|
259
|
+
{
|
|
260
|
+
NSString *tableName = [fts tableName];
|
|
261
|
+
|
|
262
|
+
NSString *string = [NSString stringWithFormat:
|
|
263
|
+
@"SELECT \"rowid\" FROM \"%1$@\" WHERE \"%1$@\" MATCH ?;", tableName];
|
|
264
|
+
|
|
265
|
+
sqlite3 *db = databaseConnection->db;
|
|
266
|
+
|
|
267
|
+
int status = sqlite3_prepare_v2(db, [string UTF8String], -1, &queryStatement, NULL);
|
|
268
|
+
if (status != SQLITE_OK)
|
|
269
|
+
{
|
|
270
|
+
YDBLogError(@"%@: Error creating prepared statement: %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return queryStatement;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
- (sqlite3_stmt *)querySnippetStatement
|
|
278
|
+
{
|
|
279
|
+
if (querySnippetStatement == NULL)
|
|
280
|
+
{
|
|
281
|
+
NSString *tableName = [fts tableName];
|
|
282
|
+
|
|
283
|
+
NSString *string = [NSString stringWithFormat:
|
|
284
|
+
@"SELECT \"rowid\", snippet(\"%1$@\", ?, ?, ?, ?, ?) FROM \"%1$@\" WHERE \"%1$@\" MATCH ?;", tableName];
|
|
285
|
+
|
|
286
|
+
sqlite3 *db = databaseConnection->db;
|
|
287
|
+
|
|
288
|
+
int status = sqlite3_prepare_v2(db, [string UTF8String], -1, &querySnippetStatement, NULL);
|
|
289
|
+
if (status != SQLITE_OK)
|
|
290
|
+
{
|
|
291
|
+
YDBLogError(@"%@: Error creating prepared statement: %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return querySnippetStatement;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@end
|