motion-yapper 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -2
- data/.travis.yml +2 -0
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/motion-yapper.rb +1 -0
- data/lib/yapper.rb +3 -5
- data/lib/yapper/config.rb +2 -0
- data/lib/yapper/db.rb +105 -40
- data/lib/yapper/document.rb +7 -4
- data/lib/yapper/document/callbacks.rb +0 -7
- data/lib/yapper/document/{persistance.rb → persistence.rb} +27 -21
- data/lib/yapper/document/relation.rb +29 -22
- data/lib/yapper/document/selection.rb +122 -54
- data/lib/yapper/extensions.rb +12 -24
- data/lib/yapper/settings.rb +43 -0
- data/lib/yapper/timestamps.rb +2 -0
- data/lib/yapper/version.rb +1 -1
- data/{yapper.gemspec → motion-yapper.gemspec} +0 -0
- data/spec/integration/{where_spec.rb → criteria_spec.rb} +78 -10
- data/spec/integration/db_spec.rb +70 -0
- data/spec/integration/defaults_spec.rb +37 -0
- data/spec/integration/extensions_spec.rb +14 -0
- data/spec/integration/{persistance_spec.rb → persistence_spec.rb} +0 -0
- data/spec/integration/relation_spec.rb +4 -4
- data/vendor/Podfile.lock +9 -11
- data/vendor/Pods/.build/libPods-CocoaLumberjack.a +0 -0
- data/vendor/Pods/.build/libPods-NSData+MD5Digest.a +0 -0
- data/vendor/Pods/.build/libPods-YapDatabase.a +0 -0
- data/vendor/Pods/.build/libPods.a +0 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +4 -4
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +14 -14
- data/vendor/Pods/{CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.h → BuildHeaders/CocoaLumberjack/DDContextFilterLogFormatter.h} +6 -8
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +67 -32
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog+LOGV.h +99 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +98 -65
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDMultiFormatter.h +30 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +39 -25
- data/vendor/Pods/BuildHeaders/YapDatabase/NSDictionary+YapDatabase.h +8 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +1 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +3 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +4 -4
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +21 -19
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +1 -1
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +35 -31
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +8 -35
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -2
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +17 -17
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTypes.h +32 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +8 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +43 -21
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationship.h +35 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipConnection.h +29 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdge.h +163 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdgePrivate.h +79 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipNode.h +99 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipOptions.h +59 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipPrivate.h +125 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipTransaction.h +384 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +49 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +10 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetupPrivate.h +18 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +131 -21
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +48 -107
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +2 -2
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +1 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +17 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +10 -3
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +18 -1
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +75 -24
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTypes.h +99 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +4 -4
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +51 -50
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +14 -14
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +546 -546
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +67 -32
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +1093 -907
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog+LOGV.h +99 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +98 -65
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +873 -748
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +39 -25
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +1284 -1243
- data/vendor/Pods/{BuildHeaders/CocoaLumberjack/ContextFilterLogFormatter.h → CocoaLumberjack/Lumberjack/Extensions/DDContextFilterLogFormatter.h} +6 -8
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/{ContextFilterLogFormatter.m → DDContextFilterLogFormatter.m} +70 -70
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDDispatchQueueLogFormatter.m +253 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.h +30 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.m +127 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +1 -1
- data/vendor/Pods/CocoaLumberjack/README.markdown +52 -15
- data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +4 -4
- data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +14 -14
- data/vendor/Pods/Headers/CocoaLumberjack/{ContextFilterLogFormatter.h → DDContextFilterLogFormatter.h} +6 -8
- data/vendor/Pods/Headers/CocoaLumberjack/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
- data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +67 -32
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog+LOGV.h +99 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +98 -65
- data/vendor/Pods/Headers/CocoaLumberjack/DDMultiFormatter.h +30 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +39 -25
- data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +3 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +4 -4
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +21 -19
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +8 -35
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +17 -17
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTypes.h +32 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationship.h +35 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipConnection.h +29 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipEdge.h +163 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipNode.h +99 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipOptions.h +59 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipTransaction.h +384 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +49 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +131 -21
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +48 -107
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +2 -2
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +1 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +17 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +10 -3
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +75 -24
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTypes.h +99 -0
- data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +2 -0
- data/vendor/Pods/Headers/____Pods-environment.h +15 -15
- data/vendor/Pods/Manifest.lock +9 -11
- data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +1 -1
- data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +2 -0
- data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +1 -1
- data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +1 -1
- data/vendor/Pods/{Pods-Acknowledgements.markdown → Pods-acknowledgements.markdown} +0 -37
- data/vendor/Pods/{Pods-Acknowledgements.plist → Pods-acknowledgements.plist} +0 -45
- data/vendor/Pods/Pods-environment.h +15 -15
- data/vendor/Pods/Pods.xcconfig +3 -3
- data/vendor/Pods/Pods.xcodeproj/project.pbxproj +2426 -3155
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-CocoaLumberjack.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-NSData+MD5Digest.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-YapDatabase.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/xcschememanagement.plist +31 -0
- data/vendor/Pods/YapDatabase/README.md +3 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +0 -2
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +8 -35
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +25 -41
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +17 -17
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +403 -134
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTypes.h +32 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +8 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +8 -8
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +113 -62
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +35 -31
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +25 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +1 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +25 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipEdgePrivate.h +79 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipPrivate.h +125 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.h +35 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.m +129 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.h +29 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.m +802 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.h +163 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.m +408 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipNode.h +99 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.h +59 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.m +29 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.h +384 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.m +5254 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +10 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexSetupPrivate.h +18 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +49 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +12 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +9 -8
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +62 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +148 -45
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +18 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +2 -2
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +15 -9
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +17 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +211 -64
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +48 -107
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +10 -7
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +1 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +13 -22
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +10 -3
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +75 -24
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +725 -244
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTypes.h +99 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.h +8 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.m +19 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +1 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +12 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +1 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +3 -3
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +43 -21
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +4 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +3 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +5 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +4 -4
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +84 -93
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +21 -19
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +381 -209
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +131 -21
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +587 -267
- data/vendor/Pods/{Pods.bridgesupport → build-iPhoneSimulator/Pods.bridgesupport} +633 -2557
- data/vendor/Pods/build-iPhoneSimulator/libPods.a +0 -0
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +2 -1
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +2 -1
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +4 -2
- metadata +80 -108
- data/Gemfile.lock +0 -63
- data/lib/yapper/attachment.rb +0 -48
- data/lib/yapper/document/attachment.rb +0 -26
- data/lib/yapper/sync.rb +0 -134
- data/lib/yapper/sync/data.rb +0 -12
- data/lib/yapper/sync/event.rb +0 -194
- data/lib/yapper/sync/queue.rb +0 -164
- data/spec/integration/all_spec.rb +0 -40
- data/spec/integration/sync_spec.rb +0 -42
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +0 -641
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +0 -1396
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +0 -133
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +0 -327
- data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +0 -113
- data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +0 -321
- data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +0 -71
- data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +0 -150
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +0 -157
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +0 -43
- data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +0 -68
- data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +0 -143
- data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +0 -370
- data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +0 -848
- data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +0 -89
- data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +0 -167
- data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +0 -78
- data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +0 -191
- data/vendor/Pods/AFNetworking/LICENSE +0 -19
- data/vendor/Pods/AFNetworking/README.md +0 -208
- data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +0 -641
- data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +0 -133
- data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +0 -113
- data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +0 -71
- data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
- data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +0 -43
- data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +0 -68
- data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +0 -370
- data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +0 -89
- data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +0 -78
- data/vendor/Pods/BuildHeaders/Reachability/Reachability.h +0 -109
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.m +0 -251
- data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +0 -641
- data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +0 -133
- data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +0 -113
- data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +0 -71
- data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
- data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +0 -43
- data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +0 -68
- data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +0 -370
- data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +0 -89
- data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +0 -78
- data/vendor/Pods/Headers/Reachability/Reachability.h +0 -109
- data/vendor/Pods/Headers/YapDatabase/YapCache.h +0 -90
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnectionState.h +0 -29
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseDefaults.h +0 -37
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionPrivate.h +0 -440
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -19
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchPrivate.h +0 -69
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseLogging.h +0 -158
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseManager.h +0 -17
- data/vendor/Pods/Headers/YapDatabase/YapDatabasePrivate.h +0 -424
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +0 -73
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseStatement.h +0 -13
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseString.h +0 -121
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChangePrivate.h +0 -94
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappingsPrivate.h +0 -72
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPage.h +0 -36
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPageMetadata.h +0 -27
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPrivate.h +0 -153
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +0 -17
- data/vendor/Pods/Headers/YapDatabase/YapMemoryTable.h +0 -74
- data/vendor/Pods/Headers/YapDatabase/YapNull.h +0 -17
- data/vendor/Pods/Headers/YapDatabase/YapTouch.h +0 -15
- data/vendor/Pods/Headers/____Pods-AFNetworking-prefix.h +0 -17
- data/vendor/Pods/Headers/____Pods-Reachability-prefix.h +0 -5
- data/vendor/Pods/Pods-AFNetworking-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-AFNetworking-dummy.m +0 -5
- data/vendor/Pods/Pods-AFNetworking-prefix.pch +0 -17
- data/vendor/Pods/Pods-AFNetworking.xcconfig +0 -1
- data/vendor/Pods/Pods-Reachability-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-Reachability-dummy.m +0 -5
- data/vendor/Pods/Pods-Reachability-prefix.pch +0 -5
- data/vendor/Pods/Pods-Reachability.xcconfig +0 -1
- data/vendor/Pods/Reachability/LICENCE.txt +0 -24
- data/vendor/Pods/Reachability/README.md +0 -65
- data/vendor/Pods/Reachability/Reachability.h +0 -109
- data/vendor/Pods/Reachability/Reachability.m +0 -527
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
#import "YapDatabaseExtension.h"
|
|
4
|
+
|
|
5
|
+
#import "YapDatabaseRelationshipNode.h"
|
|
6
|
+
#import "YapDatabaseRelationshipEdge.h"
|
|
7
|
+
#import "YapDatabaseRelationshipOptions.h"
|
|
8
|
+
#import "YapDatabaseRelationshipConnection.h"
|
|
9
|
+
#import "YapDatabaseRelationshipTransaction.h"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Welcome to YapDatabase!
|
|
13
|
+
*
|
|
14
|
+
* The project page has a wealth of documentation if you have any questions.
|
|
15
|
+
* https://github.com/yaptv/YapDatabase
|
|
16
|
+
*
|
|
17
|
+
* If you're new to the project you may want to visit the wiki.
|
|
18
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
19
|
+
*
|
|
20
|
+
* The YapDatabaseRelationship extension allow you to create relationships between objects,
|
|
21
|
+
* and configure automatic deletion rules.
|
|
22
|
+
*
|
|
23
|
+
* For tons of information about this extension, see the wiki article:
|
|
24
|
+
* https://github.com/yaptv/YapDatabase/wiki/Relationships
|
|
25
|
+
**/
|
|
26
|
+
|
|
27
|
+
@interface YapDatabaseRelationship : YapDatabaseExtension
|
|
28
|
+
|
|
29
|
+
- (id)init;
|
|
30
|
+
|
|
31
|
+
- (id)initWithVersion:(int)version;
|
|
32
|
+
|
|
33
|
+
- (id)initWithVersion:(int)version options:(YapDatabaseRelationshipOptions *)options;
|
|
34
|
+
|
|
35
|
+
@end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import "YapDatabaseExtensionConnection.h"
|
|
3
|
+
|
|
4
|
+
@class YapDatabaseRelationship;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Welcome to YapDatabase!
|
|
8
|
+
*
|
|
9
|
+
* The project page has a wealth of documentation if you have any questions.
|
|
10
|
+
* https://github.com/yaptv/YapDatabase
|
|
11
|
+
*
|
|
12
|
+
* If you're new to the project you may want to visit the wiki.
|
|
13
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
14
|
+
*
|
|
15
|
+
* The YapDatabaseRelationship extension allow you to create relationships between objects,
|
|
16
|
+
* and configure automatic deletion rules.
|
|
17
|
+
*
|
|
18
|
+
* For tons of information about this extension, see the wiki article:
|
|
19
|
+
* https://github.com/yaptv/YapDatabase/wiki/Relationships
|
|
20
|
+
**/
|
|
21
|
+
|
|
22
|
+
@interface YapDatabaseRelationshipConnection : YapDatabaseExtensionConnection
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns the parent view instance.
|
|
26
|
+
**/
|
|
27
|
+
@property (nonatomic, strong, readonly) YapDatabaseRelationship *relationship;
|
|
28
|
+
|
|
29
|
+
@end
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Welcome to YapDatabase!
|
|
5
|
+
*
|
|
6
|
+
* The project page has a wealth of documentation if you have any questions.
|
|
7
|
+
* https://github.com/yaptv/YapDatabase
|
|
8
|
+
*
|
|
9
|
+
* If you're new to the project you may want to visit the wiki.
|
|
10
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
11
|
+
*
|
|
12
|
+
* The YapDatabaseRelationship extension allow you to create relationships between objects,
|
|
13
|
+
* and configure automatic deletion rules.
|
|
14
|
+
*
|
|
15
|
+
* For tons of information about this extension, see the wiki article:
|
|
16
|
+
* https://github.com/yaptv/YapDatabase/wiki/Relationships
|
|
17
|
+
**/
|
|
18
|
+
|
|
19
|
+
enum {
|
|
20
|
+
// notify only
|
|
21
|
+
YDB_NotifyIfSourceDeleted = 1 << 0,
|
|
22
|
+
YDB_NotifyIfDestinationDeleted = 1 << 1,
|
|
23
|
+
|
|
24
|
+
// one-to-one
|
|
25
|
+
YDB_DeleteSourceIfDestinationDeleted = 1 << 2,
|
|
26
|
+
YDB_DeleteDestinationIfSourceDeleted = 1 << 3,
|
|
27
|
+
|
|
28
|
+
// one-to-many & many-to-many
|
|
29
|
+
YDB_DeleteSourceIfAllDestinationsDeleted = 1 << 4,
|
|
30
|
+
YDB_DeleteDestinationIfAllSourcesDeleted = 1 << 5,
|
|
31
|
+
};
|
|
32
|
+
typedef uint16_t YDB_NodeDeleteRules;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@interface YapDatabaseRelationshipEdge : NSObject <NSCoding, NSCopying>
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Returns an edge with the given name, destination & nodeDeleteRules.
|
|
39
|
+
*
|
|
40
|
+
* This method is suitable for use with the YapDatabaseRelationshipNode protocol.
|
|
41
|
+
* When using this protocol, the source object is directly queried by the YapDatabaseRelationship extension.
|
|
42
|
+
* Thus the extension already knows what the source node is,
|
|
43
|
+
* and so the source node information (sourceKey & sourceCollection) doesn't need to be explicitly set on the edge.
|
|
44
|
+
*
|
|
45
|
+
* This method is not suitable for use with manual edge management.
|
|
46
|
+
* When manually adding an edge, you must fully specify the source node.
|
|
47
|
+
**/
|
|
48
|
+
+ (instancetype)edgeWithName:(NSString *)name
|
|
49
|
+
destinationKey:(NSString *)destinationKey
|
|
50
|
+
collection:(NSString *)destinationCollection
|
|
51
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Returns an edge with the given name, destinationFilePath & nodeDeleteRules.
|
|
55
|
+
*
|
|
56
|
+
* When using a destinationFilePath, only a subset of the nodeDeleteRules apply.
|
|
57
|
+
* Specifically only the following work:
|
|
58
|
+
* - YDB_DeleteDestinationIfSourceDeleted
|
|
59
|
+
* - YDB_DeleteDestinationIfAllSourcesDeleted
|
|
60
|
+
*
|
|
61
|
+
* This method is suitable for use with the YapDatabaseRelationshipNode protocol.
|
|
62
|
+
* When using this protocol, the source object is directly queried by the YapDatabaseRelationship extension.
|
|
63
|
+
* Thus the extension already knows what the source node is,
|
|
64
|
+
* and so the source node information (sourceKey & sourceCollection) doesn't need to be explicitly set on the edge.
|
|
65
|
+
*
|
|
66
|
+
* This method is not suitable for use with manual edge management.
|
|
67
|
+
* When directly adding an edge, you must fully specify the source node.
|
|
68
|
+
**/
|
|
69
|
+
+ (instancetype)edgeWithName:(NSString *)name
|
|
70
|
+
destinationFilePath:(NSString *)destinationFilePath
|
|
71
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Returns a fully specified edge.
|
|
75
|
+
*
|
|
76
|
+
* This method is suitable for use with manual edge management.
|
|
77
|
+
*
|
|
78
|
+
* If you're using the YapDatabaseRelationshipNode protocol, then you can use the shorter version of this method
|
|
79
|
+
* which doesn't specify the source node. This is because the source node is implied with the
|
|
80
|
+
* YapDatabaseRelationshipNode protocol, and thus doesn't need to be explicitly specified in the edge.
|
|
81
|
+
**/
|
|
82
|
+
+ (instancetype)edgeWithName:(NSString *)name
|
|
83
|
+
sourceKey:(NSString *)sourceKey
|
|
84
|
+
collection:(NSString *)sourceCollection
|
|
85
|
+
destinationKey:(NSString *)destinationKey
|
|
86
|
+
collection:(NSString *)destinationCollection
|
|
87
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Returns a fully specified edge.
|
|
91
|
+
*
|
|
92
|
+
* When using a destinationFilePath, only a subset of the nodeDeleteRules apply.
|
|
93
|
+
* Specifically only the following work:
|
|
94
|
+
* - YDB_DeleteDestinationIfSourceDeleted
|
|
95
|
+
* - YDB_DeleteDestinationIfAllSourcesDeleted
|
|
96
|
+
*
|
|
97
|
+
* This method is suitable for use with manual edge management.
|
|
98
|
+
*
|
|
99
|
+
* If you're using the YapDatabaseRelationshipNode protocol, then you can use the shorter version of this method
|
|
100
|
+
* which doesn't specify the source node. This is because the source node is implied with the
|
|
101
|
+
* YapDatabaseRelationshipNode protocol, and thus doesn't need to be explicitly specified in the edge.
|
|
102
|
+
**/
|
|
103
|
+
+ (instancetype)edgeWithName:(NSString *)name
|
|
104
|
+
sourceKey:(NSString *)sourceKey
|
|
105
|
+
collection:(NSString *)sourceCollection
|
|
106
|
+
destinationFilePath:(NSString *)destinationFilePath
|
|
107
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
108
|
+
|
|
109
|
+
#pragma mark Init
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* For documentation @see edgeWithName:destinationKey:collection:nodeDeleteRules:
|
|
113
|
+
**/
|
|
114
|
+
- (id)initWithName:(NSString *)name
|
|
115
|
+
destinationKey:(NSString *)key
|
|
116
|
+
collection:(NSString *)collection
|
|
117
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* For documentation @see edgeWithName:destinationFilePath:nodeDeleteRules:
|
|
121
|
+
**/
|
|
122
|
+
- (id)initWithName:(NSString *)name destinationFilePath:(NSString *)destinationFilePath
|
|
123
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* For documentation @see edgeWithName:sourceKey:collection:destinationKey:collection:nodeDeleteRules:
|
|
127
|
+
**/
|
|
128
|
+
- (id)initWithName:(NSString *)name
|
|
129
|
+
sourceKey:(NSString *)sourceKey
|
|
130
|
+
collection:(NSString *)sourceCollection
|
|
131
|
+
destinationKey:(NSString *)destinationKey
|
|
132
|
+
collection:(NSString *)destinationCollection
|
|
133
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* For documentation @see edgeWithName:sourceKey:collection:destinationFilePath:nodeDeleteRules:
|
|
137
|
+
**/
|
|
138
|
+
- (id)initWithName:(NSString *)name sourceKey:(NSString *)sourceKey
|
|
139
|
+
collection:(NSString *)sourceCollection
|
|
140
|
+
destinationFilePath:(NSString *)destinationFilePath
|
|
141
|
+
nodeDeleteRules:(YDB_NodeDeleteRules)rules;
|
|
142
|
+
|
|
143
|
+
#pragma mark Properties
|
|
144
|
+
|
|
145
|
+
@property (nonatomic, copy, readonly) NSString *name;
|
|
146
|
+
|
|
147
|
+
@property (nonatomic, copy, readonly) NSString *sourceKey;
|
|
148
|
+
@property (nonatomic, copy, readonly) NSString *sourceCollection;
|
|
149
|
+
|
|
150
|
+
@property (nonatomic, copy, readonly) NSString *destinationKey;
|
|
151
|
+
@property (nonatomic, copy, readonly) NSString *destinationCollection;
|
|
152
|
+
|
|
153
|
+
@property (nonatomic, copy, readonly) NSString *destinationFilePath;
|
|
154
|
+
|
|
155
|
+
@property (nonatomic, assign, readonly) YDB_NodeDeleteRules nodeDeleteRules;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* NO if the edge was created via the YapDatabaseRelationshipNode protocol.
|
|
159
|
+
* YES if the edge was created via "manual edge management" methods.
|
|
160
|
+
**/
|
|
161
|
+
@property (nonatomic, assign, readonly) BOOL isManualEdge;
|
|
162
|
+
|
|
163
|
+
@end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#import "YapDatabaseRelationshipEdge.h"
|
|
2
|
+
|
|
3
|
+
enum {
|
|
4
|
+
YDB_EdgeActionNone = 0,
|
|
5
|
+
YDB_EdgeActionInsert = 1,
|
|
6
|
+
YDB_EdgeActionUpdate = 2,
|
|
7
|
+
YDB_EdgeActionDelete = 3
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
enum {
|
|
11
|
+
YDB_FlagsNone = 0,
|
|
12
|
+
YDB_FlagsSourceDeleted = 1 << 0,
|
|
13
|
+
YDB_FlagsDestinationDeleted = 1 << 1,
|
|
14
|
+
YDB_FlagsBadSource = 1 << 2,
|
|
15
|
+
YDB_FlagsBadDestination = 1 << 3,
|
|
16
|
+
YDB_FlagsHasSourceRowid = 1 << 4, // If set, sourceRowid lookup not needed
|
|
17
|
+
YDB_FlagsHasDestinationRowid = 1 << 5, // If set, destinationRowid lookup not needed
|
|
18
|
+
YDB_FlagsHasEdgeRowid = 1 << 6,
|
|
19
|
+
YDB_FlagsNotInDatabase = 1 << 7,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@interface YapDatabaseRelationshipEdge () {
|
|
24
|
+
@public
|
|
25
|
+
|
|
26
|
+
// Public properties.
|
|
27
|
+
// Internal code should access these directly.
|
|
28
|
+
|
|
29
|
+
NSString *name;
|
|
30
|
+
|
|
31
|
+
NSString *sourceKey;
|
|
32
|
+
NSString *sourceCollection;
|
|
33
|
+
|
|
34
|
+
NSString *destinationKey;
|
|
35
|
+
NSString *destinationCollection;
|
|
36
|
+
|
|
37
|
+
NSString *destinationFilePath;
|
|
38
|
+
|
|
39
|
+
YDB_NodeDeleteRules nodeDeleteRules;
|
|
40
|
+
|
|
41
|
+
BOOL isManualEdge;
|
|
42
|
+
|
|
43
|
+
// Internal properties.
|
|
44
|
+
// Internal code must access these directly.
|
|
45
|
+
|
|
46
|
+
int64_t edgeRowid;
|
|
47
|
+
int64_t sourceRowid;
|
|
48
|
+
int64_t destinationRowid;
|
|
49
|
+
|
|
50
|
+
int edgeAction;
|
|
51
|
+
int flags;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Init directly from database row
|
|
55
|
+
- (id)initWithRowid:(int64_t)rowid
|
|
56
|
+
name:(NSString *)name
|
|
57
|
+
src:(int64_t)src
|
|
58
|
+
dst:(int64_t)dst
|
|
59
|
+
dstFilePath:(NSString *)dstFilePath
|
|
60
|
+
rules:(int)rules
|
|
61
|
+
manual:(BOOL)isManual;
|
|
62
|
+
|
|
63
|
+
// Copy for YapDatabaseRelationshipNode protocol
|
|
64
|
+
- (id)copyWithSourceKey:(NSString *)newSrcKey collection:(NSString *)newSrcCollection rowid:(int64_t)newSrcRowid;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Compares two manual edges to see if they represent the same relationship.
|
|
68
|
+
* That is, if both edges are manual edges, and the following are equal:
|
|
69
|
+
*
|
|
70
|
+
* - name
|
|
71
|
+
* - sourceKey / sourceCollection
|
|
72
|
+
* - destinationKey / destinationCollection
|
|
73
|
+
* - destinationFilePath
|
|
74
|
+
*
|
|
75
|
+
* The nodeDeleteRules do NOT need to match.
|
|
76
|
+
**/
|
|
77
|
+
- (BOOL)matchesManualEdge:(YapDatabaseRelationshipEdge *)edge;
|
|
78
|
+
|
|
79
|
+
@end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import "YapDatabaseRelationshipEdge.h"
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Welcome to YapDatabase!
|
|
6
|
+
*
|
|
7
|
+
* The project page has a wealth of documentation if you have any questions.
|
|
8
|
+
* https://github.com/yaptv/YapDatabase
|
|
9
|
+
*
|
|
10
|
+
* If you're new to the project you may want to visit the wiki.
|
|
11
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
12
|
+
*
|
|
13
|
+
* The YapDatabaseRelationship extension allow you to create relationships between objects,
|
|
14
|
+
* and configure automatic deletion rules.
|
|
15
|
+
*
|
|
16
|
+
* For tons of information about this extension, see the wiki article:
|
|
17
|
+
* https://github.com/yaptv/YapDatabase/wiki/Relationships
|
|
18
|
+
**/
|
|
19
|
+
|
|
20
|
+
typedef enum {
|
|
21
|
+
YDB_SourceNodeDeleted,
|
|
22
|
+
YDB_DestinationNodeDeleted,
|
|
23
|
+
} YDB_NotifyReason;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* There are 2 techniques you may use to add edges to the relationship graph:
|
|
28
|
+
*
|
|
29
|
+
* - Use the YapDatabaseRelationshipNode protocol
|
|
30
|
+
* - Manually manage the edges by adding / removing them yourself
|
|
31
|
+
*
|
|
32
|
+
* You are welcome to use either technique. In fact you can use them both simultaneously.
|
|
33
|
+
* Which you choose may simply be whichever works best depending on the situation.
|
|
34
|
+
*
|
|
35
|
+
* The YapDatabaseRelationshipNode protocol works quite simply:
|
|
36
|
+
*
|
|
37
|
+
* Any object that is stored in the database may optionally implement this protocol in order to
|
|
38
|
+
* specify a list of relationships that apply to it. The object just needs to:
|
|
39
|
+
* 1.) Add the YapDatabaseRelationshipNode protocol to its declared list of protocols (in header file)
|
|
40
|
+
* 2.) Implement the yapDatabaseRelationshipEdges method
|
|
41
|
+
*
|
|
42
|
+
* When the object is inserted or updated in the database, the YapDatabaseRelationshipExtension will automatically
|
|
43
|
+
* invoke the yapDatabaseRelationshipEdges method to get the list of edges. It then inserts the list of edges
|
|
44
|
+
* into the database (if object was inserted), or updates the previously inserted list (if object was updated).
|
|
45
|
+
*
|
|
46
|
+
* Typically this protocol is convenient to use if:
|
|
47
|
+
* - Your objects already contain identifiers that can be used to create the edges you desire
|
|
48
|
+
* - You'd like to be able to delete objects in the database by simply setting identifier properties to nil
|
|
49
|
+
*
|
|
50
|
+
* @see YapDatabaseRelationshipEdge
|
|
51
|
+
**/
|
|
52
|
+
@protocol YapDatabaseRelationshipNode <NSObject>
|
|
53
|
+
@required
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Implement this method in order to return the edges that start from this node.
|
|
57
|
+
* Note that although edges are directional, the associated rules are bidirectional.
|
|
58
|
+
*
|
|
59
|
+
* In terms of edge direction, this object is the "source" of the edge.
|
|
60
|
+
* And the object at the other end of the edge is called the "destination".
|
|
61
|
+
*
|
|
62
|
+
* Every edge also has a name (which can be any string you specify), and a bidirectional rule.
|
|
63
|
+
* For example, you could specify either of the following:
|
|
64
|
+
* - delete the destination if I am deleted
|
|
65
|
+
* - delete me if the destination is deleted
|
|
66
|
+
*
|
|
67
|
+
* In fact, you could specify both of those rules simultaneously for a single edge.
|
|
68
|
+
* And there are similar rules if your graph is one-to-many for this node.
|
|
69
|
+
*
|
|
70
|
+
* Thus it is unnecessary to duplicate the edge on the destination node.
|
|
71
|
+
* So you can pick which node you'd like to create the edge(s) from.
|
|
72
|
+
* Either side is fine, just pick whichever is easier, or whichever makes more sense for your data model.
|
|
73
|
+
*
|
|
74
|
+
* YapDatabaseRelationship supports one-to-one, one-to-many, and even many-to-many relationships.
|
|
75
|
+
*
|
|
76
|
+
* Important: This method will not be invoked unless the object implements the protocol.
|
|
77
|
+
* That is, the object's class declaration must have YapDatabaseRelationshipNode in its listed protocols.
|
|
78
|
+
*
|
|
79
|
+
* @interface MyObject : NSObject <YapDatabaseRelationshipNode> // <-- Must be in protocol list
|
|
80
|
+
*
|
|
81
|
+
* @see YapDatabaseRelationshipEdge
|
|
82
|
+
**/
|
|
83
|
+
- (NSArray *)yapDatabaseRelationshipEdges;
|
|
84
|
+
|
|
85
|
+
@optional
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* If an edge is deleted due to one of two associated nodes being deleted,
|
|
89
|
+
* and the edge has a notify rule associated with it (YDB_NotifyIfSourceDeleted or YDB_NotifyIfDestinationDeleted),
|
|
90
|
+
* then this method may be invoked on the remaining node.
|
|
91
|
+
*
|
|
92
|
+
* It doesn't matter which side created the edge (the source or destination side).
|
|
93
|
+
* If the rule exists, and the remaining side implements this particular
|
|
94
|
+
**/
|
|
95
|
+
- (id)yapDatabaseRelationshipEdgeDeleted:(YapDatabaseRelationshipEdge *)edge withReason:(YDB_NotifyReason)reason;
|
|
96
|
+
|
|
97
|
+
@end
|
|
98
|
+
|
|
99
|
+
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Welcome to YapDatabase!
|
|
5
|
+
*
|
|
6
|
+
* The project page has a wealth of documentation if you have any questions.
|
|
7
|
+
* https://github.com/yaptv/YapDatabase
|
|
8
|
+
*
|
|
9
|
+
* If you're new to the project you may want to visit the wiki.
|
|
10
|
+
* https://github.com/yaptv/YapDatabase/wiki
|
|
11
|
+
*
|
|
12
|
+
* The YapDatabaseRelationship extension allow you to create relationships between objects,
|
|
13
|
+
* and configure automatic deletion rules.
|
|
14
|
+
*
|
|
15
|
+
* For tons of information about this extension, see the wiki article:
|
|
16
|
+
* https://github.com/yaptv/YapDatabase/wiki/Relationships
|
|
17
|
+
**/
|
|
18
|
+
|
|
19
|
+
@interface YapDatabaseRelationshipOptions : NSObject <NSCopying>
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* You can optionally completely disable the YapDatabaseRelationshipProtocol.
|
|
23
|
+
*
|
|
24
|
+
* If you don't use it at all (i.e. you manually manage all graph edges),
|
|
25
|
+
* then disabling the protocol, and its related processing, can reduce overhead.
|
|
26
|
+
*
|
|
27
|
+
* The default value is NO.
|
|
28
|
+
**/
|
|
29
|
+
@property (nonatomic, assign, readwrite) BOOL disableYapDatabaseRelationshipNodeProtocol;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* You can configure the extension to pre-filter all but a subset of collections.
|
|
33
|
+
*
|
|
34
|
+
* The primary motivation for this is to reduce the overhead when populating the graph.
|
|
35
|
+
* That is, when you first create the relationship extension, it will automatically enumerate all objects
|
|
36
|
+
* in the database and check to see if any of them implement the YapDatabaseRelationshipNode protocol.
|
|
37
|
+
* If there is only a single collection which includes objects implementing the YapDatabaseRelationshipNode protoco,
|
|
38
|
+
* then you could specify that collection here. So when the extension first populates itself,
|
|
39
|
+
* it will enumerate over just the allowedCollections, as opposed to enumerating over all collections.
|
|
40
|
+
* And enumerating a small subset of the entire database during graph population can improve speed,
|
|
41
|
+
* especially with larger databases.
|
|
42
|
+
*
|
|
43
|
+
* In addition to reducing the overhead when first populating the graph,
|
|
44
|
+
* the allowedCollections will pre-filter while you're making changes to the database.
|
|
45
|
+
* So if you add a new object to the database, and the associated collection isn't in allowedCollections,
|
|
46
|
+
* then the extension will skip any associated processing that would normally occur. (Things like checking to see
|
|
47
|
+
* if the object implements the YapDatabaseRelationshipNode protocol, and checking to see if there were previously
|
|
48
|
+
* any associated protocol edges for the object.)
|
|
49
|
+
*
|
|
50
|
+
* For all rows whose collection is in the allowedCollections, the extension works normally.
|
|
51
|
+
*
|
|
52
|
+
* Note: If you disable the YapDatabaseRelationshipNode protocol, then this configuration option is ignored
|
|
53
|
+
* because it already skips all associated processing.
|
|
54
|
+
*
|
|
55
|
+
* The default value is nil.
|
|
56
|
+
**/
|
|
57
|
+
@property (nonatomic, copy, readwrite) NSSet *allowedCollections;
|
|
58
|
+
|
|
59
|
+
@end
|