Dart Documentationpersistent_objectPersistentObject

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 DbRef dbRef #

DbRef get dbRef => new DbRef(this.collectionName,this.id);

final Set<String> dirtyFields #

inherited from BasePersistentObject
Set<String> get dirtyFields => _dirtyFields;

ObjectId id #

ObjectId get id => map['_id'];
set id (ObjectId value) => map['_id'] = value;

final bool isFetched #

bool get isFetched => _fetchedFromDb;

Map map #

inherited from BasePersistentObject
Map get map => _map;
set map(Map newValue) {
 _setMap(newValue);
}

bool saveOnUpdate #

inherited from BasePersistentObject
bool saveOnUpdate = false

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));
 }
}
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 init() #

inherited from BasePersistentObject
void init(){}

dynamic isDirty() #

inherited from BasePersistentObject
isDirty() {
 return !_dirtyFields.isEmpty;
}

void markAsFetched() #

void markAsFetched() { 
 _fetchedFromDb = true;
}

void onValueChanging(String fieldName, newValue) #

inherited from BasePersistentObject
void onValueChanging(String fieldName, newValue) {
 setDirty(fieldName);
}

Future remove() #

Future remove() {
 return objectory.remove(this);
}

Future reRead() #

Future reRead() {
 return getMeFromDb()
   .then((PersistentObject fromDb) {
     if (fromDb != null) {
       this.map = fromDb.map;
     }  
   });
}

Future save() #

Future save() {
 return objectory.save(this);
}

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)";