FEMMapping.h 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // For License please refer to LICENSE file in the root of FastEasyMapping project
  2. #import <Foundation/Foundation.h>
  3. #import "FEMAttribute.h"
  4. #import "FEMRelationship.h"
  5. @interface FEMMapping : NSObject {
  6. @protected
  7. NSMutableDictionary *_attributeMap;
  8. NSMutableDictionary *_relationshipMap;
  9. }
  10. - (nonnull instancetype)init __attribute__((unavailable("use -[FEMMapping initWithObjectClass:] or -[FEMMapping initWithEntityName:] insted")));
  11. + (nonnull instancetype)new __attribute__((unavailable("use -[FEMMapping initWithObjectClass:] or -[FEMMapping initWithEntityName:] insted")));
  12. - (nonnull instancetype)initWithRootPath:(nullable NSString *)rootPath __attribute__((unavailable("use -[FEMMapping initWithObjectClass:] or -[FEMMapping initWithEntityName:] insted")));
  13. - (nonnull instancetype)initWithObjectClass:(nonnull Class)objectClass NS_DESIGNATED_INITIALIZER;
  14. - (nonnull instancetype)initWithObjectClass:(nonnull Class)objectClass rootPath:(nullable NSString *)rootPath;
  15. - (nonnull instancetype)initWithEntityName:(nonnull NSString *)entityName NS_DESIGNATED_INITIALIZER;
  16. - (nonnull instancetype)initWithEntityName:(nonnull NSString *)entityName rootPath:(nullable NSString *)rootPath;
  17. @property (nonatomic, readonly, nullable) Class objectClass;
  18. @property (nonatomic, copy, readonly, nullable) NSString *entityName;
  19. @property (nonatomic, copy, nullable) NSString *rootPath;
  20. @property (nonatomic, copy, nullable) NSString *primaryKey;
  21. @property (nonatomic, strong, readonly, nullable) FEMAttribute *primaryKeyAttribute;
  22. @property (nonatomic, strong, readonly, nonnull) NSArray *attributes;
  23. - (void)addAttribute:(nonnull FEMAttribute *)attribute;
  24. - (nullable FEMAttribute *)attributeForProperty:(nonnull NSString *)property;
  25. @property (nonatomic, strong, readonly, nonnull) NSArray *relationships;
  26. - (void)addRelationship:(nonnull FEMRelationship *)relationship;
  27. - (nullable FEMRelationship *)relationshipForProperty:(nonnull NSString *)property;
  28. @end
  29. @interface FEMMapping (Shortcut)
  30. - (void)addAttributesFromArray:(nonnull NSArray *)attributes;
  31. - (void)addAttributesFromDictionary:(nonnull NSDictionary *)attributesToKeyPath;
  32. - (void)addAttributeWithProperty:(nonnull NSString *)property keyPath:(nullable NSString *)keyPath;
  33. - (void)addRelationshipMapping:(nonnull FEMMapping *)mapping forProperty:(nonnull NSString *)property keyPath:(nullable NSString *)keyPath;
  34. - (void)addToManyRelationshipMapping:(nonnull FEMMapping *)mapping forProperty:(nonnull NSString *)property keyPath:(nullable NSString *)keyPath;
  35. @end
  36. @interface FEMMapping (FEMObjectMapping_Deprecated)
  37. + (nonnull FEMMapping *)mappingForClass:(nonnull Class)objectClass configuration:(nonnull void (^)(FEMMapping * __nonnull mapping))configuration __attribute__((deprecated("Use -[FEMMapping initWithObjectClass:] instead")));
  38. + (nonnull FEMMapping *)mappingForClass:(nonnull Class)objectClass rootPath:(nullable NSString *)rootPath configuration:(nonnull void (^)(FEMMapping * __nonnull mapping))configuration __attribute__((deprecated("Use -[FEMMapping initWithObjectClass:rootPath:] instead")));
  39. @end
  40. @interface FEMMapping (FEMManagedObjectMapping_Deprecated)
  41. + (nonnull FEMMapping *)mappingForEntityName:(nonnull NSString *)entityName __attribute__((deprecated("Use -[FEMMapping initWithEntityName:] instead")));
  42. + (nonnull FEMMapping *)mappingForEntityName:(nonnull NSString *)entityName configuration:(nullable void (^)(FEMMapping * __nonnull sender))configuration __attribute__((deprecated("Use -[FEMMapping initWithEntityName:] instead")));
  43. + (nonnull FEMMapping *)mappingForEntityName:(nonnull NSString *)entityName rootPath:(nullable NSString *)rootPath configuration:(nullable void (^)(FEMMapping * __nonnull sender))configuration __attribute__((deprecated("Use -[FEMMapping initWithEntityName:rootPath:] instead")));
  44. @end