!7

concept RUM {
  S context;
  S ruleID;
  SS varMap;
}

cmodule RecentlyUsedMappings > DynCRUD<RUM> {
  start {
    dbIndexing(RUM, 'context);
  }
  
  // API
  
  L<SS> getRecentlyUsedMappings(S context, S ruleID) {
    ret collect varMap(conceptsWhere RUM(+context, +ruleID));
  }
  
  void storeRecentlyUsedMapping(S context, S ruleID, SS varMap) {
    uniq_sync RUM(+context, +ruleID, varMap := asCIMap(varMap));
  }
  
  bool hasRecentlyUsedMapping(S context, S ruleID, SS varMap) {
    ret findConceptWhere RUM(+context, +ruleID, varMap := asCIMap(varMap)) != null;
  }
}