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.
Files changed (348) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +5 -0
  5. data/Gemfile.lock +63 -0
  6. data/README.md +16 -0
  7. data/Rakefile +20 -0
  8. data/app/app_delegate.rb +5 -0
  9. data/lib/yapper.rb +30 -0
  10. data/lib/yapper/attachment.rb +48 -0
  11. data/lib/yapper/bson.rb +20 -0
  12. data/lib/yapper/config.rb +18 -0
  13. data/lib/yapper/db.rb +151 -0
  14. data/lib/yapper/document.rb +54 -0
  15. data/lib/yapper/document/attachment.rb +26 -0
  16. data/lib/yapper/document/callbacks.rb +86 -0
  17. data/lib/yapper/document/persistance.rb +171 -0
  18. data/lib/yapper/document/relation.rb +84 -0
  19. data/lib/yapper/document/selection.rb +100 -0
  20. data/lib/yapper/extensions.rb +80 -0
  21. data/lib/yapper/log.rb +5 -0
  22. data/lib/yapper/sync.rb +134 -0
  23. data/lib/yapper/sync/data.rb +12 -0
  24. data/lib/yapper/sync/event.rb +194 -0
  25. data/lib/yapper/sync/queue.rb +164 -0
  26. data/lib/yapper/timestamps.rb +16 -0
  27. data/lib/yapper/version.rb +3 -0
  28. data/lib/yapper/yapper.rb +2 -0
  29. data/spec/helpers/time_helper.rb +3 -0
  30. data/spec/integration/all_spec.rb +40 -0
  31. data/spec/integration/callback_spec.rb +87 -0
  32. data/spec/integration/db_spec.rb +40 -0
  33. data/spec/integration/find_spec.rb +51 -0
  34. data/spec/integration/persistance_spec.rb +118 -0
  35. data/spec/integration/relation_spec.rb +174 -0
  36. data/spec/integration/sync_spec.rb +42 -0
  37. data/spec/integration/timestamps_spec.rb +34 -0
  38. data/spec/integration/types_spec.rb +23 -0
  39. data/spec/integration/when_spec.rb +29 -0
  40. data/spec/integration/where_spec.rb +132 -0
  41. data/vendor/Podfile.lock +24 -0
  42. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +641 -0
  43. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +1396 -0
  44. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +133 -0
  45. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +327 -0
  46. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +113 -0
  47. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +321 -0
  48. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +71 -0
  49. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +150 -0
  50. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  51. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +157 -0
  52. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +43 -0
  53. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  54. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +143 -0
  55. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +370 -0
  56. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +848 -0
  57. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +89 -0
  58. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +167 -0
  59. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +78 -0
  60. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +191 -0
  61. data/vendor/Pods/AFNetworking/LICENSE +19 -0
  62. data/vendor/Pods/AFNetworking/README.md +208 -0
  63. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +641 -0
  64. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +133 -0
  65. data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +113 -0
  66. data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +71 -0
  67. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  68. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +43 -0
  69. data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  70. data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +370 -0
  71. data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +89 -0
  72. data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +78 -0
  73. data/vendor/Pods/BuildHeaders/CocoaLumberjack/ContextFilterLogFormatter.h +65 -0
  74. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +41 -0
  75. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +102 -0
  76. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +334 -0
  77. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +601 -0
  78. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +167 -0
  79. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DispatchQueueLogFormatter.h +116 -0
  80. data/vendor/Pods/BuildHeaders/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
  81. data/vendor/Pods/BuildHeaders/Reachability/Reachability.h +109 -0
  82. data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +90 -0
  83. data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +20 -0
  84. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +547 -0
  85. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +447 -0
  86. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnectionState.h +29 -0
  87. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +37 -0
  88. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtension.h +15 -0
  89. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionConnection.h +11 -0
  90. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +440 -0
  91. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionTransaction.h +11 -0
  92. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +108 -0
  93. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewConnection.h +12 -0
  94. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +19 -0
  95. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +39 -0
  96. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearch.h +89 -0
  97. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchConnection.h +32 -0
  98. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +69 -0
  99. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
  100. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchTransaction.h +68 -0
  101. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseLogging.h +158 -0
  102. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseManager.h +17 -0
  103. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +424 -0
  104. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseQuery.h +42 -0
  105. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +100 -0
  106. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexConnection.h +33 -0
  107. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +73 -0
  108. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetup.h +33 -0
  109. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +58 -0
  110. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseStatement.h +13 -0
  111. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseString.h +121 -0
  112. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +541 -0
  113. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +186 -0
  114. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +272 -0
  115. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChangePrivate.h +94 -0
  116. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +115 -0
  117. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +825 -0
  118. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappingsPrivate.h +72 -0
  119. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +56 -0
  120. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPage.h +36 -0
  121. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPageMetadata.h +27 -0
  122. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +153 -0
  123. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptions.h +330 -0
  124. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +17 -0
  125. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +447 -0
  126. data/vendor/Pods/BuildHeaders/YapDatabase/YapMemoryTable.h +74 -0
  127. data/vendor/Pods/BuildHeaders/YapDatabase/YapNull.h +17 -0
  128. data/vendor/Pods/BuildHeaders/YapDatabase/YapSet.h +41 -0
  129. data/vendor/Pods/BuildHeaders/YapDatabase/YapTouch.h +15 -0
  130. data/vendor/Pods/CocoaLumberjack/LICENSE.txt +18 -0
  131. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +41 -0
  132. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +99 -0
  133. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +102 -0
  134. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +727 -0
  135. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +334 -0
  136. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +1353 -0
  137. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +601 -0
  138. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +1083 -0
  139. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +167 -0
  140. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +1479 -0
  141. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.h +65 -0
  142. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.m +191 -0
  143. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.h +116 -0
  144. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.m +251 -0
  145. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +7 -0
  146. data/vendor/Pods/CocoaLumberjack/README.markdown +37 -0
  147. data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +641 -0
  148. data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +133 -0
  149. data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +113 -0
  150. data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +71 -0
  151. data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  152. data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +43 -0
  153. data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  154. data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +370 -0
  155. data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +89 -0
  156. data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +78 -0
  157. data/vendor/Pods/Headers/CocoaLumberjack/ContextFilterLogFormatter.h +65 -0
  158. data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +41 -0
  159. data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +102 -0
  160. data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +334 -0
  161. data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +601 -0
  162. data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +167 -0
  163. data/vendor/Pods/Headers/CocoaLumberjack/DispatchQueueLogFormatter.h +116 -0
  164. data/vendor/Pods/Headers/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
  165. data/vendor/Pods/Headers/Reachability/Reachability.h +109 -0
  166. data/vendor/Pods/Headers/YapDatabase/YapCache.h +90 -0
  167. data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +20 -0
  168. data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +547 -0
  169. data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +447 -0
  170. data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnectionState.h +29 -0
  171. data/vendor/Pods/Headers/YapDatabase/YapDatabaseDefaults.h +37 -0
  172. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtension.h +15 -0
  173. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionConnection.h +11 -0
  174. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionPrivate.h +440 -0
  175. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionTransaction.h +11 -0
  176. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +108 -0
  177. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewConnection.h +12 -0
  178. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewPrivate.h +19 -0
  179. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +39 -0
  180. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearch.h +89 -0
  181. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchConnection.h +32 -0
  182. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchPrivate.h +69 -0
  183. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
  184. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchTransaction.h +68 -0
  185. data/vendor/Pods/Headers/YapDatabase/YapDatabaseLogging.h +158 -0
  186. data/vendor/Pods/Headers/YapDatabase/YapDatabaseManager.h +17 -0
  187. data/vendor/Pods/Headers/YapDatabase/YapDatabasePrivate.h +424 -0
  188. data/vendor/Pods/Headers/YapDatabase/YapDatabaseQuery.h +42 -0
  189. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +100 -0
  190. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexConnection.h +33 -0
  191. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +73 -0
  192. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexSetup.h +33 -0
  193. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +58 -0
  194. data/vendor/Pods/Headers/YapDatabase/YapDatabaseStatement.h +13 -0
  195. data/vendor/Pods/Headers/YapDatabase/YapDatabaseString.h +121 -0
  196. data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +541 -0
  197. data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +186 -0
  198. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +272 -0
  199. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChangePrivate.h +94 -0
  200. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +115 -0
  201. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +825 -0
  202. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappingsPrivate.h +72 -0
  203. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +56 -0
  204. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPage.h +36 -0
  205. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPageMetadata.h +27 -0
  206. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPrivate.h +153 -0
  207. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptions.h +330 -0
  208. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +17 -0
  209. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +447 -0
  210. data/vendor/Pods/Headers/YapDatabase/YapMemoryTable.h +74 -0
  211. data/vendor/Pods/Headers/YapDatabase/YapNull.h +17 -0
  212. data/vendor/Pods/Headers/YapDatabase/YapSet.h +41 -0
  213. data/vendor/Pods/Headers/YapDatabase/YapTouch.h +15 -0
  214. data/vendor/Pods/Headers/____Pods-AFNetworking-prefix.h +17 -0
  215. data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +5 -0
  216. data/vendor/Pods/Headers/____Pods-NSData+MD5Digest-prefix.h +5 -0
  217. data/vendor/Pods/Headers/____Pods-Reachability-prefix.h +5 -0
  218. data/vendor/Pods/Headers/____Pods-YapDatabase-prefix.h +5 -0
  219. data/vendor/Pods/Headers/____Pods-environment.h +38 -0
  220. data/vendor/Pods/Manifest.lock +24 -0
  221. data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.h +18 -0
  222. data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.m +39 -0
  223. data/vendor/Pods/NSData+MD5Digest/README.md +11 -0
  224. data/vendor/Pods/Pods-AFNetworking-Private.xcconfig +5 -0
  225. data/vendor/Pods/Pods-AFNetworking-dummy.m +5 -0
  226. data/vendor/Pods/Pods-AFNetworking-prefix.pch +17 -0
  227. data/vendor/Pods/Pods-AFNetworking.xcconfig +1 -0
  228. data/vendor/Pods/Pods-Acknowledgements.markdown +96 -0
  229. data/vendor/Pods/Pods-Acknowledgements.plist +142 -0
  230. data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +5 -0
  231. data/vendor/Pods/Pods-CocoaLumberjack-dummy.m +5 -0
  232. data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +5 -0
  233. data/vendor/Pods/Pods-CocoaLumberjack.xcconfig +0 -0
  234. data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +5 -0
  235. data/vendor/Pods/Pods-NSData+MD5Digest-dummy.m +5 -0
  236. data/vendor/Pods/Pods-NSData+MD5Digest-prefix.pch +5 -0
  237. data/vendor/Pods/Pods-NSData+MD5Digest.xcconfig +0 -0
  238. data/vendor/Pods/Pods-Reachability-Private.xcconfig +5 -0
  239. data/vendor/Pods/Pods-Reachability-dummy.m +5 -0
  240. data/vendor/Pods/Pods-Reachability-prefix.pch +5 -0
  241. data/vendor/Pods/Pods-Reachability.xcconfig +1 -0
  242. data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +5 -0
  243. data/vendor/Pods/Pods-YapDatabase-dummy.m +5 -0
  244. data/vendor/Pods/Pods-YapDatabase-prefix.pch +5 -0
  245. data/vendor/Pods/Pods-YapDatabase.xcconfig +1 -0
  246. data/vendor/Pods/Pods-dummy.m +5 -0
  247. data/vendor/Pods/Pods-environment.h +38 -0
  248. data/vendor/Pods/Pods-resources.sh +68 -0
  249. data/vendor/Pods/Pods.bridgesupport +5096 -0
  250. data/vendor/Pods/Pods.xcconfig +5 -0
  251. data/vendor/Pods/Pods.xcodeproj/project.pbxproj +5536 -0
  252. data/vendor/Pods/Reachability/LICENCE.txt +24 -0
  253. data/vendor/Pods/Reachability/README.md +65 -0
  254. data/vendor/Pods/Reachability/Reachability.h +109 -0
  255. data/vendor/Pods/Reachability/Reachability.m +527 -0
  256. data/vendor/Pods/YapDatabase/LICENSE.txt +18 -0
  257. data/vendor/Pods/YapDatabase/README.md +30 -0
  258. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +19 -0
  259. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +108 -0
  260. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +175 -0
  261. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.h +12 -0
  262. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.m +41 -0
  263. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +39 -0
  264. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +966 -0
  265. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +69 -0
  266. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h +89 -0
  267. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m +146 -0
  268. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.h +32 -0
  269. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +298 -0
  270. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.h +79 -0
  271. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.m +95 -0
  272. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.h +68 -0
  273. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +1352 -0
  274. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +440 -0
  275. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.h +15 -0
  276. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +58 -0
  277. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.h +11 -0
  278. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +46 -0
  279. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.h +11 -0
  280. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +180 -0
  281. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +73 -0
  282. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +100 -0
  283. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +149 -0
  284. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.h +33 -0
  285. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +330 -0
  286. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.h +33 -0
  287. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +184 -0
  288. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.h +58 -0
  289. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +1166 -0
  290. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewChangePrivate.h +94 -0
  291. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewMappingsPrivate.h +72 -0
  292. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.h +36 -0
  293. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.mm +296 -0
  294. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.h +27 -0
  295. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.m +28 -0
  296. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +153 -0
  297. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewRangeOptionsPrivate.h +17 -0
  298. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +272 -0
  299. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +2494 -0
  300. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +825 -0
  301. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +1567 -0
  302. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.h +330 -0
  303. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.m +141 -0
  304. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +186 -0
  305. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +191 -0
  306. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +115 -0
  307. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +897 -0
  308. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +56 -0
  309. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.m +27 -0
  310. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +447 -0
  311. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +4505 -0
  312. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +90 -0
  313. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +453 -0
  314. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.h +29 -0
  315. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.m +48 -0
  316. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +37 -0
  317. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +83 -0
  318. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.h +158 -0
  319. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.m +73 -0
  320. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.h +17 -0
  321. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.m +56 -0
  322. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +424 -0
  323. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.h +13 -0
  324. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.m +26 -0
  325. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseString.h +121 -0
  326. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.h +74 -0
  327. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.m +603 -0
  328. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.h +17 -0
  329. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +31 -0
  330. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.h +15 -0
  331. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.m +31 -0
  332. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +20 -0
  333. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +194 -0
  334. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.h +42 -0
  335. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.m +96 -0
  336. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.h +41 -0
  337. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.m +82 -0
  338. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +547 -0
  339. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +2022 -0
  340. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +447 -0
  341. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +3874 -0
  342. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +541 -0
  343. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +5282 -0
  344. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +16 -0
  345. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +13 -0
  346. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +20 -0
  347. data/yapper.gemspec +24 -0
  348. 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
@@ -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
@@ -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