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,186 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ #import "YapDatabaseExtension.h"
4
+ #import "YapDatabaseViewOptions.h"
5
+ #import "YapDatabaseViewConnection.h"
6
+ #import "YapDatabaseViewTransaction.h"
7
+
8
+ /**
9
+ * Welcome to YapDatabase!
10
+ *
11
+ * https://github.com/yaptv/YapDatabase
12
+ *
13
+ * The project wiki has a wealth of documentation if you have any questions.
14
+ * https://github.com/yaptv/YapDatabase/wiki
15
+ *
16
+ * YapDatabaseView is an extension designed to work with YapDatabase.
17
+ * It gives you a persistent sorted "view" of a configurable subset of your data.
18
+ *
19
+ * For the full documentation on Views, please see the related wiki article:
20
+ * https://github.com/yaptv/YapDatabase/wiki/Views
21
+ *
22
+ * Just in case you don't have Internet access,
23
+ * see the quick overview in YapDatabaseView.h.
24
+ **/
25
+
26
+ /**
27
+ * The grouping block handles both filtering and grouping.
28
+ *
29
+ * When you add or update rows in the databse the grouping block is invoked.
30
+ * Your grouping block can inspect the row and determine if it should be a part of the view.
31
+ * If not, your grouping block simply returns 'nil' and the object is excluded from the view (removing it if needed).
32
+ * Otherwise your grouping block returns a group, which can be any string you want.
33
+ * Once the view knows what group the row belongs to,
34
+ * it will then determine the position of the row within the group (using the sorting block).
35
+ *
36
+ * You should choose a block type that takes the minimum number of required parameters.
37
+ * The view can make various optimizations based on required parameters of the block.
38
+ **/
39
+ typedef id YapDatabaseViewGroupingBlock; // One of the YapDatabaseViewGroupingX types below.
40
+
41
+ typedef NSString* (^YapDatabaseViewGroupingWithKeyBlock)(NSString *collection, NSString *key);
42
+ typedef NSString* (^YapDatabaseViewGroupingWithObjectBlock)(NSString *collection, NSString *key, id object);
43
+ typedef NSString* (^YapDatabaseViewGroupingWithMetadataBlock)(NSString *collection, NSString *key, id metadata);
44
+ typedef NSString* (^YapDatabaseViewGroupingWithRowBlock)(NSString *collection, NSString *key, id object, id metadata);
45
+
46
+ /**
47
+ * The sorting block handles sorting of objects within their group.
48
+ *
49
+ * After the view invokes the grouping block to determine what group a database row belongs to (if any),
50
+ * the view then needs to determine what index within that group the row should be.
51
+ * In order to do this, it needs to compare the new/updated row with existing rows in the same view group.
52
+ * This is what the sorting block is used for.
53
+ * So the sorting block will be invoked automatically during this process until the view has come to a conclusion.
54
+ *
55
+ * You should choose a block type that takes the minimum number of required parameters.
56
+ * The view can make various optimizations based on required parameters of the block.
57
+ *
58
+ * For example, if sorting is based on the object, and the metadata of a row is updated,
59
+ * then the view can deduce that the index hasn't changed (if the group hans't), and can skip this step.
60
+ *
61
+ * Performance Note:
62
+ *
63
+ * The view uses various optimizations (based on common patterns)
64
+ * to reduce the number of times it needs to invoke the sorting block.
65
+ *
66
+ * - Pattern : row is updated, but its index in the view doesn't change.
67
+ * Optimization : if an updated row doesn't change groups, the view will first compare it with
68
+ * objects to the left and right.
69
+ *
70
+ * - Pattern : rows are added to the beginning or end or a view
71
+ * Optimization : if the last change put an object at the beginning of the view, then it will test this quickly.
72
+ * if the last change put an object at the end of the view, then it will test this quickly.
73
+ *
74
+ * These optimizations offer huge performance benefits to many common cases.
75
+ * For example, adding objects to a view that are sorted by timestamp of when they arrived.
76
+ *
77
+ * The optimizations are not always performed.
78
+ * That is, if the row is added to a group it didn't previously belong,
79
+ * or if the last change didn't place an item at the beginning or end of the view.
80
+ *
81
+ * If optimizations fail, or are skipped, then the view uses a binary search algorithm.
82
+ *
83
+ * Although this may be considered "internal information",
84
+ * I feel it is important to explain for the following reason:
85
+ *
86
+ * Another common pattern is to fetch a number of objects in a batch, and then insert them into the database.
87
+ * Now imagine a situation in which the view is sorting posts based on timestamp,
88
+ * and you just fetched the most recent 10 posts. You can enumerate these 10 posts in forwards or backwards
89
+ * while adding them to the database. One direction will hit the optimization every time. The other will cause
90
+ * the view to perform a binary search every time. These little one-liner optimzations are easy.
91
+ **/
92
+ typedef id YapDatabaseViewSortingBlock; // One of the YapDatabaseViewSortingX types below.
93
+
94
+ typedef NSComparisonResult (^YapDatabaseViewSortingWithKeyBlock) \
95
+ (NSString *group, NSString *collection1, NSString *key1, \
96
+ NSString *collection2, NSString *key2);
97
+ typedef NSComparisonResult (^YapDatabaseViewSortingWithObjectBlock) \
98
+ (NSString *group, NSString *collection1, NSString *key1, id object1, \
99
+ NSString *collection2, NSString *key2, id object2);
100
+ typedef NSComparisonResult (^YapDatabaseViewSortingWithMetadataBlock) \
101
+ (NSString *group, NSString *collection1, NSString *key1, id metadata, \
102
+ NSString *collection2, NSString *key2, id metadata2);
103
+ typedef NSComparisonResult (^YapDatabaseViewSortingWithRowBlock) \
104
+ (NSString *group, NSString *collection1, NSString *key1, id object1, id metadata1, \
105
+ NSString *collection2, NSString *key2, id object2, id metadata2);
106
+
107
+ #ifndef YapDatabaseViewBlockTypeDefined
108
+ #define YapDatabaseViewBlockTypeDefined 1
109
+
110
+ /**
111
+ * I wish there was a way to inspect a given block and see what kind of parameters it takes.
112
+ * Sadly this does not appear to be possible (at least not in any kind of standard legal way).
113
+ *
114
+ * Thus, unfortunately (for now), you will have to specify what kind of block you're passing.
115
+ **/
116
+ typedef enum {
117
+ YapDatabaseViewBlockTypeWithKey = 1,
118
+ YapDatabaseViewBlockTypeWithObject = 2,
119
+ YapDatabaseViewBlockTypeWithMetadata = 3,
120
+ YapDatabaseViewBlockTypeWithRow = 4
121
+ } YapDatabaseViewBlockType;
122
+
123
+ #endif
124
+
125
+ @interface YapDatabaseView : YapDatabaseExtension
126
+
127
+ /* Inherited from YapDatabaseExtension
128
+
129
+ @property (nonatomic, strong, readonly) NSString *registeredName;
130
+
131
+ */
132
+
133
+ /**
134
+ * See the wiki for an example of how to initialize a view:
135
+ * https://github.com/yaptv/YapDatabase/wiki/Views#wiki-initializing_a_view
136
+ *
137
+ * @param version
138
+ *
139
+ * If, after creating a view, you need to change either the groupingBlock or sortingBlock,
140
+ * then simply use the version parameter. If you pass a version that is different from the last
141
+ * initialization of the view, then the view will automatically flush its tables, and re-populate itself.
142
+ *
143
+ * @param options
144
+ *
145
+ * The options allow you to specify things like creating an in-memory-only view (non persistent).
146
+ **/
147
+
148
+ - (id)initWithGroupingBlock:(YapDatabaseViewGroupingBlock)groupingBlock
149
+ groupingBlockType:(YapDatabaseViewBlockType)groupingBlockType
150
+ sortingBlock:(YapDatabaseViewSortingBlock)sortingBlock
151
+ sortingBlockType:(YapDatabaseViewBlockType)sortingBlockType;
152
+
153
+ - (id)initWithGroupingBlock:(YapDatabaseViewGroupingBlock)groupingBlock
154
+ groupingBlockType:(YapDatabaseViewBlockType)groupingBlockType
155
+ sortingBlock:(YapDatabaseViewSortingBlock)sortingBlock
156
+ sortingBlockType:(YapDatabaseViewBlockType)sortingBlockType
157
+ version:(int)version;
158
+
159
+ - (id)initWithGroupingBlock:(YapDatabaseViewGroupingBlock)groupingBlock
160
+ groupingBlockType:(YapDatabaseViewBlockType)groupingBlockType
161
+ sortingBlock:(YapDatabaseViewSortingBlock)sortingBlock
162
+ sortingBlockType:(YapDatabaseViewBlockType)sortingBlockType
163
+ version:(int)version
164
+ options:(YapDatabaseViewOptions *)options;
165
+
166
+ @property (nonatomic, strong, readonly) YapDatabaseViewGroupingBlock groupingBlock;
167
+ @property (nonatomic, strong, readonly) YapDatabaseViewSortingBlock sortingBlock;
168
+
169
+ @property (nonatomic, assign, readonly) YapDatabaseViewBlockType groupingBlockType;
170
+ @property (nonatomic, assign, readonly) YapDatabaseViewBlockType sortingBlockType;
171
+
172
+ /**
173
+ * The version assists you in updating your blocks.
174
+ *
175
+ * If you need to change the groupingBlock or sortingBlock,
176
+ * then simply pass an incremented version during the init method,
177
+ * and the view will automatically update itself.
178
+ **/
179
+ @property (nonatomic, assign, readonly) int version;
180
+
181
+ /**
182
+ * The options allow you to specify things like creating an in-memory-only view (non persistent).
183
+ **/
184
+ @property (nonatomic, copy, readonly) YapDatabaseViewOptions *options;
185
+
186
+ @end
@@ -0,0 +1,191 @@
1
+ #import "YapDatabaseView.h"
2
+ #import "YapDatabaseViewPrivate.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 YapDatabaseView
24
+
25
+ + (void)dropTablesForRegisteredName:(NSString *)registeredName
26
+ withTransaction:(YapDatabaseReadWriteTransaction *)transaction
27
+ {
28
+ NSString *mapTableName = [self mapTableNameForRegisteredName:registeredName];
29
+ NSString *pageTableName = [self pageTableNameForRegisteredName:registeredName];
30
+ NSString *pageMetadataTableName = [self pageMetadataTableNameForRegisteredName:registeredName];
31
+
32
+ // Handle persistent view
33
+
34
+ sqlite3 *db = transaction->connection->db;
35
+
36
+ NSString *dropKeyTable = [NSString stringWithFormat:@"DROP TABLE IF EXISTS \"%@\";", mapTableName];
37
+ NSString *dropPageTable = [NSString stringWithFormat:@"DROP TABLE IF EXISTS \"%@\";", pageTableName];
38
+
39
+ int status;
40
+
41
+ status = sqlite3_exec(db, [dropKeyTable UTF8String], NULL, NULL, NULL);
42
+ if (status != SQLITE_OK)
43
+ {
44
+ YDBLogError(@"%@ - Failed dropping map table (%@): %d %s",
45
+ THIS_METHOD, mapTableName, status, sqlite3_errmsg(db));
46
+ }
47
+
48
+ status = sqlite3_exec(db, [dropPageTable UTF8String], NULL, NULL, NULL);
49
+ if (status != SQLITE_OK)
50
+ {
51
+ YDBLogError(@"%@ - Failed dropping page table (%@): %d %s",
52
+ THIS_METHOD, pageTableName, status, sqlite3_errmsg(db));
53
+ }
54
+
55
+ // Handle memory view
56
+
57
+ [transaction->connection unregisterTableWithName:mapTableName];
58
+ [transaction->connection unregisterTableWithName:pageTableName];
59
+ [transaction->connection unregisterTableWithName:pageMetadataTableName];
60
+ }
61
+
62
+ + (NSArray *)previousClassNames
63
+ {
64
+ return @[ @"YapCollectionsDatabaseView" ];
65
+ }
66
+
67
+ + (NSString *)mapTableNameForRegisteredName:(NSString *)registeredName
68
+ {
69
+ return [NSString stringWithFormat:@"view_%@_map", registeredName];
70
+ }
71
+
72
+ + (NSString *)pageTableNameForRegisteredName:(NSString *)registeredName
73
+ {
74
+ return [NSString stringWithFormat:@"view_%@_page", registeredName];
75
+ }
76
+
77
+ + (NSString *)pageMetadataTableNameForRegisteredName:(NSString *)registeredName
78
+ {
79
+ return [NSString stringWithFormat:@"view_%@_pageMetadata", registeredName];
80
+ }
81
+
82
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
83
+ #pragma mark Instance
84
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
85
+
86
+ @synthesize groupingBlock = groupingBlock;
87
+ @synthesize sortingBlock = sortingBlock;
88
+
89
+ @synthesize groupingBlockType = groupingBlockType;
90
+ @synthesize sortingBlockType = sortingBlockType;
91
+
92
+ @synthesize version = version;
93
+ @dynamic options;
94
+
95
+ - (id)initWithGroupingBlock:(YapDatabaseViewGroupingBlock)inGroupingBlock
96
+ groupingBlockType:(YapDatabaseViewBlockType)inGroupingBlockType
97
+ sortingBlock:(YapDatabaseViewSortingBlock)inSortingBlock
98
+ sortingBlockType:(YapDatabaseViewBlockType)inSortingBlockType
99
+ {
100
+ return [self initWithGroupingBlock:inGroupingBlock
101
+ groupingBlockType:inGroupingBlockType
102
+ sortingBlock:inSortingBlock
103
+ sortingBlockType:inSortingBlockType
104
+ version:0
105
+ options:nil];
106
+ }
107
+
108
+ - (id)initWithGroupingBlock:(YapDatabaseViewGroupingBlock)inGroupingBlock
109
+ groupingBlockType:(YapDatabaseViewBlockType)inGroupingBlockType
110
+ sortingBlock:(YapDatabaseViewSortingBlock)inSortingBlock
111
+ sortingBlockType:(YapDatabaseViewBlockType)inSortingBlockType
112
+ version:(int)inVersion
113
+ {
114
+ return [self initWithGroupingBlock:inGroupingBlock
115
+ groupingBlockType:inGroupingBlockType
116
+ sortingBlock:inSortingBlock
117
+ sortingBlockType:inSortingBlockType
118
+ version:inVersion
119
+ options:nil];
120
+ }
121
+
122
+ - (id)initWithGroupingBlock:(YapDatabaseViewGroupingBlock)inGroupingBlock
123
+ groupingBlockType:(YapDatabaseViewBlockType)inGroupingBlockType
124
+ sortingBlock:(YapDatabaseViewSortingBlock)inSortingBlock
125
+ sortingBlockType:(YapDatabaseViewBlockType)inSortingBlockType
126
+ version:(int)inVersion
127
+ options:(YapDatabaseViewOptions *)inOptions;
128
+ {
129
+ if ((self = [super init]))
130
+ {
131
+ NSAssert(inGroupingBlockType == YapDatabaseViewBlockTypeWithKey ||
132
+ inGroupingBlockType == YapDatabaseViewBlockTypeWithObject ||
133
+ inGroupingBlockType == YapDatabaseViewBlockTypeWithMetadata ||
134
+ inGroupingBlockType == YapDatabaseViewBlockTypeWithRow,
135
+ @"Invalid grouping block type");
136
+
137
+ NSAssert(inSortingBlockType == YapDatabaseViewBlockTypeWithKey ||
138
+ inSortingBlockType == YapDatabaseViewBlockTypeWithObject ||
139
+ inSortingBlockType == YapDatabaseViewBlockTypeWithMetadata ||
140
+ inSortingBlockType == YapDatabaseViewBlockTypeWithRow,
141
+ @"Invalid sorting block type");
142
+
143
+ groupingBlock = inGroupingBlock;
144
+ groupingBlockType = inGroupingBlockType;
145
+
146
+ sortingBlock = inSortingBlock;
147
+ sortingBlockType = inSortingBlockType;
148
+
149
+ version = inVersion;
150
+
151
+ options = inOptions ? [inOptions copy] : [[YapDatabaseViewOptions alloc] init];
152
+ }
153
+ return self;
154
+ }
155
+
156
+ - (YapDatabaseViewOptions *)options
157
+ {
158
+ return [options copy];
159
+ }
160
+
161
+ /**
162
+ * Subclasses must implement this method.
163
+ * This method is called during the view registration process to enusre the extension supports
164
+ * the database configuration.
165
+ **/
166
+ - (BOOL)supportsDatabase:(YapDatabase *)database withRegisteredExtensions:(NSDictionary *)registeredExtensions
167
+ {
168
+ return YES;
169
+ }
170
+
171
+ - (YapDatabaseExtensionConnection *)newConnection:(YapDatabaseConnection *)databaseConnection
172
+ {
173
+ return [[YapDatabaseViewConnection alloc] initWithView:self databaseConnection:databaseConnection];
174
+ }
175
+
176
+ - (NSString *)mapTableName
177
+ {
178
+ return [[self class] mapTableNameForRegisteredName:self.registeredName];
179
+ }
180
+
181
+ - (NSString *)pageTableName
182
+ {
183
+ return [[self class] pageTableNameForRegisteredName:self.registeredName];
184
+ }
185
+
186
+ - (NSString *)pageMetadataTableName
187
+ {
188
+ return [[self class] pageMetadataTableNameForRegisteredName:self.registeredName];
189
+ }
190
+
191
+ @end
@@ -0,0 +1,115 @@
1
+ #import <Foundation/Foundation.h>
2
+ #import "YapDatabaseExtensionConnection.h"
3
+ #import "YapDatabaseViewChange.h"
4
+ #import "YapDatabaseViewMappings.h"
5
+
6
+ @class YapDatabaseView;
7
+
8
+ /**
9
+ * Welcome to YapDatabase!
10
+ *
11
+ * https://github.com/yaptv/YapDatabase
12
+ *
13
+ * The project wiki has a wealth of documentation if you have any questions.
14
+ * https://github.com/yaptv/YapDatabase/wiki
15
+ *
16
+ * YapDatabaseView is an extension designed to work with YapDatabase.
17
+ * It gives you a persistent sorted "view" of a configurable subset of your data.
18
+ *
19
+ * For the full documentation on Views, please see the related wiki article:
20
+ * https://github.com/yaptv/YapDatabase/wiki/Views
21
+ *
22
+ *
23
+ * As a extension, YapDatabaseViewConnection is automatically created by YapDatabaseConnnection.
24
+ * You can access this object via:
25
+ *
26
+ * [databaseConnection extension:@"myRegisteredViewName"]
27
+ *
28
+ * @see YapDatabaseView
29
+ * @see YapDatabaseViewTransaction
30
+ **/
31
+ @interface YapDatabaseViewConnection : YapDatabaseExtensionConnection
32
+
33
+ /**
34
+ * Returns the parent view instance.
35
+ **/
36
+ @property (nonatomic, strong, readonly) YapDatabaseView *view;
37
+
38
+ /**
39
+ * Want to easily animate a tableView or collectionView when the view changes?
40
+ * Want an exact list of changes that happend to the view?
41
+ *
42
+ * You're in luck!
43
+ *
44
+ * Here's an overview of how it works:
45
+ *
46
+ * - (void)yapDatabaseModified:(NSNotification *)notification
47
+ * {
48
+ * // Jump to the most recent commit.
49
+ * // End & Re-Begin the long-lived transaction atomically.
50
+ * // Also grab all the notifications for all the commits that I jump.
51
+ * NSArray *notifications = [roDatabaseConnection beginLongLivedReadTransaction];
52
+ *
53
+ * // What changed in my tableView?
54
+ *
55
+ * NSDictionary *mappings = @{ @"bestSellers" : @(0) };
56
+ * NSArray *changes = [[databaseConnection extension:@"sales"] operationsForNotifications:notifications
57
+ * withGroupToSectionMappings:mappings];
58
+ * if ([changes count] == 0)
59
+ * {
60
+ * // There aren't any changes that affect our tableView!
61
+ * return;
62
+ * }
63
+ *
64
+ * // Familiar with NSFetchedResultsController?
65
+ * // Then this should look pretty familiar
66
+ *
67
+ * [self.tableView beginUpdates];
68
+ *
69
+ * for (YapDatabaseViewChange *change in changes)
70
+ * {
71
+ * switch (change.type)
72
+ * {
73
+ * case YapDatabaseViewChangeDelete :
74
+ * {
75
+ * [self.tableView deleteRowsAtIndexPaths:@[ change.indexPath ]
76
+ * withRowAnimation:UITableViewRowAnimationAutomatic];
77
+ * break;
78
+ * }
79
+ * case YapDatabaseViewChangeInsert :
80
+ * {
81
+ * [self.tableView insertRowsAtIndexPaths:@[ change.newIndexPath ]
82
+ * withRowAnimation:UITableViewRowAnimationAutomatic];
83
+ * break;
84
+ * }
85
+ * case YapDatabaseViewChangeMove :
86
+ * {
87
+ * [self.tableView deleteRowsAtIndexPaths:@[ change.indexPath ]
88
+ * withRowAnimation:UITableViewRowAnimationAutomatic];
89
+ * [self.tableView insertRowsAtIndexPaths:@[ change.newIndexPath ]
90
+ * withRowAnimation:UITableViewRowAnimationAutomatic];
91
+ * break;
92
+ * }
93
+ * case YapDatabaseViewChangeUpdate :
94
+ * {
95
+ * [self.tableView reloadRowsAtIndexPaths:@[ change.indexPath ]
96
+ * withRowAnimation:UITableViewRowAnimationAutomatic];
97
+ * break;
98
+ * }
99
+ * }
100
+ * }
101
+ *
102
+ * [self.tableView endUpdates];
103
+ * }
104
+ **/
105
+ - (void)getSectionChanges:(NSArray **)sectionChangesPtr
106
+ rowChanges:(NSArray **)rowChangesPtr
107
+ forNotifications:(NSArray *)notifications
108
+ withMappings:(YapDatabaseViewMappings *)mappings;
109
+
110
+ /**
111
+ * A simple YES/NO query to see if the view changed at all, inclusive of all groups.
112
+ **/
113
+ - (BOOL)hasChangesForNotifications:(NSArray *)notifications;
114
+
115
+ @end