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