!7 sclass Proposition { S text, module; long date = now(); [stdEq] } sclass ProposedVoiceOutput extends DynObjectTable { transient int expiryTime = 10000; void start { super.start(); itemToMap = func(Proposition p) -> Map { humanizeKeys(objectToMap(p)) }; doEvery(1000, r cleanList); } void addProposition(S text, S module) { syncRemove(data, objectWhere(data, +text, +module)); add(nu(Proposition, +text, +module)); } void cleanList { setField(data := objectsWhereFieldGreaterThan(cloneList(data), 'date, now()-expiryTime)); } }