PersistentObject class
class PersistentObject extends BasePersistentObject{ ObjectId get id => map['_id']; DbRef get dbRef => new DbRef(this.collectionName,this.id); set id (ObjectId value) => map['_id'] = value; void _initMap() { map["_id"] = null; super._initMap(); } bool _fetchedFromDb = false; bool get isFetched => _fetchedFromDb; void markAsFetched() { _fetchedFromDb = true; } Future remove() { return objectory.remove(this); } Future save() { return objectory.save(this); } Future getMeFromDb() { return objectory[objectory.getClassTypeByCollection(this.collectionName)].findOne(where.id(this.id)); } Future reRead() { return getMeFromDb() .then((PersistentObject fromDb) { if (fromDb != null) { this.map = fromDb.map; } }); } void setProperty(String property, value){ super.setProperty(property,value); if (saveOnUpdate) { save(); } } Future<PersistentObject> fetch() { if (this.isFetched) { return new Future.value(this); } else { return objectory[this.runtimeType].findOne(where.id(id)); } } }
Extends
BasePersistentObject > PersistentObject
Properties
final String collectionName #
inherited from BasePersistentObject
Name of MongoDB collection where instance of this class would be persistet in DB. By default equals to class name, but may be overwritten
String get collectionName => runtimeType.toString();
final Set<String> dirtyFields #
inherited from BasePersistentObject
Set<String> get dirtyFields => _dirtyFields;
Map map #
inherited from BasePersistentObject
Map get map => _map;
set map(Map newValue) { _setMap(newValue); }
Methods
void clearDirtyStatus() #
inherited from BasePersistentObject
void clearDirtyStatus() { _dirtyFields.clear(); }
Future<PersistentObject> fetch() #
Future<PersistentObject> fetch() { if (this.isFetched) { return new Future.value(this); } else { return objectory[this.runtimeType].findOne(where.id(id)); } }
Future<PersistentObject> fetchLinks() #
inherited from BasePersistentObject
Future<PersistentObject> fetchLinks(){ var dbRefs = new List<DbRef>(); getDbRefsFromMap(map, dbRefs); var objects = dbRefs.map((each) => objectory.dbRef2Object(each)); return Future.forEach(objects,(each) => each.fetch()).then((_)=>new Future.value(this)); }
dynamic getDbRefsFromList(List list, List result) #
inherited from BasePersistentObject
getDbRefsFromList(List list, List result){ for (var each in list) { if (each is DbRef) { result.add(each); } if (each is Map) { getDbRefsFromMap(each, result); } if (each is List) { getDbRefsFromList(each, result); } } }
dynamic getDbRefsFromMap(Map map, List result) #
inherited from BasePersistentObject
getDbRefsFromMap(Map map, List result){ for(var each in map.values){ if (each is DbRef) { result.add(each); } if (each is Map) { getDbRefsFromMap(each, result); } if (each is List) { getDbRefsFromList(each, result); } } }
EmbeddedPersistentObject getEmbeddedObject(Type classType, String property) #
inherited from BasePersistentObject
EmbeddedPersistentObject getEmbeddedObject(Type classType, String property) { EmbeddedPersistentObject result = _compoundProperties[property]; if (result == null) { result = objectory.newInstance(classType); result._setMap(map[property]); map[property] = result.map; result._parent = this; result._pathToMe = property; } return result; }
PersistentObject getLinkedObject(String property) #
inherited from BasePersistentObject
PersistentObject getLinkedObject(String property) { DbRef dbRef = map[property]; if (dbRef == null) { return null; } Type classType = objectory.getClassTypeByCollection(dbRef.collection); return objectory.findInCacheOrGetProxy(dbRef.id,classType); }
Future getMeFromDb() #
Future getMeFromDb() { return objectory[objectory.getClassTypeByCollection(this.collectionName)].findOne(where.id(this.id)); }
PersistentList getPersistentList(Type classType, String property) #
inherited from BasePersistentObject
PersistentList getPersistentList(Type classType, String property) { PersistentList result = _compoundProperties[property]; if (result == null) { result = new PersistentList(this,classType,property); _compoundProperties[property] = result; } return result; }
dynamic getProperty(String property) #
inherited from BasePersistentObject
dynamic getProperty(String property){ return this.map[property]; }
void markAsFetched() #
void markAsFetched() { _fetchedFromDb = true; }
void onValueChanging(String fieldName, newValue) #
inherited from BasePersistentObject
void onValueChanging(String fieldName, newValue) { setDirty(fieldName); }
Future reRead() #
Future reRead() { return getMeFromDb() .then((PersistentObject fromDb) { if (fromDb != null) { this.map = fromDb.map; } }); }
void setDirty(String fieldName) #
inherited from BasePersistentObject
void setDirty(String fieldName) { if (_dirtyFields == null){ return; } _dirtyFields.add(fieldName); }
dynamic setLinkedObject(String property, PersistentObject value) #
inherited from BasePersistentObject
setLinkedObject(String property, PersistentObject value) { if (value == null) { map[property] = null; } else { if (value.id == null) { throw new Exception('Attemt to set link to unsaved object: $value'); } onValueChanging(property, value.dbRef); map[property] = value.dbRef; } }
void setProperty(String property, value) #
void setProperty(String property, value){ super.setProperty(property,value); if (saveOnUpdate) { save(); } }
String toString() #
inherited from BasePersistentObject
Returns a string representation of this object.
docs inherited from Object
String toString()=>"$collectionName($map)";